社区讨论

毒瘤出题人卡我贪心!

P7339 『MdOI R4』Kotori参与者 13已保存回复 40

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
40 条
当前快照
1 份
快照标识符
@locmvzsf
此快照首次捕获于
2023/10/30 16:24
2 年前
此快照最后确认于
2023/11/05 03:28
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int f,r,j,s,t,n,m,k,len,a[262150];
struct node{
	int a,id;
}p[262150][20];
int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%d%d",&k,&m);
		n=1<<k;
		for(int i=1;i<=n;i++){
			scanf("%d",&a[i]);
			p[i][1].a=a[i];
			p[i][1].id=i;
		}
//		printf("%d ^\n",p[1][1].a);
		s=n;
		j=0;
		while(s>1){
			j++;
			for(int i=1;i<=s;i+=2){
				if(p[i][j].id==1){
					f=1;
					p[i][j].a+=m;
				}
				else{
//					printf("%d ^%d\n",p[1][1].a,max(p[i][j].a,p[i+1][j].a));
					if(max(p[i][j].a,p[i+1][j].a)<a[1]+m){
//						printf("$$$$$\n");
						if(p[i][j].a>=p[i+1][j].a){
							f=1;
							p[i][j].a+=m;
						}
						else{
							f=2;
							p[i+1][j].a+=m;
						}
					}
					else{
						if(p[i][j].a<=p[i+1][j].a){
							f=1;
							p[i][j].a+=m;
						}
						else{
							f=2;
							p[i+1][j].a+=m;
						}
					}
				}
//				printf("%dPK%d\n",p[i][j].id,p[i+1][j].id);
//				printf("%d$$%d\n",p[i][j].a,p[i+1][j].a);
//				printf("%d\n",p[(i+1)>>1][j+1].a);
				if(p[i][j].a==p[i+1][j].a){
					if(f==1){
						p[(i+1)>>1][j+1].a=a[p[i][j].id];
						p[(i+1)>>1][j+1].id=p[i][j].id;
					}
					else{
						p[(i+1)>>1][j+1].a=a[p[i+1][j].id];
						p[(i+1)>>1][j+1].id=p[i+1][j].id;
					}
				}
				else{
					if(p[i][j].a>=p[i+1][j].a){
						p[(i+1)>>1][j+1].a=a[p[i][j].id];
						p[(i+1)>>1][j+1].id=p[i][j].id;
					}
					else{
						p[(i+1)>>1][j+1].a=a[p[i+1][j].id];
						p[(i+1)>>1][j+1].id=p[i+1][j].id;
					}
				}
			}
			s=s>>1;
//			for(int i=1;i<=n;i++)printf("%d ",a[i]);
//			puts("");
		}
		if(p[1][k+1].id==1)printf("Kotori\n");
		else printf("Yoshino\n");
	}
	return 0;
}
求hack数据

回复

40 条回复,欢迎继续交流。

正在加载回复...