• gym102219


    看到同学吃鸡了就vp康康。

    被两道dp搞死了,两个没什么人过的题都没看,估计也不会。

    那么为什么别人AK了呢。。。

    手速还是凑合的。。。音游狗(错乱)

    E就是个背包记录一下方案,暴力比较字典序即可。

     1 #include <bits/stdc++.h>
     2 #define pii pair<int,int>
     3 #define mk(a,b) make_pair(a,b)
     4 #define rep(jiantongyingtxdy) for(int i=1;i<=jiantongyingtxdy;i++)
     5 using namespace std;
     6 typedef long long ll;
     7 const int N = 3e5+5;
     8 int t,n;int a[105],dp[4396];
     9 vector<int> pre[4396];
    10 int main(){
    11     ios::sync_with_stdio(false);
    12     while (cin>>t){
    13         if(t==0)return 0;
    14         memset(dp,0, sizeof(dp));
    15         memset(pre,0, sizeof(pre));
    16         cin>>n;
    17         for(int i=1;i<=n;i++)cin>>a[i];
    18         for(int i=1;i<=n;i++){
    19             for(int j=t;j>=a[i];j--){
    20                 if(dp[j]<dp[j-a[i]]+a[i]){
    21                     dp[j]=dp[j-a[i]]+a[i];
    22                     pre[j]=pre[j-a[i]];
    23                     pre[j].push_back(i);
    24                 }else if(dp[j]==dp[j-a[i]]+a[i]){//比较pre[j-a[i]] 和pre[j]
    25                     int f=1;
    26                     for(int k=0;k<min(pre[j].size(),pre[j-a[i]].size());k++){
    27                         if(pre[j][k]<pre[j-a[i]][k]){
    28                             f=0;
    29                             break;
    30                         }else if(pre[j][k]>pre[j-a[i]][k]){
    31                             f=2;
    32                             break;
    33                         }
    34                     }
    35                     if(f==2){
    36                         pre[j]=pre[j-a[i]];
    37                         pre[j].push_back(i);
    38                     }
    39                 }
    40             }
    41         }
    42 //        for(int i=10;i>=1;i--){
    43 //            for(auto x:pre[i]){
    44 //                cout<<x<<' ';
    45 //            }
    46 //            cout<<endl;
    47 //        }
    48         int ans = *max_element(dp+1,dp+1+t);
    49         for(auto x:pre[ans]){
    50             cout<<a[x]<<' ';
    51         }
    52         cout<<ans<<endl;
    53 //        int ppp=ans;
    54 //        for(int i=n;i>=1;i--){
    55 //            if(dp[ans]==dp[ans-a[i]]+a[i]){
    56 //                cout<<a[i]<<' ';
    57 //                ans-=a[i];
    58 //            }
    59 //        }
    60 //        cout<<ppp<<endl;
    61     }
    62 }
    View Code

    F 我们看到e很小,考虑状压,好像没睡午觉脑子很混乱,两行代码改来改去好久。。

    #include <bits/stdc++.h>
    #define pii pair<int,int>
    #define mk(a,b) make_pair(a,b)
    #define rep(jiantongyingtxdy) for(int i=1;i<=jiantongyingtxdy;i++)
    using namespace std;
    typedef long long ll;
    const int N = 3e5+5;
    const ll MOD = 1e9+7;
    int n,e,k;
    ll dp[2005][4396];
    set<pii>st;
    int main(){
        ios::sync_with_stdio(false);
        cin>>n>>e>>k;int x,y;
        while (k--){
            cin>>x>>y;
            st.insert(mk(x,y));
        }
        dp[0][0]=1;
        int p = 2*e+1,mod=1<<p;
        for(int i=1;i<=n;i++){
            for(int j=0;j<mod;j++){//i-1
                for(int k=0;k<p;k++){//拿第i+k-e个
                    if(i+k-e>n||i+k-e<=0)continue;
                    if(st.count(mk(i,i+k-e)))continue;
                    int b = j>>1;//i
                    if(b&(1<<k))continue;
                    dp[i][b|(1<<k)]+=dp[i-1][j];
                    dp[i][b|(1<<k)]%=MOD;
                }
            }
        }
        ll ans=0;
        for(int i=0;i<mod;i++){
            ans+=dp[n][i];
            ans%=MOD;
        }
        cout<<ans<<endl;
    }
    View Code

    然后就挂机打cf了。。。好气啊E题再给我10秒钟我就改完了。。搜了个单调队列的板子MLE了、、、然后没优化完就gg了。。。早知道不看F了。。。。

    话说闵可夫斯基和 这几个性质我好像也都知道,,怎么就完全不会呢。。。

    是个人都紫了。我还是退役吧。CGR4肯定又要掉100多。(

  • 相关阅读:
    配置apache+php环境详解
    美剧推荐之《行尸走肉》
    代码轻松实现wordpress彩色标签云
    php配置支持mysql解决本地安装wordpress问题
    struts2通配符和动态方法调用
    struts2文件上传1
    struts2入门
    jQuery3
    ADT20安装报错
    Android入门
  • 原文地址:https://www.cnblogs.com/MXang/p/11204626.html
Copyright © 2020-2023  润新知