zoukankan      html  css  js  c++  java
  • Codeforces Round #531 (Div. 3)

    A:瞎猜。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main(){
     4     ios::sync_with_stdio(false);
     5     int n;
     6     cin>>n;
     7     if(n%4==0||n%4==3){
     8         cout<<0<<endl;
     9     } else{
    10         cout<<1<<endl;
    11     }
    12 }
    View Code

    B:随便搞

    #include <bits/stdc++.h>
    using namespace std;
    int n,k;
    int a[6666],ans[6666];
    set<int>s[6666];
    void cloro(int id,int clo){
        while (s[a[id]].count(clo)){
            clo++;
            if(clo==k+1){
                clo=1;
            }
        }
        ans[id]=clo;
        s[a[id]].insert(clo);
    }
    int main() {
        ios::sync_with_stdio(false);
        cin>>n>>k;
        for(int i=1;i<=n;i++)
            cin>>a[i];
        int now = 1;
        bool flag = false;
        for(int i=1;i<=n;i++){
            if(s[a[i]].size()==k){
                cout<<"NO"<<endl;
                exit(0);
            }
            cloro(i,now);
            now++;
            if(now==k+1) {
                now = 1;
                flag = true;
            }
        }
        if(!flag&&now<k){
            cout<<"NO"<<endl;
            exit(0);
        }
        cout<<"YES"<<endl;
        for(int i=1;i<=n;i++)
            cout<<ans[i]<<' ';
    }
    View Code

    C:傻逼题

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int n,x,y,a[105];
     4 int dp[100005];
     5 set<int> s;
     6 int main() {
     7     ios::sync_with_stdio(false);
     8     cin>>n>>x>>y;
     9     for(int i=1;i<=n;i++)
    10         cin>>a[i];
    11     if(x>y){
    12         cout<<n<<endl;
    13     } else if(x<=y){
    14         int num = 0;
    15         for(int i=1;i<=n;i++){
    16             if(a[i]<=x){
    17                 num++;
    18             }
    19         }
    20         int ans = 0;
    21         while (num>0){
    22             ans++;
    23             num-=2;
    24         }
    25         cout<<ans<<endl;
    26     }
    27 }
    View Code

    D:贪心的 六种变换随便搞

    我写的应该是有问题的,但是ppt了就不想改了,估计会掉。

    upd 1/10 15:20  hhhh果然掉了  但是是我自己傻屌写错了,思路没有问题。 代码已更新

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 string s;int n;
     4 int a[3];
     5 void slove(int c01,int c02,int c10,int c12,int c20,int c21){
     6     for(int i=n-1;i>=0;i--){
     7         if(s[i]=='0'){
     8             if(c02) {
     9                 s[i] = '2';
    10                 c02--;
    11             }
    12             else if(c01) {
    13                 s[i] = '1';
    14                 c01--;
    15             }
    16 
    17         } else if(s[i]=='1'){
    18             if(c12){
    19                 c12--;
    20                 s[i]='2';
    21             }
    22         }
    23     }
    24     for(int i=0;i<n;i++){
    25         if(s[i]=='2'){
    26             if(c20){
    27                 c20--;
    28                 s[i]='0';
    29             } else if(c21){
    30                 c21--;
    31                 s[i]='1';
    32             }
    33         } else if(s[i]=='1'){
    34             if(c10){
    35                 s[i]='0';
    36                 c10--;
    37             }
    38         }
    39     }
    40 }
    41 int main() {
    42     ios::sync_with_stdio(false);
    43     cin>>n>>s;
    44     for(int i=0;i<n;i++){
    45         a[s[i]-'0']++;
    46     }
    47     int c01=0,c02=0,c10=0,c12=0,c20=0,c21=0;
    48     if(a[0]>n/3){
    49         if(a[1]>n/3){
    50             c02=a[0]-n/3;
    51             c12=a[1]-n/3;
    52         } else{
    53             if(a[2]>n/3) {
    54                 c21 = a[2] - n / 3;
    55                 c01 = a[0]-n/3;
    56             }
    57             else {
    58                 c02 = n / 3 - a[2];
    59                 c01=n/3-a[1];
    60             }
    61         }
    62     } else if(a[1]>n/3){
    63         if(a[2]>n/3){
    64             c10=a[1]-n/3;
    65             c20=a[2]-n/3;
    66         } else{
    67             c10=n/3-a[0];
    68             c12=n/3-a[2];
    69         }
    70     } else if(a[2]>n/3){
    71         c20=n/3-a[0];
    72         c21=n/3-a[1];
    73     }
    74     slove(c01,c02,c10,c12,c20,c21);
    75     cout<<s<<endl;
    76 }
    View Code

    E:每个数都可以确定一个区间,然后我们求不确定的区间的长度,答案就是 1<<(len-1)

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const ll mod = 998244353;
     5 int n;int a[200005];
     6 ll qpow(ll a,ll x){
     7     ll res = 1;
     8     while (x){
     9         if(x&1)
    10             res=(res*a)%mod;
    11         a=(a*a)%mod;
    12         x/=2;
    13     }
    14     return res;
    15 }
    16 map<int,int> m;
    17 vector<int> v [200005];
    18 int pre[200005];
    19 int main() {
    20     ios::sync_with_stdio(false);
    21     cin>>n;
    22     int id = 1;
    23     for(int i=1;i<=n;i++) {
    24         cin >> a[i];
    25         if(m.count(a[i])){
    26             v[m[a[i]]].push_back(i);
    27         } else{
    28             m[a[i]]=id;
    29             v[id].push_back(i);
    30             id++;
    31         }
    32     }
    33     for(int i=1;i<id;i++){
    34         pre[v[i][0]]++;
    35         pre[v[i][v[i].size()-1]]--;
    36     }
    37     ll cnt = 0;
    38     for(int i=1;i<=n;i++){
    39         pre[i]+=pre[i-1];
    40         if(pre[i]==0)
    41             cnt++;
    42     }
    43     cout<<qpow(2,cnt-1)<<endl;
    44 }
    View Code

    F:状压dp。 数据范围很明显了。。 先预处理出来任意两行相邻的时候对答案的贡献,以及任意两行做头尾(就是第一行和最后一行)的贡献,然后dp,dp的时候枚举第一行是啥。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int a[18][10005],n,m;
     4 int b[18][18],c[17][18],ans;
     5 int f[1<<16][16];
     6 int slove(int id){
     7     for(int i=0;i<(1<<n);i++)
     8         for(int j=0;j<n;j++)
     9             f[i][j]=0;
    10     f[1<<id][id]=1e9;
    11     for(int i=0;i<(1<<n);i++){
    12         for(int j=0;j<n;j++){
    13             if(i&(1<<j)){
    14                 for(int k=0;k<n;k++){
    15                     if(i&(1<<k))continue;
    16                     f[i|(1<<k)][k]=max(f[i|(1<<k)][k],min(f[i][j],b[j][k]));
    17                 }
    18             }
    19         }
    20     }
    21     int ans = 0;
    22     for(int i=0;i<n;i++){
    23         if(i==id)continue;
    24         ans = max(ans,min(c[id][i],f[(1<<n)-1][i]));
    25     }
    26     return ans;
    27 }
    28 int main() {
    29     ios::sync_with_stdio(false);
    30     cin>>n>>m;
    31     for(int i=0;i<n;i++){
    32         for(int j=0;j<m;j++){
    33             cin>>a[i][j];
    34         }
    35     }
    36     if(n==1){
    37         int ans = 1e9;
    38         for(int i=0;i<m-1;i++)
    39             ans = min(ans,abs(a[0][i]-a[0][i+1]));
    40         cout<<ans<<endl;
    41         return 0;
    42     }
    43     //预处理第i行与第j行相邻
    44     for(int i=0;i<n;i++){
    45         for(int j=0;j<n;j++){
    46             b[i][j]=1e9;
    47             for(int k=0;k<m;k++){
    48                 b[i][j]=min(b[i][j],abs(a[i][k]-a[j][k]));
    49             }
    50         }
    51     }
    52     //i是第一行,j是最后一行
    53     for(int i=0;i<n;i++){
    54         for(int j=0;j<n;j++){
    55             if(i==j) continue;
    56             c[i][j]=1e9;
    57             for(int k=0;k<m-1;k++)
    58                 c[i][j]=min(c[i][j],abs(a[i][k+1]-a[j][k]));
    59         }
    60     }
    61     int ans = 0;
    62     for(int i=0;i<n;i++){
    63         ans = max(ans,slove(i));
    64     }
    65     cout<<ans<<endl;
    66 }
    View Code
  • 相关阅读:
    Xcode安装Cocos2d-iphone
    Java最重要的21个技术点和知识点之JAVA基础
    Java最重要的21个技术点和知识点之JAVA面向对象
    Java最重要的21个技术点和知识点之JAVA集合框架、异常类、IO
    Java最重要的21个技术点和知识点之JAVA多线程、时间处理、数据格式
    Java最重要的21个技术点和知识点
    Linux 条件变量
    getcwd
    struct stat结构体简介
    SSL 程序设计初步介绍
  • 原文地址:https://www.cnblogs.com/MXang/p/10247704.html
Copyright © 2011-2022 走看看