首页 > 其他分享 >Codeforces Round 958 (Div. 2)补题

Codeforces Round 958 (Div. 2)补题

时间:2024-07-16 17:57:59浏览次数:11  
标签:958 cout int IOS cin ++ 补题 Div define

文章目录

A题 (拆分多集)

在这里插入图片描述
 本题在赛时卡的时间比较久,把这题想复杂了,导致WA了两次。后来看明白之后就是将n每次转换成k-1个1,到最后分不出来k-1个1直接一次就能分完,即结果加一;

#include <bits/stdc++.h>
#define int long long 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define fi first
#define se second
#define PII pair <int,int>
#define ALL(x) x.begin(),x.end()
#define lowbit(x) (x&(-x))
using namespace std;
const int N = 1e6+5;
int a[N],b[N];

void solve () {
	int n,k;
	cin>>n>>k;
	if(n==1) {
		cout<<0<<'\n';return;
	}
	int pos=0;
	while (n>k) {
		n-=k-1;
		pos++;
	} 
	cout<<pos+1<<'\n';
}

signed main () {
	IOS;
	int T =1;
	cin>>T;
	while(T--) solve ();
	return 0;
}

B题(获得多数票)

在这里插入图片描述
题意就是给出一段字符串,字符串里面只包含0,1。然后可以找到 [ l , r ] [l,r] [l,r]区间里面,将区间里面的字符串变成一个字符,这个字符是0或1,到底是哪个,图片中有详细描述。
思路:将字符串里面连续的0全部转化成一个0,再比较0,1个数

#include <bits/stdc++.h>
#define int long long 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define fi first
#define se second
#define PII pair <int,int>
#define ALL(x) x.begin(),x.end()
#define lowbit(x) (x&(-x))
using namespace std;
const int N = 1e6+5;
int a[N],b[N];

void solve () {
	int n;cin>>n;
	string s;cin>>s;
	int cnt=0,ans=0;int j;
	for (int i=0;s[i]!='\0';) {
		if (s[i]=='0') {
			cnt++;
			j=i;
			while (s[j]=='0')j++;
			i=j;
		}
		else {
			i++;ans++;
		}
	} 
	if (cnt>=ans)cout<<"NO"<<'\n';
	else cout<<"YES"<<'\n';	
}

signed main () {
	IOS;
	int T =1;
	cin>>T;
	while(T--) solve ();
	return 0;
}

C题(固定 OR 的递增序列)

在这里插入图片描述
题意:给一个数字n,写出一个序列,要求递增,并且两项之间或运算为n
思路:根据我的理解,就是要把原数字的二进制上的数字1换成零,例如23的二进制10111。后续的数字如果要符合条件就要在10111有1的地方换成0.例如10110,10101之类的。这时就要考虑如何将1换掉了。利用二进制的特点,用23不断除以二,判断是否是奇数(因为只有除以2为奇数,二进制上才为1),是奇数的话,就可以减去 2 n 2^n 2n(这样可以直接将二进制上的1变成0)。最后逆序输出

#include <bits/stdc++.h>
#define int long long 
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define fi first
#define se second
#define PII pair <int,int>
#define ALL(x) x.begin(),x.end()
#define lowbit(x) (x&(-x))
using namespace std;
const int N = 1e6+5;
int a[N],b[N];

void solve () {
	int n;cin>>n;
	if (n==1||n==2) {
		cout<<1<<'\n'<<1<<'\n';return ;
	}a[0]=n;
	int k=0;
	int t=n,pos=1;
	while (t) {
		if (t&1) {
			a[++k]=n-pos;
		}
		pos*=2;t/=2;
	}
	if (a[k]==0) {
		cout<<1<<'\n'<<n<<'\n';return;
	}
	cout<<k+1<<'\n';
	for (int i=k;i>=0;i--) {
		cout<<a[i]<<' ';
	}
	cout<<'\n';
}

signed main () {
	IOS;
	int T =1;
	cin>>T;
	while(T--) solve ();
	return 0;
}

标签:958,cout,int,IOS,cin,++,补题,Div,define
From: https://blog.csdn.net/a13997460860/article/details/140457929

相关文章

  • CodeForces 1983A Array Divisibility
    题目链接:CodeForces1983A【ArrayDivisibility】思路    按规律可得,当a[i]=i时满足题目要求。代码#include<functional>#include<iostream>#include<algorithm>#include<queue>#include<stdio.h>#include<string>#include<cstring......
  • 牛客小白月赛98+ABC362补题
    A-骰子魔术_牛客小白月赛98(nowcoder.com)直接判断这个数在数组里有没有就行代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;lln,x;lla[505];voidsolve(){for(inti=1;i<=n;i++)cin>>a[i];for(inti=1;i<=n;i++){......
  • Codeforces Round #956 (Div. 2) and ByteRace 2024
    目录写在前面ABCDEF写在最后写在前面比赛地址:https://codeforces.com/contest/1983孩子们我回来了。这场实在是太对胃口,vp不到1h就4题了之后EF也口出来了,然而赛时睡大觉去了没打真是亏死。感觉自己的文字能力已经很牛逼了,不需要再多练了,以后的题解都会写得简略些。A......
  • [ABC206E] Divide Both 的题解
    题目大意求出从\(l\)至\(r\)中满足以下条件的\((x,y)\)的个数。\(\gcd(x,y)\ne1\)且\(\gcd(x,y)\nex\)且\(\gcd(x,y)\ney\)。其中\(1\lel\ler\le10^6\)。思路正难则反,所以可以求出所有互质或者是相互倍数的\((x,y)\)的对数,在将其减去所有的方案数就是......
  • 潜水员戴夫dave the diver下载
    文件下载:    qb种子链(磁力链接):https://byruthub.org/index.php?do=download&id=125806        夸克网盘链接:https://pan.quark.cn/s/cfc4eca5d105        提取码:zVxZ        百度网盘链接:https://pan.baidu.com/s/1Bzi7BBSGu2dj2VAOt88X......
  • Codeforces 956 Div2
    期末考试结束,开始训练A.ArrayDivisibility----------------------------------题解----------------------------简单的构造题,要让数组a里面的下表为1<=k<=n的数以及下表为(k的因数)的数加起来的和能被K整除,那我们只需要让每一个k的因数都能被k整除就行了,直接让每一个编号i......
  • AtCoder Beginner Contest 362 补题记录(A~E,G)
    A分三类情况讨论即可。voidsolveqwq(){intr=io.read(),g=io.read(),b=io.read();stringqwq=io.readstring();if(qwq=="Blue")printf("%lld\n",min(r,g));elseif(qwq=="Red")printf("%lld\n",......
  • 【网页前端设计HTML】水平线、div、自闭合标签及块元素和行内元素、特殊符号
    使用所分享的知识,还不能够完成下图的设计,观察一下,我们还有什么知识没讲呢?聪明的你一定能看到:一条长长的线分隔开每一个科目,但是这条长线怎么表示,用什么标签呢?一、水平线标签我来告诉你,这条长长的线,我们称之为“水平线”。在HTML中,我们可以使用“hr标签”来实现一条水......
  • CodeForces Round 957 (Div3)
    蒟蒻找了一些简单题做了而已,别太在意……比赛链接CodeForcesRound957(Div3)A.OnlyPluses题意三个正整数\(a,b,c\),有五次操作机会。每次操作:选取\(a,b,c\)中任意一个数,将这个数加上一。要求最大化\(a\timesb\timesc\)。思路很直接的贪心题。假设有三个正整......
  • Codeforces Round 957 (Div. 3) A-G 题解
    CodeforcesRound957(Div.3)A-G题解A.OnlyPluses枚举思路:枚举\(a\),\(b\),\(c\)增加的次数,维护最值即可。代码:#include<bits/stdc++.h>usingnamespacestd;#definefffirst#definesssecond#definepbpush_back#defineall(u)u.begin(),u.end()#......