题解 | #牛牛去购物#
牛牛去购物
https://ac.nowcoder.com/acm/contest/49888/A
T1 给哥们卡住了 上来交了发
int c=a+b;
cout<<min(n%c-a,n%c-b);
额仔细一想这样不一定对 不一定是尽可能配套选择 然后开始枚举 过了
int ans=n;
for(int i=0;i*a<n;i++){
ans=min(ans,(n-i*a)%b);
}
for(int i=0;i*b<n;i++){
ans=min(ans,(n-i*b)%a);
}
cout<<ans<<endl;
T2 枚举了一下 然后过了
string s1,s2;
cin>>s1>>s2;
int f=0;
for(int i=0;i<n;i++){
if(s1[i]==s2[0]){
int k=0;
for(int j=i;k<m;j++){
if(s1[j]>'z'||s1[j]<'a')continue;
else if(s1[j]==s2[k])k++;
else break;
}
if(k==m)f=1;
}
}
if(f)puts("YES");
else puts("NO");
**T3 ** 刚开始随手写的单链表不知道为啥过不了 有没有大佬指正一下
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int n,m;cin>>n>>m;
int end=n,top=1;
a[1]=0;
for(int i=2;i<=n;i++){
a[i]=i-1;
}
while(m--){
int op,x;cin>>op>>x;
if(op==1){
if(x==end)continue;
else if(x==top){
a[x+1]=0;
a[x]=end;
top=x+1;
end=x;
}
else{
a[x+1]=x-1;
a[x]=end;
end=x;
}
}
else{
cout<<a[x]<<endl;
}
}
return 0;
}
然后踏踏实实写个双链表 交了一发 发现调位的顺序反了 后来de出来了
re[1]=-1;ne[n]-1;
for(int i=2;i<=n;i++)re[i]=i-1;
for(int i=1;i<n;i++)ne[i]=i+1;
while(m--){
int op,x;cin>>op>>x;
if(op==1){
ne[re[x]]=ne[x];
re[ne[x]]=re[x];
}
else{
if(re[x]==-1)cout<<"0"<<endl;
else{
cout<<re[x]<<endl;
}
}
}
T4 甲选择-1 -2 乙选-2 -1 一轮就是-3 -3 将-3 -3的每一轮依次减去
while(a>=3&&b>=3)a-=3,b-=3;
然后剩下的默认a小
if(a>b)swap(a,b);
甲开始操作 如果上来就不行就是乙赢
if(a>=1&&b>=2)puts("niuniu");
存在{1,2}{2,2}{1,无穷}{2,无穷} 满足此条件甲都可以创造一个为0的局面所以是甲赢
else puts("niumei");