Codeforces Round #418 (Div. 2)

来源:互联网 发布:windows垃圾清理软件 编辑:程序博客网 时间:2024/06/06 02:40

A. An abandoned sentiment from past

题意:给你一个含有n个数的序列,其中有k个数为0,再给你k个数,让你将序列中的0用这k个数代替,每个数只能用一次,问你能不能使替代后的n个数不是递增的,能则输出Yes,否则输出No

将k个数从大到小排列,依次代替0,再判断是否递增即可

#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;int main(){  int n,k;  int a[105],b[105];  cin>>n>>k;  for(int i=0;i<n;i++)    cin>>a[i];  for(int i=0;i<k;i++)    cin>>b[i];  sort(b,b+k);  int j=k-1;  for(int i=0;i<n;i++){    if(a[i]==0){        a[i]=b[j];        j--;    }  }for(int i=0;i<n-1;i++)if(a[i]>a[i+1]){    cout<<"Yes"<<endl;    return 0;}cout<<"No"<<endl;}

B. An express train to reveries

题意:有三个序列a,b,p,均含有n个整数其中p为标准序列是1到n的整数(不重复),而a和b中有且只有1个元素和p不同,a、b序列至少有一个元素不同(最多两个),给你序列a和b,让你求p

a和b中要么一个元素不同,要么两个元素不同, 注意p中的元素各不相同用个数组记录a和b中已经相同的元素,若a和b只有一个元素不同,则将其改为未出现的元素即可,若有两个元素不同,则要考虑可能有一个元素在a或b里重复,再修改即可

#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;int c[1005];  int x,y,z,d,e,f;int main(){  int n;  int a[1005],b[1005];  cin>>n;  for(int i=0;i<n;i++)    cin>>a[i];  for(int i=0;i<n;i++)    cin>>b[i];    int k=0;  for(int i=0;i<n;i++){    if(a[i]!=b[i]){    if(k==0){        d=i;        e=a[i];        f=b[i];    }    else {        x=i;        y=a[i];        z=b[i];    }    k++;    }    else c[a[i]]++;  }  if(k==2){    if(c[a[d]]==0&&c[b[x]]==0)        a[x]=z;    else a[d]=f;  }  else {         for(int i=1;i<=n;i++)            if(c[i]==0)               a[d]=i;  }  for(int i=0;i<n-1;i++)    cout<<a[i]<<" ";  cout<<a[n-1]<<endl;}

C. An impassioned circulation of affection

题意:给你一个只含有n(n<=1500)小写字母的字符串s,有q个查询(q<=200000),每个查询给你一个数字m,和一个小写字母c,问你若最多可将原序列中的m个字符改为c,则改后的字符中最多能有多少个连续的c

由于q很大,n很小,所以应该考虑预处理原字符串,对于每个字符c,计算从第i(i<=n)个字符到第j(i<=j<=n)个字符中与c不同的字符的个数ans,更新dp[c][ans]=max(dp[c][ans],j-i+1),这个dp数组表示什么呢,表示恰好修改ans个字符后的序列中最多含有的连续个c字符数,这和最后的答案有区别,因为有的不用修改ans次就能有相同的答案,故需再更新一下dp[c][i]=max(dp[c][i-1],dp[c][i])

#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<string>#define MAXN 1005#define MAXM 30005using namespace std;int dp[1505][1505],d[1505][1005];string s;int main(){int l;cin>>l; for(int i=1;i<=l;i++){    cin>>s[i]; }for(int k='a';k<='z';k++) for(int i=1;i<=l;i++){    int ans=0;    for(int j=i;j<=l;j++){      if(s[j]!=k)       ans++;       dp[k][ans]=max(dp[k][ans],j-i+1);    } } for(int k='a';k<='z';k++) for(int i=1;i<=l;i++)    dp[k][i]=max(dp[k][i-1],dp[k][i]);  int n;  cin>>n;  for(int i=0;i<n;i++){    char a;int b;    cin>>b>>a;    cout<<dp[a][b]<<endl;  }}




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 拔罐拔出了水泡怎么办 风湿引起的背疼怎么办 拔罐减肥不瘦怎么办 艾灸后脸上长痘怎么办 艾灸烟大怎么办 湿毛巾 月经推迟一个月了还不来怎么办 埋线了喝酒了怎么办 对待孩子脾气暴燥怎么办 买的新鞋子臭脚怎么办 鞋子臭脚怎么办如何除 惠普803墨盒干了怎么办 酷派手机无命令怎么办 华为手机锁机了怎么办 小孩被蜘蛛咬了怎么办 我是一个不爱说话的人怎么办 光动能手表停了怎么办 电波表收不到波怎么办 吃了壮阳药头疼怎么办 吃了伟哥后头痛怎么办 伟哥吃了不管用怎么办 钱站的钱还不起怎么办 面试工资要低了怎么办 线切割环保来查怎么办 喝白酒咽不下去怎么办 翠佛堂的玉假了怎么办 300英雄账号忘了怎么办 买了假酒不承认怎么办 买到假酒不承认怎么办 喝假酒胃里难受怎么办 怀孕初期塞药了怎么办 促黄体生成素高怎么办 激素脸痒的厉害怎么办 肾阴虚又肾阳虚怎么办 泡菜坛子太酸了怎么办 吃花粉过敏休刻怎么办 脸过敏怎么办才最有效 喝花粉后过敏了怎么办 阿比特龙耐药后怎么办 马蜂把人蜇了怎么办 非那雄胺副作用怎么办 来电充电宝丢了怎么办