zoukankan      html  css  js  c++  java
  • Codeforces Beta Round #22 (Div. 2 Only)

    Codeforces Beta Round #22 (Div. 2 Only)

    http://codeforces.com/contest/22

    A

    水题

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lson l,mid,rt<<1
     4 #define rson mid+1,r,rt<<1|1
     5 #define sqr(x) ((x)*(x))
     6 #define maxn 500005
     7 typedef long long ll;
     8 /*#ifndef ONLINE_JUDGE
     9         freopen("1.txt","r",stdin);
    10 #endif */
    11 
    12 int a;
    13 vector<int>ve;
    14 
    15 int main(){
    16     #ifndef ONLINE_JUDGE
    17        // freopen("1.txt","r",stdin);
    18     #endif
    19     std::ios::sync_with_stdio(false);
    20     int n;
    21     cin>>n;
    22     for(int i=0;i<n;i++){
    23         cin>>a;
    24         ve.push_back(a);
    25     }
    26     sort(ve.begin(),ve.end());
    27     ve.erase(unique(ve.begin(),ve.end()),ve.end());
    28     if(ve.size()==1) cout<<"NO"<<endl;
    29     else cout<<ve[1]<<endl;
    30     
    31 }
    View Code

    B

    DP,有点像二维差分

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lson l,mid,rt<<1
     4 #define rson mid+1,r,rt<<1|1
     5 #define sqr(x) ((x)*(x))
     6 #define maxn 500005
     7 typedef long long ll;
     8 /*#ifndef ONLINE_JUDGE
     9         freopen("1.txt","r",stdin);
    10 #endif */
    11 
    12 int n,m;
    13 char str[35][35];
    14 int dp[35][35];
    15 
    16 int main(){
    17     #ifndef ONLINE_JUDGE
    18         freopen("1.txt","r",stdin);
    19     #endif
    20     std::ios::sync_with_stdio(false);
    21     scanf("%d %d",&n,&m);
    22     int ans=0;
    23     for(int i=1;i<=n;i++) scanf("%s%*c",str[i]+1);
    24     for(int i=1;i<=n;i++){
    25         for(int j=1;j<=m;j++){
    26             if(str[i][j]=='1'){
    27                 dp[i][j]++;
    28             }
    29             dp[i][j]+=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1];
    30         }
    31     }
    32     for(int i=1;i<=n;i++){
    33         for(int j=1;j<=m;j++){
    34             if(str[i][j]=='0'){
    35                 for(int k=i-1;k>=0;k--){
    36                     for(int l=j-1;l>=0;l--){
    37                         int tmp=dp[i][j]-dp[k][j]-dp[i][l]+dp[k][l];
    38                         if(!tmp){
    39                             ans=max(ans,2*(i-k+j-l));
    40                         }
    41                         if(str[i][l]=='1') break;
    42                     }
    43                     if(str[k][j]=='1') break;
    44                 }
    45             }
    46         }
    47     }
    48 
    49 
    50     cout<<ans<<endl;
    51 }
    View Code

    C

    构造题

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lson l,mid,rt<<1
     4 #define rson mid+1,r,rt<<1|1
     5 #define sqr(x) ((x)*(x))
     6 #define maxn 500005
     7 typedef long long ll;
     8 /*#ifndef ONLINE_JUDGE
     9         freopen("1.txt","r",stdin);
    10 #endif */
    11 
    12 int n,m,v;
    13 
    14 int main(){
    15     #ifndef ONLINE_JUDGE
    16         freopen("1.txt","r",stdin);
    17     #endif
    18     std::ios::sync_with_stdio(false);
    19     cin>>n>>m>>v;
    20     if(m<n-1||m>((n-2)*(n-3))/2+n-1) cout<<-1<<endl;
    21     else if(n<3) cout<<"1 2"<<endl;
    22     else{
    23         int u=v-1;
    24         if(v==1) u=2;
    25         for(int i = 1; i <= n; i++){
    26             if(i != v)
    27                 cout<<i<<" "<<v<<endl;
    28         }
    29         m -= (n - 1);
    30         for(int i = 1; i <= n && m; i++){
    31             if(i == v || i == u) continue;
    32             for(int j = i + 1; j <= n && m; j++){
    33                 if(j == v || j == u) continue;
    34                 cout<<i<<" "<<j<<endl;
    35                 m--;
    36             }
    37         }
    38     }
    39 
    40 }
    View Code

    D

    贪心

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lson l,mid,rt<<1
     4 #define rson mid+1,r,rt<<1|1
     5 #define sqr(x) ((x)*(x))
     6 #define maxn 500005
     7 typedef long long ll;
     8 /*#ifndef ONLINE_JUDGE
     9         freopen("1.txt","r",stdin);
    10 #endif */
    11 
    12 int n;
    13 vector<pair<int,int> >ve;
    14 vector<int>V;
    15 
    16 int main(){
    17     #ifndef ONLINE_JUDGE
    18   //      freopen("1.txt","r",stdin);
    19     #endif
    20     std::ios::sync_with_stdio(false);
    21     cin>>n;
    22     int a,b;
    23     for(int i=1;i<=n;i++){
    24         cin>>a>>b;
    25         if(a>b) swap(a,b);
    26         ve.push_back(make_pair(a,b));
    27     }
    28     sort(ve.begin(),ve.end());
    29     int ans=1;
    30     int r=ve[0].second;
    31     for(int i=1;i<ve.size();i++){
    32         if(ve[i].first>r){
    33             ans++;
    34             V.push_back(r);
    35             r=ve[i].second;
    36         }
    37         else{
    38             r=min(r,ve[i].second);
    39         }
    40     }
    41     V.push_back(r);
    42     cout<<ans<<endl;
    43     for(int i=0;i<V.size();i++){
    44         cout<<V[i]<<' ';
    45     }
    46 }
    View Code

    E

    构造强连通分量,先找到出度为0的点,跑dfs找出链或环上的头尾节点,然后把这些节点相连即可

    注意,可能存在自环,所以要判断一下

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lson l,mid,rt<<1
     4 #define rson mid+1,r,rt<<1|1
     5 #define sqr(x) ((x)*(x))
     6 #define maxn 500005
     7 typedef long long ll;
     8 /*#ifndef ONLINE_JUDGE
     9         freopen("1.txt","r",stdin);
    10 #endif */
    11 
    12 vector<int>ve[100005],head,last;
    13 int d[100005];
    14 int vis[100005];
    15 
    16 int dfs(int pos){
    17     vis[pos]=1;
    18     if(!vis[ve[pos][0]]){
    19         return vis[pos]=dfs(ve[pos][0]);
    20     }
    21     return vis[pos]=pos;
    22 }
    23 
    24 int main(){
    25     #ifndef ONLINE_JUDGE
    26   //      freopen("1.txt","r",stdin);
    27     #endif
    28     std::ios::sync_with_stdio(false);
    29     int n;
    30     cin>>n;
    31     int a;
    32     for(int i=1;i<=n;i++){
    33         cin>>a;
    34         ve[i].push_back(a);
    35         d[a]++;
    36     }
    37     int k=0;
    38     for(int i=1;i<=n;i++){
    39         if(!d[i]){
    40             k++;
    41             head.push_back(i);
    42             last.push_back(dfs(i));
    43         }
    44     }
    45     int kk=k;
    46     for(int i=1;i<=n;i++){
    47         if(!vis[i]){
    48             k++;
    49             head.push_back(i);
    50             last.push_back(dfs(i));
    51         }
    52     }
    53     if(k==1&&!kk) k=0;
    54     cout<<k<<endl;
    55     for(int i=0;i<k;i++){
    56         cout<<last[i]<<" "<<head[(i+1)%k]<<endl;
    57     }
    58 }
    View Code
  • 相关阅读:
    IE 8兼容:<meta http-equiv="X-UA-Compatible" content="IE=edge" /> X-UA-Compatible的解释
    点击下载,下载图片
    修改输入框placeholder文字默认颜色-webkit-input-placeholder
    rest_framework目录
    Django目录
    python基础内容目录
    hadoop伪分布式搭建
    通过ldap验证svn服务
    LDAP目录服务
    Python基础之字符串拼接简单介绍
  • 原文地址:https://www.cnblogs.com/Fighting-sh/p/10356389.html
Copyright © 2011-2022 走看看