首页 > 其他分享 >codeforces round 948(div.2)

codeforces round 948(div.2)

时间:2024-05-27 18:01:14浏览次数:27  
标签:948 int tt codeforces cin 立方体 塔顶 倍数 div.2

https://m1.codeforces.com/contest/1977

A:

题意:

小男孩尼基塔得到了一些立方体作为礼物。他决定用它们建一座塔。

一开始,塔上没有任何立方体。在一次移动中,尼基塔要么正好把 1 个立方体放到塔顶,要么正好从塔顶移走 1个立方体。有没有可能在走了 n 步之后,塔顶正好有 m 个立方体?

分析:

如果小男孩每次都选择把一个立方体放到塔顶,那么,n次后,塔顶将会有最多数量的立方体(m1=n),如果小男孩一次放下,一次拿走,塔顶将会有最少数量的立方体,此时有两种情况,n为奇数时, m2=1;n为偶数时,m2=0。在m2-m1的区间内,以2递增得到的所有值均为可以达到的。

故,对于一个数值m进行分析,如果m大于n,则必然不可能,输出否;如果小于n,判断n-m是否为2 的倍数,若是,则输出yes,否则输出no。

代码实现:

#include<bits/stdc++.h>
using namespace std;
 
int main()
{
	int tt;
	cin >> tt;
	while(tt--)
	{
		int n,m;
		cin >> n >> m;
		if(m>n)
		cout << "No" << endl;
		else if((n-m)%2==0)
		{
			cout << "Yes" << endl;
		}
		else
		cout << "No" << endl;
	}
	return 0;
}

B:

题意:

给定一x,x<=2^30,将x分解为若干个2的次方项,各项的系数可以为-1,0,1,并且连续两项的系数不能均不为零。将系数按照0次方,1次方,2次方...的顺序进行排列,输出这组数据的个数和每一个系数的值。

分析:

对于任意一个数,我们可以将其分为以下三种情况:
1.   x是2的倍数 。

2.(x-1)/2是2 的倍数。

3.(x+1)/2是2 的倍数。

不断对x进行操作使得x为2的倍数,x/2,直到x=0;

代码实现:

#include<bits/stdc++.h>
using namespace std;

int main()
{
	int tt;
	cin >> tt;
	while(tt--)
	{
		long long int x;
		cin >> x;
		vector<int> a;
		while(x)
		{
			if(x%2==0)
			a.push_back(0);
			else{
				if((x-1)/2%2==0) //要使改变后的x/2为2的倍数,保证下一个系数不为1或-1
				{
					x--;
					a.push_back(1);//x值减小,此时对应次方项系数应为1
				}
				else{
					x++;
					a.push_back(-1);//x值增大,此时对应次方项系数应为-1
				}
			}
			x/=2;
		}
		int len=a.size();
		cout << len << endl;
		for(int i=0;i<len;i++)
		{
			cout << a[i] <<' ';
		}
		cout << endl;
	}
}

24/5/27

标签:948,int,tt,codeforces,cin,立方体,塔顶,倍数,div.2
From: https://blog.csdn.net/2301_79426686/article/details/139242824

相关文章

  • Codeforces Round 927 (Div. 3) D. Card Game 题解 贪心
    CardGame题目描述Twoplayersareplayinganonlinecardgame.Thegameisplayedusinga32-carddeck.Eachcardhasasuitandarank.Therearefoursuits:clubs,diamonds,hearts,andspades.Wewillencodethemwithcharacters‘C’,‘D’,‘H’,......
  • Codeforces Round #947 题解 (A~G)
    目录A.BazokaandMocha'sArrayB.378QAQandMocha'sArrayC.ChamoandMocha'sArrayD.PainttheTreeE.ChainQueriesF.SetG.ZimphaFanClubA.BazokaandMocha'sArray枚举每个循环移位判断.B.378QAQandMocha'sArray首先最小的数肯定得选,删掉最小的数的倍数......
  • Codeforces Round 947 (Div. 1 + Div. 2) E. Chain Queries
    本来决定开摆养生不打的,但11点半的时候点进去看到这个题是个疑似DS,写题的欲望瞬间高涨,然后就40min写了这个题然而赛中并不能提交,只好等到第二天早上再交一发,没想到还WA了一发才过首先这题如果我们能确定当前黑色点集的链的两个端点\(x,y\)的话,这个题就非常显然了只需要求出\((x......
  • 24.2.13 ~ 4.13 Codeforces Round 925 & 926 & 934 & 939 (Div.3 / Div.2 * 3)
    925Div.3Solve:A~G(7/7)Rank:95Rating:\(0+706=706\)(\(1400+206=1606\))发挥评价:Normal+本场没什么有价值题目。926Div.2Solve:A~DF(5/6)Rank:72Rating:\(706+575=1281\)(\(1606+225=1831\))发挥评价:Good本场没有什么失误。CF1929E*2300(me*2300)选......
  • Codeforces Round 947 (Div. 1 + Div. 2)
    Solve:A~ERank:425Rating:\(1744+195=1939\)(\(1894+95=1989\))发挥评价:Normal本场问题:E先WAon4,较快找出问题后修改WAon27,就又急了(重现上午),开始怀疑做法正确性未果,结果1h后才发现是代码出现问题。注意先检查代码漏洞而不是先怀疑正确性(尤其是错在后面时候,要是正......
  • Codeforces Global Round 12 C2. Errich-Tac-Toe (Hard Version) 题解 构造
    Errich-Tac-Toe(HardVersion)题目描述TheonlydifferencebetweentheeasyandhardversionsisthattokensoftypeOdonotappearintheinputoftheeasyversion.ErrichtogaveMonogonthefollowingchallengeinordertointimidatehimfromtakingh......
  • Codeforces Round 946 (Div. 3) G Money Buys Less Happiness Now(反悔贪心)
    MoneyBuysLessHappinessNow1.题目大意:有n天,每天可以赚x块钱,然后每天可以通过花\(C_{i}\)块钱购买1点快乐值,然后每天赚的钱至少要在下一天才能用,问最多能获得多少快乐值。2.解题思路:我们发现天数变得很多,不能像e题那样dp了,所以要用贪心。具体来讲,我们碰到当前能买的就直接......
  • Codeforces Round 946 (Div. 3)
    C.BeautifulTriplePairs题意:优美组的定义是一共三对有且只有一对对应的数字不相同,求有多少个优美三元组思路:对于只有三对,而且只有一对不同,首先看前面遍历过的三元组会对后面的三元组产生影响,若是不记录前面对后面三元组的次数,那么我们要进行两次循环O(n^2)会寄的,因此我们......
  • CodeForces 1965F Conference
    洛谷传送门CF传送门考虑题目可以看成天和人的匹配,因此判断单个日期区间\([l,r]\)可以考虑Hall定理,设\(N(S)\)为在\(S\)这些天有空的人的数量,定义\(S\)合法当且仅当\(|N(S)|\ge|S|\),那么\([l,r]\)合法当且仅当\(\forallS\subseteq[l,r]\),\(S\)合法。猜......
  • Codeforces 1974G Money Buys Less Happiness Now
    考虑到有一种贪心的思路就是能选就选。显然这是错的,因为可能存在后面更优的情况,即当\(c_i>c_j(i<j)\)时,选\(j\)肯定比选\(i\)更优,因为后面剩下的更多且中间也留下了一些。于是考虑反悔贪心。还是一样的,如果能选就一定选上。否则来说,考虑对于当前已经选了的中的最大......