• Codeforces Round #603 (Div. 2) A,B,C,D【E题待补】


     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define int long long
     4 signed main(){
     5     int _;
     6     cin>>_;
     7     while(_--){
     8         int a[4];int add=0;
     9         for(int i=1;i<=3;i++){
    10             cin>>a[i];add+=a[i];
    11         }    
    12         sort(a+1,a+1+3);
    20         int sum1=0;
    21         int cha=a[3]-a[2];
    22         if(a[1]>=cha){
    23             a[1]-=cha;
    24             int ans=0;
    25             ans=a[3]+a[1]/2;
    26             cout<<ans<<'
    ';
    27         }else{
    28             cout<<min(a[1]+a[2],a[3])<<'
    ';
    29         }
    30     //cout<<sum<<'
    ';
    31     } 
    32     return 0;
    33 } 

    或者二分也行。

     1 #include<bits/stdc++.h>
     2  
     3 using namespace std;
     4 #define int long long
     5 #define inf 0x3f3f3f3f3f
     6 signed main(){
     7     int _;int a,b,c;
     8     cin>>_;
     9     while(_--){
    10         cin>>a>>b>>c;
    11         int ans=0;
    12         int l=0;
    13         int r=300000090;
    14         while(l<=r){
    15             int mid=(l+r)/2;
    16             int sum=0;
    17             sum=min(a,mid)+min(b,mid)+min(c,mid);
    18             if(sum>=2*mid){
    19             l=mid+1;
    20                 ans=max(ans,mid);
    21             }else{
    22                 r=mid-1;
    23                 
    24             }
    25         }
    26         cout<<ans<<'
    ';
    27     } 
    28     return 0;
    29 }

     直接暴力就行。但是注意要先记录出现次数然后才能更改。要不然就没了QAQ

     1 #include<bits/stdc++.h>
     2  
     3 using namespace std;
     4 #define int long long
     5 string str[1500];
     6 map<string,int> mp;
     7 bool cmp(string a,string b){
     8     return a>b;
     9 }    
    10 signed main(){
    11     int _;
    12     cin>>_;
    13     while(_--){
    14         int n;
    15         mp.clear();
    16         cin>>n;
    17         int flag=1;
    18         int s=0;
    19         
    20         for(int i=0;i<n;i++){
    21             cin>>str[i];
    22             mp[str[i]]++;
    23         
    24     
    25         }
    26     //    sort(str,str+n,cmp);
    27         
    28         for(int i=0;i<n;i++){
    29             
    30             int F=0;
    31             if(mp[str[i]]>=2){
    32                 for(int j=str[i].size()-1;j>=0;j--){
    33                     for(int k=0;k<=9;k++){
    34                         string temp;
    35                         temp=str[i];
    36                         temp[j]=k+'0';
    37                         if(!mp[temp]){
    38                             mp[temp]++;
    39                             s++;
    40                             mp[str[i]]--;
    41                             str[i]=temp;
    42                             F=1;
    43                         }
    44                         if(F){
    45                             break;
    46                         }
    47                     }
    48                     if(F){
    49                         break;
    50                     }
    51                 }
    52             }
    53         }
    54         cout<<s<<'
    ';
    55         for(int i=0;i<n;i++)
    56             cout<<str[i]<<'
    ';
    57     }
    58     return 0;
    59 }

    一共有n块钱,k个人[n/k]块钱,向下取整。

    现在给你n块钱,你不知道有多少人,输出每个人可能获得多少钱

    其实就是找可行方案。【好像正规做法是数论分块】

    题意没理解QAQ。

     1 #include<bits/stdc++.h>
     2  
     3 using namespace std;
     4  
     5 #define int long long
     6  
     7 signed main(){
     8     int _;
     9     cin>>_;
    10     while(_--){
    11         int n;
    12         cin>>n;
    13         vector<int> ans;
    14         map<int,int> mp;
    15         ans.push_back(0);
    16         for(int i=1;i*i<=n;i++){
    17             if(!mp[i])
    18                 ans.push_back(i);
    19             mp[i]=1;
    20             if(!mp[n/i])
    21                 ans.push_back(n/i);
    22             mp[n/i]=1;
    23         }
    24         sort(ans.begin(),ans.end());
    25         cout<<ans.size()<<'
    ';
    26         for(int i=0;i<ans.size();i++){
    27             cout<<ans[i]<<" ";
    28         }
    29         cout<<'
    ';
    30     }
    31     return 0;
    32 }

    思路:暴力并查集就行了。真的难受。

     1 #include<bits/stdc++.h>
     2  
     3 using namespace std;
     4 string str[1005000];
     5 int f[1005000];
     6 int n;
     7 map<int,int> mp;
     8 int getf(int v){
     9     if(f[v]==v){
    10         return f[v];
    11     }else{
    12         f[v]=getf(f[v]);
    13         return f[v];
    14     }
    15 }
    16 void merge(int u,int v){
    17     int t1=getf(u);
    18     int t2=getf(v);
    19     if(t1!=t2){
    20         f[t2]=t1;
    21     }
    22 }
    23 void init(){
    24     for(int i=0;i<=n+1;i++)
    25         f[i]=i;
    26 }
    27 signed main(){
    28     cin>>n;
    29     init();
    30     int ans=0;
    31     for(int i=1;i<=n;i++){
    32         cin>>str[i];
    33         for(int j=0;j<str[i].size();j++){
    34             if(!mp[str[i][j]-'a']){
    35                 mp[str[i][j]-'a']=i;
    36             } 
    37         } 
    38     }
    39     for(int i=1;i<=n;i++){
    40         int F=1;
    41         for(int j=0;j<str[i].size();j++){
    42             if(i!=mp[str[i][j]-'a']&&F){
    43                 merge(i,mp[str[i][j]-'a']);
    44                 F=1;
    45                 
    46             }
    47         }
    48     }
    49     for(int i=1;i<=n;i++){
    50         if(f[i]==i)
    51             ans++;
    52     //    cout<<f[i]<<" ";
    53     }
    54 //    cout<<'
    ';
    55     cout<<ans<<'
    ';
    56     return 0;
    57 }

     【菜是原罪】

  • 相关阅读:
    通过线程池,从hbase中拿数据
    phoenix如何压缩表,以及如何映射表
    spring boot改造现有jms activeMQ配置
    windows安装redis
    mysql免安装版配置
    转发和重定向的区别
    object.equals(null)和object==null区别
    用IDEA学习getRealPath遇到的问题
    总误按win+Enter键弹出讲述人
    戴尔电脑插耳机后声音变化问题
  • 原文地址:https://www.cnblogs.com/pengge666/p/11964013.html
Copyright © 2020-2023  润新知