A. Doremy‘s Paint 3

2023-10-29 10:12
文章标签 paint doremy

本文主要是介绍A. Doremy‘s Paint 3,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

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

Problem - A - Codeforces

 输入样例

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<int,int>来存储数据计数和判断种类数

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

#include<iostream>
#include<map>
#include<algorithm>
#include<queue>
#include<string> 
#include<string.h> 
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 DEBUGcout<<"执行重定向"<<endl; //重定向输入	freopen("../redict/demo/demo_in.txt","r",stdin); //重定向输出 覆写 
//	freopen("../redict/demo/demo_out.txt","w",stdout); #endif
} 
// 调用可以取消重定向 
void breakEnd(){#ifdef DEBUGfclose(stdin);
//	fclose(stdout); #endif 
}
bool cmp(const pair<int,int>&a,const pair<int,int>&b){return a.second<b.second;
}
int temp;
int main(){
//	initRedict();IOO;int n;cin>>n;map<int,int> mymap;for(int i=0;i<n;i++){int nums;cin>>nums;mymap.clear();for(int j=0;j<nums;j++){cin>>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<<endl;} return 0;
} 

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

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

#include<iostream>
#include<map>
#include<algorithm>
#include<queue>
#include<string> 
#include<string.h> 
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 DEBUGcout<<"执行重定向"<<endl; //重定向输入	freopen("../redict/demo/demo_in.txt","r",stdin); //重定向输出 覆写 
//	freopen("../redict/demo/demo_out.txt","w",stdout); #endif
} 
// 调用可以取消重定向 
void breakEnd(){#ifdef DEBUGfclose(stdin);
//	fclose(stdout); #endif 
}inline bool check(int arr[maxLine],int len){int initNums=arr[0]+arr[1];for(int i=0;i<len-1;i++){if (arr[i]+arr[i+1]!=initNums){return false;}} return true;
} 
int main(){
//	initRedict();IOO;int n;cin>>n;for(int i=0;i<n;i++){int nums;cin>>nums;memset(arr,sizeof(arr),0);for(int j=0;j<nums;j++){cin>>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<<endl;} return 0;
} 

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

这篇关于A. Doremy‘s Paint 3的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/299960

相关文章

GUI编程08:画笔paint

本节内容视频链接:10、画笔paint_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p=10&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5 package com.yundait.lesson03;import java.awt.*;import java.awt.event.Wind

Winform中在窗体中的Paint事件中重绘会导致递归问题?

在 WinForms 应用程序中,如果在窗体的 Paint 事件处理程序中不断调用 Invalidate 方法,确实可能会导致递归调用的问题。这是因为每次调用 Invalidate 方法时,都会向消息队列添加一个绘制消息,当消息队列中的绘制消息被处理时,会触发 Paint 事件。如果 Paint 事件处理程序中又调用了 Invalidate,就会形成一个循环,导致递归调用 Paint 事件,这

Android 画布canvas drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)

void    drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) Draw the specified bitmap, scaling/translating automatically to fill the destination rectangle. 绘制指定的位图,自动缩放/平移以填充目标矩形。没有返回值。该方法有三个参

Android 画布canvas drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)

void    drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint) Draw the bitmap using the specified matrix. 使用指定的矩阵绘制位图。也就是可以通过matrix的属性来控制如何绘制位图。该方法有三个参数,分别是: Bitmap bitmap:要绘制的位图 Matrix matrix:绘制位图

Android Canvas 和Paint的用法 转自http://blog.csdn.net/u010947098/article/details/44574171

首先,介绍的是Canvas的基本方法 方法签名简要说明drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)绘制弧drawBitmap(Bitmap bitmap, Rect src, Rect dst,Paint paint)在指定点绘制从源位图中"挖取"的一块drawBi

题解:CF1975D(Paint the Tree)

题解:CF1975D(Paint the Tree) 看到有两个点在移动,好烦人! 那就直接“改题”:有一个点在一棵树上移动,每次可以移动到相邻的一个点,问至少要移动多少次才能够遍历整棵树。 这个题是不是似曾相识?显然 n n n 个点中,有一个点作为起点,还有一个点最后遍历,只需去一次,剩下的 n − 2 n - 2 n−2 个点则是要一去一回。为了使此时最少,我们考虑让最后遍历的那个

C#中控件Control的Paint事件和OnPaint虚函数的区别

句柄 : 句柄,是整个Windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个4字节(64位程序中为8字节)长的数值,来标识应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄。     重写 : 当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一

WM_Paint 消息疑问解析

1. 系统何时发送WM_PAINT消息?    系统会在多个不同的时机发送 WM_PAINT 消息:当第一次创建一个窗口时,当改变窗口的大小时,当把窗口从另一个 窗口背后移出时,当最大化或最小化窗口时,等等,这些动作都是由 系统管理的,应用只是被动地接收该消息,在消息处理函数中进行绘制操作;大多数的时候应用也需要能够主动引发窗口中的绘制操作,比如当窗口显示的数据改变 的时候,这一般是通过 Inv

C#截获其它窗口的WM_PAINT 消息

在C#底下如何截获其它窗口的WM_PAINT 消息啊? 自己窗口可以这样截获 protected override void WndProc( ref Message m ) { switch(m.Msg) { case WM_PAINT: { } }

Android paint字体的使用

转自:http://blog.csdn.net/ljb_blog/article/details/10150871 一、Android中Paint字体属性的设置: 在Android SDK中使用Typeface类来定义字体,可以通过常用字体类型名称进行设置,如设置默认黑体: Paint mp = new paint(); mp.setTypeface(Typeface.DEFAULT