首页 > 其他分享 >Codeforces Round #846 (Div. 2) 解题报告

Codeforces Round #846 (Div. 2) 解题报告

时间:2023-01-30 22:44:24浏览次数:82  
标签:846 cnt cout int Codeforces mid Div now 我们

前情提要:我是沙币

比赛链接

A. Hayato and

贪心,不大想讲
代码写的很丑

void solve (){
	vector<int> a;
	int n,x;
	cin >> n ;
	a.push_back(0); 
	for(int i=1;i<=n;++i) cin >> x,a.push_back(x);
	int t1=0,t2=0;
	for(int i=1;i<=n;++i) if(a[i]&1) t1++;else t2++;
	if((t1>=3)||((t1>=1)&&(t2>=2))){
		cout << "YES" << endl;
		int sum=0;
		if(t1>=3){
			for(int i=1;i<=n;++i){
				if(a[i]&1) {
					cout << i << " ";
					sum++;
					if(sum==3) break;
				}
			}
		}
		else {
			for(int i=1;i<=n;++i){
				if(a[i]&1){
					cout << i << " ";
					break;
				} 
			}
			for(int i=1;i<=n;++i){
				if(!(a[i]&1)){
					cout << i << " ";
					sum++;
					if(sum==2) break;
				}
			}
		}
		cout << endl;
	}
	else cout << "NO" << endl;
	 
}

B. GCD Partition

生动的体现了我数论方面的薄弱

考场上只想出来了一个 \(O(n\sqrt{\sum a_i})\) 的垃圾做法,就不展开了

我们发现,k=2 的时候一定是最优的,因为若 \(d\mid a \,,\,d\mid b\) 则一定有 \(d\mid a+b\)

所以我们发现,合并两个区间一定是不亏的

代码明天补上

D. Bit Guessing

不要问为什么没有 C ,问就是有 Hack 把 std 叉了

第一次在 CF 上做交互题,然后因为输出少一个空格挂掉了

自然考虑按位做,用一个指针 p 指向现在扫到了哪一位

我们发现,不能减到负数是一个十分讨厌的条件,所以我们要从小到大减

每一次减数,有两种可能

1.减的地方是 1
2.不是 1

关于第一种,我们直接令 p++ 就可以,而对于第二种情况,我们发现,当前位到下一个有 1 的这一段中,所有的位都会被翻转

具体的,如果情况为 1 ,则 1 的数量会下降 1,我们将这个位置加入答案

如果我们设增加数为 k,则下一位就在 p+k+1 的位置,我们将其加入答案,然后移动指针到其的下一位

void solve (){
   int cnt;
   cin >> cnt;
   int p=0,now=0,ans=0,re=cnt;
   while(re--){
   	cout << "- " << (1<<p) << endl;
   	cout.flush();
   	cin >> now;
   	cout.flush();
   	if(cnt==now+1){//减到了 1 上 
   		ans+=(1<<p); 
   		++p;
   	}
   	else {
   		int k=now-cnt+1;
   		ans+=(1<<(p+k));
   		p+=k+1;
   	}
   	cnt=now;
   }
   cout << "! " << ans << endl;

EF先鸽着,最早明天

标签:846,cnt,cout,int,Codeforces,mid,Div,now,我们
From: https://www.cnblogs.com/Benzenesir/p/17077462.html

相关文章

  • TypeDB Forces 2023 (Div. 1 + Div. 2, Rated, Prizes!)(持续更新)
    Preface猜结论场,很久没打比赛了然后赛前和ztc吹牛说每次隔一段时间来打CF就会有强运加持结果好家伙BCE全部秒出结论(而且我比赛时都证不来),而且写的A~E都是一发入魂凭借这......
  • Codeforces Global Round 2
    A  题解:枚举每个颜色的头和尾然后最大化另一端upd:赛时麻烦了,显然答案的一端为头或者尾,枚举另一端即可。#include<bits/stdc++.h>usingnamespacestd;typed......
  • 1.30 vp Codeforces Round #846 (Div. 2)
    A-HayatoandSchool、题意给出长度为n的序列a,要求判断是否存在三个数之和为奇数,若有则输出YES且输出这三个数的下标,否则输出NO思路数字和为奇数的情况只有奇+偶,......
  • TypeDB Forces 2023 (Div. 1 + Div. 2)
    题目链接A核心思路直接把其中一个数置为1就好了。//Problem:A.ExponentialEquation//Contest:Codeforces-TypeDBForces2023(Div.1+Div.2,Rated,Priz......
  • TypeDB Forces 2023 (Div. 1 + Div. 2) 题解
    更新中……A~D略。E.TheHarmonizationofXOR题目链接题意简述\(t\)组testcase,每组给定\(n,k,x\)三个数。求将\(1\simn\)划分成\(k\)个子序列(可以不连......
  • CF1787H Codeforces Scoreboard 题解
    鬼知道怎么会撞题的,甚至是没听过的OJ。首先不考虑对\(a_i\)取\(\max\),显然直接按照\(k\)降序排序最优。接下来考虑\(a_i\)的限制,如果取到了\(a_i\)一定放在最......
  • 1.29 vp Educational Codeforces Round 142 (Rated for Div. 2)
    A-GamingForces题意有n只怪兽,每个怪的血量是\(a_i\),有两种操作:1.直接消灭这只怪2.消灭两只血量为1的怪问最少需要多少次操作可以将怪全部杀死思路可以想到,操作二......
  • Codeforces Round #844 (Div. 1 + Div. 2, based on VK Cup 2022 - Elimination Roun
    CodeforcesRound#844(Div.1+Div.2,basedonVKCup2022-EliminationRound)[A-D]AParallelProjectionstandardinput/output1s,512MBBGoingt......
  • Codeforces Round #846 (Div. 2) B. GCD Partition
    B.GCDPartition参考题解链接:CodeforcesRound#846(Div.2)—Tutorial-Codeforces题意:给一个长度为n的序列,并将其分成连续的k块(k>1),得到序列......
  • Codeforces Round #847 (Div. 3)
    A.PolycarpandtheDayofPi先纯一下圆周率前30位,然后暴力就好了#include<bits/stdc++.h>usingstd::cin;usingstd::cout;usingstd::string;intread(){...}......