题解 | #牛牛去购物#

牛牛去购物

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");
全部评论
T1可以给个反例么
点赞 回复 分享
发布于 2023-01-06 21:45 河南
D题竟然没超时???
点赞 回复 分享
发布于 2023-01-06 22:21 广东
我昨天一开始也想的是单链,但是后面发现单链能存但是不好取前面一个。
点赞 回复 分享
发布于 2023-01-07 10:33 湖南
T2 s1=eeeggee,s2=eeg 运行报错
点赞 回复 分享
发布于 2023-01-07 14:13 湖南

相关推荐

河和静子:如果大专也能好过的话,我寒窗苦读几年的书不是白读了?
点赞 评论 收藏
分享
评论
4
收藏
分享
牛客网
牛客企业服务