A. Doremy‘s Paint 3

今天第一次打CF,不过鼠鼠被气死了

先说说战况,今天一发没A(赛场上),生活真是无奈,废物女友真是一点用没有

心里也很烦,什么压力都自己扛着。每天想尝试改变什么,又被现实掣肘,或许抛弃掉所有愿望回炉重造才适合我吧。

题面就不粘贴了,给个图片和链接吧,粘贴效果不好

Problem - A - Codeforces

A. Doremy‘s Paint 3_第1张图片

 输入样例

5
2
8 9
3
1 1 2
4
1 1 4 5
5
2 3 3 3 3
4
100000 100000 100000 100000

输出样例

Yes
Yes
No
No
Yes

这一题怎么分析呢,重点是从等式入手,应该要能看出

b1=b3=b5=...b2n-1

b2=b4=b6=...b2n

这两条信息,这说明给出的数字只能是两种

如果两种数的 数量相差不超过一则可以组成good array

具体的我们创建map来存储数据计数和判断种类数

使用最值函数取出极值判断即可

#include
#include
#include
#include
#include 
#include 
using namespace std;
#define IOO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//const int maxLine=5000+10;
const int maxLine=100+10;
//#define DEBUG true
//int n,m,k;

int arr[maxLine];
//调用可以进行重定向 
void initRedict(){
	#ifdef DEBUG
	cout<<"执行重定向"<&a,const pair&b){
	return a.second>n;
	map mymap;
	for(int i=0;i>nums;
		mymap.clear();
		
		for(int j=0;j>temp;
			mymap[temp]++;
		}
		if (mymap.size()==1) cout<<"Yes";
		else if (mymap.size()>=3) cout<<"No";
		else {
			int minValue=min_element(mymap.begin(),mymap.end(),cmp)->second;
			int maxValue=max_element(mymap.begin(),mymap.end(),cmp)->second;
			if (abs(minValue-maxValue)<=1) cout<<"Yes";
			else cout<<"No";
		}
		cout<

我感觉这个代码是逻辑上最简洁的了

下面也贴一下赛场写的假题代码(因为没看出来只会有两种数字才合法这一规律qwq)

#include
#include
#include
#include
#include 
#include 
using namespace std;
#define IOO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//const int maxLine=5000+10;
const int maxLine=100+10;
//#define DEBUG true
int n,m,k;
// 拖堂的班级的人数 
int normalNums=0;
int arr[maxLine];
//调用可以进行重定向 
void initRedict(){
	#ifdef DEBUG
	cout<<"执行重定向"<>n;
	
	for(int i=0;i>nums;
		memset(arr,sizeof(arr),0);
		for(int j=0;j>arr[j];
		}
		sort(arr,arr+nums);
		long long sum=0;
		do{
			if (check(arr,nums)){
				flag=true;
				break;
			};
			sum++;
		}while(next_permutation(arr,arr+nums));
		if (flag) cout<<"Yes";
		else cout<<"No";
		cout<

全排列狠狠超市,记录一下自己犯蠢写假题写的代码,方便后面回来取笑自己

你可能感兴趣的:(c++,codeforce)