Codeforce codecraft-20 div2

空扰寡人 提交于 2020-03-06 02:00:42

# A.Grade Allocation

# 题意

签到,给定n个数,m为最大值,平均数必须保持不变,求能取得的最大值

# 题解

ans=min(m,sum)

 1 #include <bits/stdc++.h>
 2 #define ll long long
 3 #define pii pair<int,int>
 4 #define pll pair<ll,ll>
 5 #define fi first
 6 #define se second
 7 #define pb push_back
 8 using namespace std;
 9 const int N=1e5+10;
10 int a[N];
11 void solve(){
12     int n,m;
13     cin>>n>>m;
14     int sum=0;
15     for(int i=1;i<=n;i++){
16         cin>>a[i];
17         sum+=a[i];
18     }
19     if(sum>=m)
20         cout<<m<<endl;
21     else{
22         cout<<sum<<endl;
23     }
24 }
25 int main(){
26     int t;
27     cin>>t;
28     while(t--){
29         solve();
30     }
31 
32 }

# B.String Modification

# 题意

一个字符串,可以执行的操作是一个数k(1<=k<=n) , i从1 到 n-k+1,将s[i~i+k-1]所有reverse,求出一个k来使得操作后的字符串是字典序最小的,如果有多个满足的k,求最小的k

# 题解

首先我们有一个字符串 s,
我们可以把它表示为 s1s2s3…sn,然后我们选择一个 k:
经过第一次反转: sksk−1sk−2…s1sk+1sk+2…sn
观察到之后 sk的位置就不会发生变化了。
经过第二次反转: sksk+1s1…sk−2sk−1sk+2…sn观察到之后 sksk+1的位置都不会发生变化。
经过第三次反转: sksk+1sk+2…s2s1sk+3…sn观察到之后 sksk+1sk+2 的位置不会再发生变化。
……
以此类推,最后反转变换过后的字符串 s' 前n−k+1个字符一定是 sksk+1sk+2…sn
通过观察还可发现, s 中的前 k−1个字符 s1s2s3…sk−1 一定会被搬到 s' 的后半部分,但是方向不确定。
反转次数是 n−k+1,当反转次数是奇数最后拼接的需要反转,偶数直接拼接

时间复杂度O(N2)

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int T,n,ans;
 4 string s,mn;
 5 string work(int k)
 6 {
 7     if(k==n)
 8     {
 9         string res=s;
10         reverse(res.begin(),res.end());
11         return res;
12     }
13     int t=n-k+1;
14     if(t%2==0)
15     {
16         string res=s.substr(k-1,n-k+1);
17         res+=s.substr(0,k-1);
18         return res;
19     }
20     string res=s.substr(k-1,n-k+1);
21     string tmp=s.substr(0,k-1);
22     reverse(tmp.begin(),tmp.end());
23     res=res+tmp;
24     return res;
25 }
26 int main()
27 {
28     scanf("%d",&T);
29     while(T--)
30     {
31         scanf("%d",&n);
32         cin>>s;
33         ans=1,mn=s;
34         for(int i=2;i<=n;i++)
35             if(work(i)<mn)
36                 mn=work(i),ans=i;
37         cout<<mn<<endl<<ans<<endl;
38     }
39 }

 

# C

# 题意

# 题解

# D

# 题意

# 题解

# E

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!