社区讨论

求助这题为什么贪心不行

P7339 『MdOI R4』Kotori参与者 7已保存回复 15

讨论操作

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

当前回复
15 条
当前快照
1 份
快照标识符
@locmw4mp
此快照首次捕获于
2023/10/30 16:24
2 年前
此快照最后确认于
2023/11/05 03:28
2 年前
查看原帖
rt,仔细想想 确实还是不大明白
个人思路预处理出和哥哥直接比拼的选手,尽可能保留每场粉丝最多但能被哥哥击败的选手,结果只有20pts,都是少部分WA
不知是思路还是代码问题,求助
20pts代码:
CPP
#include<iostream>
#include<cstdio>
#include<algorithm>
#define MAXN (1<<18)
using namespace std;
typedef long long int64;
typedef unsigned long long uint64;
//#define int uint64
int k,m,n,lim;
int a[MAXN];//ty
inline int xwin(int a,int b)
{
	if(a>b){
		if(a<=lim)
			return a;
		if(a-b<=m)
			return b;
		return a;
	}else{
		if(b<=lim)
			return b;
		if(b-a<=m)
			return a;
		return b;
	}
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	int T;
	cin>>T;
	int p;
	while(T--)
	{
		cin>>k>>m;
		n=1<<k;
		for(int i=0;i<n;i++)
			cin>>a[i];
		lim=a[0]+m;
		for(int i=1;i<k;i++)
			for(int t=1<<i,j=t,tt=t>>1;j<n;j+=t)
				//cout<<j<<','<<j+tt<<' '<<a[j]<<' '<<a[j+tt]<<endl,
				a[j]=xwin(a[j],a[j+tt]);
		p=1;
		while(p<n)
		{
			//cout<<a[p]<<'#';
			if(lim<a[p])
				goto GG;
			p<<=1;
		}
		cout<<"Kotori\n";
		continue;
	GG:;
		cout<<"Yoshino\n";
	}
	return 0;
}

回复

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

正在加载回复...