Codeforces Round #402 (Div. 2)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Codeforces Round #402 (Div. 2),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3159字,纯文字阅读大概需要5分钟。
内容图文
Codeforces Round #402 (Div. 2)
A.
日常沙比提
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
usingnamespace std;
inline int read(){
char c=getchar();int x=0,f=1;
while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1; c=getchar();}
while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘; c=getchar();}
return x*f;
}
int n,a[10],b[10],ans;
int main(){
//freopen("in","r",stdin);
n=read();
for(int i=1;i<=n;i++) a[read()]++;
for(int i=1;i<=n;i++) b[read()]++;
for(int i=1;i<=5;i++){
int c=a[i]+b[i];
if(c&1) {puts("-1");return0;}
else ans+=abs(c/2-a[i]);
}
printf("%d",ans/2);
}
B.
日常沙比提2
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
usingnamespace std;
inline int read(){
char c=getchar();int x=0,f=1;
while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1; c=getchar();}
while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘; c=getchar();}
return x*f;
}
char s[20];
int n,k;
int main(){
//freopen("in","r",stdin);
scanf("%s",s+1);k=read();
n=strlen(s+1);
int c=0;
for(int i=1;i<=n;i++) if(s[i]==‘0‘) c++;
if(c<k) printf("%d",n-1);
else{
int now=0,zero=0;
for(int i=n;i>=1;i--){
if(s[i]==‘0‘) zero++;
else now++;
if(zero==k) break;
}
printf("%d",now);
}
}
C.
我去怎么这次三道沙比提
样例3良心!注意第一次买可以比$k$个多
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
usingnamespace std;
constint N=2e5+5;
inline int read(){
char c=getchar();int x=0,f=1;
while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1; c=getchar();}
while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘; c=getchar();}
return x*f;
}
int n,k,ans;
struct Item{
int a,b,c;
booloperator <(const Item &r)const{
return c>r.c;
}
}a[N];
int main(){
//freopen("in","r",stdin);
n=read();k=read();
for(int i=1;i<=n;i++) a[i].a=read();
for(int i=1;i<=n;i++) a[i].b=read();
for(int i=1;i<=n;i++) a[i].c=a[i].b-a[i].a;
sort(a+1,a+1+n);
int i;
for(i=1;i<=k;i++) ans+=a[i].a;
while(i<=n&&a[i].c>=0) ans+=a[i].a,i++;
for(;i<=n;i++) ans+=a[i].b;
printf("%d",ans);
}
D.
题意:给两个字符串以及一个删除第一个字符串字符的操作序列,问多少次操作之后是最后的可以从第一个中找出第二个字符串的时刻
乱想一通,突然发现二分答案不就好了....
倒着处理变成加字符,二分加的字符的最晚时间最早,然后判定
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
usingnamespace std;
constint N=2e5+5;
inline int read(){
char c=getchar();int x=0,f=1;
while(c<‘0‘||c>‘9‘){if(c==‘-‘)f=-1; c=getchar();}
while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘; c=getchar();}
return x*f;
}
int n,t[N],m;
char a[N],b[N];
bool check(int g){
int now=1;
for(int i=1;i<=n;i++) if(t[i]<=g){
if(a[i]==b[now]) now++;
if(now>m) returntrue;
}
returnfalse;
}
void solve(){
int l=1,r=n,ans=0;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid)) ans=mid,r=mid-1;
else l=mid+1;
}
printf("%d",n-ans);
}
int main(){
//freopen("in","r",stdin);
scanf("%s%s",a+1,b+1);
n=strlen(a+1);
m=strlen(b+1);
for(int i=1;i<=n;i++) t[read()]=n-i+1;
solve();
}
E.
写了40min然后放弃了好难写
原文:http://www.cnblogs.com/candy99/p/6464094.html
内容总结
以上是互联网集市为您收集整理的Codeforces Round #402 (Div. 2)全部内容,希望文章能够帮你解决Codeforces Round #402 (Div. 2)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。