首页 > 其他分享 >题解 CF1370B

题解 CF1370B

时间:2022-11-30 09:25:46浏览次数:47  
标签:奇数 int 题解 scanf CF1370B 偶数

题解 CF1370B

这个题跟脑筋急转弯一样诶

\(gcd\) 这个东西他有很多种可能性,但是如果我们考虑最简单的数字性质奇偶,就会发现,其实所有偶数的 \(gcd\) 都是 \(2\) 对吧

所以,我们只需要把所有的数字按照

1 奇数 奇数
2 偶数 偶数

的情况组合,就能得到至少 \(n-1\) 个偶数

需要去掉的那两个数字从偶数或者奇数较多的一方去除掉就可以了

怎么取的情况分类讨论一下就可以了

#include<cstdio>
#include<vector>
using namespace std;
vector<int> v1,v2;
int T,n;
int a[2100];
int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		for(int i=1;i<=2*n;i++){
			scanf("%d",&a[i]);
		}
		if(n==2){
			puts("1 2");
			continue ;
		}
		for(int i=1;i<=2*n;i++){
			if(a[i]%2){
				v1.push_back(i);
			}else{
				v2.push_back(i);
			}
		}
		if(v1.size()%2){
			for(int i=0;i<v1.size()-1;i+=2){
				printf("%d %d\n",v1[i],v1[i+1]);
			}
			for(int i=0;i<v2.size()-1;i+=2){
				printf("%d %d\n",v2[i],v2[i+1]);
			}
		}else if(v1.size()>=4){
			for(int i=0;i<v1.size()-2;i+=2){
				printf("%d %d\n",v1[i],v1[i+1]);
			}
			for(int i=0;i<v2.size();i+=2){
				printf("%d %d\n",v2[i],v2[i+1]);
			}
		}else{
			for(int i=0;i<v1.size();i+=2){
				printf("%d %d\n",v1[i],v1[i+1]);
			}
			for(int i=0;i<v2.size()-2;i+=2){
				printf("%d %d\n",v2[i],v2[i+1]);
			} 
		}		
		v1.clear();
		v2.clear();
	}
	return 0;
}

标签:奇数,int,题解,scanf,CF1370B,偶数
From: https://www.cnblogs.com/Tyrue-blog/p/16937396.html

相关文章

  • 题解 CF471A
    题解CF471A这个题看题解都写得非常的冗余,不简洁,这里提供一种特别神奇的做法首先他需要我们判断这里是否有相同的数字,并且还要通过这个相同的个数来进行判断所以,我们可......
  • 题解 CF1719B
    题解CF1719B这个题观察样例,可以发现,被选中的两个数,一定是相邻的两个数。所以,我们只需要先循环一遍,看看有多少数满足,然后判断是否等于n。如果等于说明可以,先输出YES......
  • 题解 SP18965
    题解SP18965题目大意:奶牛很厌烦等待,奶牛i在它的截止时间$d_i(1\leqd_i\leq10,000)$前挤\(g(1\leqg_i\leq1000)\)的奶,否则将不能挤奶。时间t开始时为0,......
  • 题解 CF518B
    题解CF518B这个题最暴力的做法就是对于每个\(s_i\)都在b字符串里扫一遍但是\(s.len\leq2\times10^5\)所以肯定过不了但是我们思考一下,这里的字母对应其实可以......
  • 题解 CF1719A
    题解CF1719A这个题判断\(n+m\)的奇偶性就可以了。奇数输出Burenka,偶数输出Tonya。#include<cstdio>#include<iostream>#include<cmath>#include<algorithm>......
  • 题解 CF1716B
    题解CF1716B这是一个纯纯的构造题我们要构造n个序列,每个序列他的元素\(a_i\)在第i个位置上的数量都应该比上一个序列的数量并且这种序列只能通过交换两个数字来......
  • 题解 CF1091C
    题解CF1091C这个题乍一看,好像有点像约瑟夫问题,但是写完了之后会发现,就会发现TLE了因为\(n\le10^9\),而且用约瑟夫问题写的话每次都会跳k步,肯定会超时超时代码这里......
  • 题解 CF1080B
    题解CF1080B莫名就卡到了最优解第一,但是代码又长又臭,很明显我代码实现能力太弱了。。。直接开始讲,我都不知道怎么讲分情况讨论如果\(l=r\):我们只需要考虑这个位置......
  • 题解 CF1253B
    题解CF1253B这个题是一个模拟题只需要注意几点:1.同一天同一个人只能进入一次2.同一天同一个人只能出去一次3.一天中一个人没进来就不能出去然后我们用vis数组......
  • 题解 CF1711B
    题解CF1711B这个题说明了,蛋糕的个数只跟好友的对数有关,跟去的人或者是单个的人的个数是无关的(是不是单个的人去没有蛋糕吃)所以我们就要考虑,怎样才能满足吃掉的蛋糕正好......