Codeforces Beta Round #54 (Div. 2)

Codeforces Beta Round #54 (Div. 2)

http://codeforces.com/contest/58

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 pb push_back
 7 #define eb emplace_back
 8 #define maxn 1000005
 9 #define rep(k,i,j) for(int k=i;k<j;k++)
10 typedef long long ll;
11 typedef unsigned long long ull;
12 
13 
14 int main(){
15     #ifndef ONLINE_JUDGE
16        // freopen("input.txt","r",stdin);
17     #endif
18     std::ios::sync_with_stdio(false);
19     string str;
20     string s="hello";
21     cin>>str;
22     int i=0,j=0;
23     while(i<s.length()&&j<str.length()){
24         if(s[i]==str[j]){
25             i++,j++;
26         }
27         else{
28             j++;
29         }
30     }
31     if(i==s.length()){
32         cout<<"YES"<<endl;
33     }
34     else cout<<"NO"<<endl;
35 }
View Code

B

 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 pb push_back
 7 #define eb emplace_back
 8 #define maxn 1000005
 9 #define rep(k,i,j) for(int k=i;k<j;k++)
10 typedef long long ll;
11 typedef unsigned long long ull;
12 
13 
14 int main(){
15     #ifndef ONLINE_JUDGE
16        // freopen("input.txt","r",stdin);
17     #endif
18     std::ios::sync_with_stdio(false);
19     int n;
20     cin>>n;
21     for(int i=n;i>=1;i--){
22         if(n%i==0){
23             cout<<i<<" ";
24             n=i;
25         }
26     }
27 }
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 pb push_back
 7 #define eb emplace_back
 8 #define maxn 1000005
 9 #define rep(k,i,j) for(int k=i;k<j;k++)
10 typedef long long ll;
11 typedef unsigned long long ull;
12 
13 int n;
14 int a[100005];
15 
16 int main(){
17     #ifndef ONLINE_JUDGE
18        // freopen("input.txt","r",stdin);
19     #endif
20     std::ios::sync_with_stdio(false);
21     cin>>n;
22     int m;
23     int ans=0;
24     for(int i=1;i<=n;i++){
25         cin>>m;
26         int num=min(i,n-i+1);
27         m-=num;
28         if(m>=0){
29             a[m]++;
30             ans=max(ans,a[m]);
31         }
32     }
33     cout<<n-ans<<endl;
34 
35 }
View Code

D

在每个字符串后面加上字符d,然后sort+贪心即可

 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 pb push_back
 7 #define eb emplace_back
 8 #define maxn 1000005
 9 #define rep(k,i,j) for(int k=i;k<j;k++)
10 typedef long long ll;
11 typedef unsigned long long ull;
12 
13 int n;
14 string str[20004];
15 int book[20004];
16 string ans[20004];
17 string d;
18 
19 int main(){
20     #ifndef ONLINE_JUDGE
21        // freopen("input.txt","r",stdin);
22     #endif
23     std::ios::sync_with_stdio(false);
24     cin>>n;
25     int sum=0;
26     for(int i=1;i<=n;i++){
27         cin>>str[i];
28         sum+=str[i].length();
29     }
30     cin>>d;
31     for(int i=1;i<=n;i++){
32         str[i]+=d;
33     }
34     sum+=n/2;
35     int len=sum/(n/2);
36     int co=1;
37     sort(str+1,str+n+1);
38     for(int i=1;i<=n;i++){
39         if(!book[i]){
40             ans[co]=str[i];
41             book[i]=1;
42             for(int j=1;j<=n;j++){
43                 if(!book[j]&&str[i].length()-1+str[j].length()==len){
44                     ans[co]+=str[j].substr(0,str[j].length()-1);
45                     book[j]=1;
46                     co++;
47                     break;
48                 }
49             }
50         }
51     }
52     for(int i=1;i<co;i++){
53         cout<<ans[i]<<endl;
54     }
55 }
View Code

E

搜索

 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 pb push_back
 7 #define eb emplace_back
 8 #define maxn 1000005
 9 #define rep(k,i,j) for(int k=i;k<j;k++)
10 typedef long long ll;
11 typedef unsigned long long ull;
12 
13 ll ans1,ans2;
14 ll p[15];
15 ll ans=13;
16 void dfs(ll a,ll b,ll c,ll ra,ll rb, ll jw, ll inc,ll d){
17     if(inc>=ans) return;
18     if(!a&&!b&&!c&&!jw){
19         ans=inc;ans1=ra;ans2=rb;return;
20     }
21     if(!c){
22         ll s=a+b+jw;
23         int k=0;
24         while(s){
25             s/=10;
26             k++;
27         }
28         dfs(0,0,0,a*p[d]+ra,b*p[d]+rb,0,inc+k,d);
29         return;
30     }
31     if((a+b+jw)%10==c%10){
32         dfs(a/10,b/10,c/10,a%10*p[d]+ra,b%10*p[d]+rb,(a%10+b%10+jw)/10,inc,d+1);
33     }
34     else{
35         dfs(a*10+(c+10-b%10-jw)%10,b,c,ra,rb,jw,inc+1,d);
36         dfs(a,b*10+(c+10-a%10-jw)%10,c,ra,rb,jw,inc+1,d);
37         dfs(a,b,c*10+(a+b+jw)%10,ra,rb,jw,inc+1,d);
38     }
39 }
40 
41 
42 int main(){
43     #ifndef ONLINE_JUDGE
44        // freopen("input.txt","r",stdin);
45     #endif
46     std::ios::sync_with_stdio(false);
47     ll a,b,c;
48     char ch;
49     cin>>a>>ch>>b>>ch>>c;
50     p[0]=1;
51     for(int i=1;i<=13;i++) p[i]=p[i-1]*10;
52     dfs(a,b,c,0,0,0,0,0);
53     cout<<ans1<<"+"<<ans2<<"="<<ans1+ans2<<endl;
54 }
View Code

猜你喜欢

转载自www.cnblogs.com/Fighting-sh/p/10429890.html