首页 > 其他分享 >Codeforces Round 931 (Div. 2) D2

Codeforces Round 931 (Div. 2) D2

时间:2024-04-25 22:13:03浏览次数:22  
标签:数字 二进制 交互 含有 我们 分解 931 D2 Div

挺简单的题目,就是一个普通博弈论套了一个交互的皮。
。。但是恶心的就是,交互的皮是真难顶啊,什么sb玩意,我因为爆了int一直给我现实TLE on test 1,这我怎么调?
不得不说,交互题和普通的题目真是差别太大了,就评测这一块,返回的消息完全无法给我有效的指导。。然后我就直接坐大牢。
要是这题不套个交互的皮,难度顶天1600.。。我觉得。
而且这个交互的皮套的是真的生硬。。

其实对于一个数字的每一个二进制位置,我们考虑它是1和0两种情况。如果是1,那分为的两个数字的这一位就一定是0和1,如果是0,那分成的两个数字的对应位就是1,1或者0,0。那我们考虑我们什么时候能够赢。很简单,就是无法分解。手玩一下,发现是否能够分解和这个数字的二进制表示中的1的数量直接相关。如果二进制表示只有1个1,那就是无法分解。如果不止一个1,那就是一定能够分解。
观察分解的不同情况。我们发现,如果我们要构造一个必胜的情况,也就是电脑必败的情况,确实很简单,就是我们每次操作都让电脑能够选择的数字的二进制表示都只有奇数个1。要达到这个,我们一定分解的是含有偶数个1的数字。这样我们就能够分解出两个含有奇数个1的数字。而电脑只能够选择含有奇数个1的数字进行分解。可以发现,它只能够分解出来,一个二进制表示含有偶数个1的数字,和一个二进制表示含有奇数个1的数字。我们继续选择含有偶数个1的数字进行下一步操作。这就是我们的必胜态。

要保证我们必胜,就要保证我们什么时候能够拿到手的数字都是二进制表示含有偶数个1的数字。如果最开始给出的n不是,那我们就后手操作。
真的不难。。居然标了2400。。我可以说是理解了题意,手玩了一下就知道怎么做了。。一个1700的人能秒的题目。。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline ll read(){
	ll a=0,b=1;char c=getchar();
	for(;c<'0'||c>'9';c=getchar())if(c=='-')b=-1;
	for(;c>='0'&&c<='9';c=getchar())a=a*10+c-'0';
	return a*b;
}
int count(ll x)
{
	int ans=0;
	for(int i=0;i<=62;i++)
	{
		ans+=((x>>i)&1);
//		cout<<((x>>i)&1)<<' ';
	}
//	cout<<endl;
	return ans;
}
int main()
{
	int T=read();
	while(T--)
	{
		ll n=read();
		if(count(n)%2==1)
			cout<<"second"<<endl;
		else
		{
			cout<<"first"<<endl;
			for(int i=60;i>=1;i--)
			{
				if(((n>>i)&1)==1)
				{
					cout<<(1LL<<i)<<' '<<(n-(1LL<<i))<<endl;
					break;
				}
			}
		}
		ll x1,x2;
		x1=read(),x2=read();
		while(x1!=0||x2!=0)
		{
			if(count(x1)%2==0)n=x1;
			else n=x2;
			for(int i=60;i>=1;i--)
			{
				if(((n>>i)&1)==1)
				{
					cout<<(1LL<<i)<<' '<<(n-(1LL<<i))<<endl;
					break;
				}
			}
			x1=read(),x2=read();
		}
	}
	return 0;
}

md,交互题是真恶心。

标签:数字,二进制,交互,含有,我们,分解,931,D2,Div
From: https://www.cnblogs.com/HLZZPawa/p/18158724

相关文章

  • Codeforces Round 939 (Div. 2) E1-E2
    CodeforcesRound939(Div.2)E1.Nenevs.Monsters(EasyVersion)题意:有n个怪物,能量等级为\(a_i\),现在可以使用一种法术,使第1个怪物攻击第2个怪物,第2个怪物攻击第3个怪物……第n个怪物攻击第1个怪物,当能量等级为x的怪物攻击能量等级为y的怪物时,怪物y->max(y-x,0),在经过\(1......
  • Codeforces Round 892 (Div. 2) E
    E的话一眼dp,然后观察一下方程,\(f[i][j]表示前i个位置已经选了长度为j的区间,且第i个位置已经被选上时,能够获得的最大值\)\[f[i][j]=\displaystyle\max_{1\leqk\leqmin(i,j)}(f[i-k][j-k]+calc(i-k+1,j))\\calc(l,r)=|b_l-a_r|+|b_r-a_l|\]这样的dp是\(O(n^2k)\)的,而\(1\leqk......
  • cf 1601B Frog Traveler Codeforces Round 751 (Div. 1)
     Problem-1601B-Codeforces BFS然后每次上升可以的范围是一个区间,然后每次都遍历这个区间的所有点,那么超时。用set等方式,合并这些区间,之前没遍历过的范围才更新(加入BFS需要遍历的队列里)。但是区间的更新特别容易写错…… 我的代码和造数据1/**2记录两个vi......
  • Codeforces Round 940 (Div. 2) and CodeCraft-23 题解
    CodeforcesRound940(Div.2)andCodeCraft-23题解题目链接A.Stickogon贪心#include<bits/stdc++.h>usingnamespacestd;#definefffirst#definesssecond#definepbpush_back#defineall(u)u.begin(),u.end()#defineendl'\n'#definedebu......
  • Educational Codeforces Round 164 (Rated for Div. 2)
    A.PaintingtheRibbon题意:n个物体,m个颜色,alice要给每个物体任意涂一个颜色。bob可以给k个物体涂色,问alice能否阻止bob让所有的物体颜色都相同。思路:思维题。如果m=1,那么无解。如果m>1,那么bob如果想要染成同一个颜色,alice可以让bob需要染色的数量最多。如果染色的数量最多,那......
  • Codeforces Round 906 (Div. 2) E1
    时隔了不知道多久的补题。两个月吧,这是可是寒假的比赛。但是补题的时候还是遇到了很多问题。很重要的有一些地方能够简化,一些条件没有充分的利用上,导致了我很多地方考虑的太复杂。这些能够简化的地方全部利用上我觉得才算是写出来了这道题目,否则这题会复杂到我赛时写不完,而且特......
  • CRound927__Div3__C
    这道题涉及到两个部分,先是逆向思维,正着做一定会无比困难,而倒过来想就会好做,也比较难想到逆向思维,见识又少了,倒着思考就得先找到最后一个移除的元素include<bits/stdc++.h>usingnamespacestd;defineforn(i,n)for(inti=0;i<int(n);i++)intmain(){intt;cin......
  • 给定两个数x和y(长度相等),让它们可以交换各个位上的数字(位对应交换),求让两数乘积最大的
    如题,给出x=73,y=31,如何让两数乘积最大?位数定义:各个位上的数字例73,位数有7,3当前,只有一种交换策略,x=71,y=33,发现交换以后有:x+y=x'+y',如果抽象成求最大面积就好办了,可能一下想不到,还得多积累经验,不是你不知道是你想不到是你见得少,没见识...当是正方形的时候面积最大小学......
  • Codeforces Round 940 (Div. 2) and CodeCraft-23
    A.Stickogon#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;#defineinti64usingvi=vector<int>;constintN=3e5,mod=1e9+7;voidsolve(){ vicnt(101); intn; cin>>n; for(i......
  • Codeforces Round 892 (Div. 2) 复盘
    A没啥好说的。B也是,很简单的贪心。但是AB都因为读题导致的理解误差wa了一发。哎,读题读错,只能说英语还得练。C,赛时没做出来,后面的也是。这个题目其实思路已经有了,cf的这种题,还放在C题,那就是很明显那种能打标看出规律的东西。就算知道了是打表能看出来的,我懒得写暴力,所以就一直......