首页 > 其他分享 >寒假训练第一周

寒假训练第一周

时间:2023-01-08 03:44:05浏览次数:51  
标签:训练 第一周 int cin long else -- yao 寒假

寒假训练第一周

1.6日codeforces训练赛

A题 Medium Number

这道题的思路很简单,主要是一个多次输入的条件。这道题解题方式有多种,我是通过一个sort函数进行排序,然后输出第二个数就可以了。

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a;
	cin >> a;
	while(a--){
		int b[4];
		for(int i=0;i<3;i++){
			cin >> b[i];
		}
		sort(b,b+3);
		cout << b[1] << "\n";
	}
	return 0;
}

B题 Yes-Yes?

这道题的思路是通过一个find函数看输入的的字符串是不是能够在一个标准字符串中找到。然后判断条件是a.find(b)!=-1;a是标准字符串,b为输入字符串,代码如下:

#include<bits/stdc++.h> 
using namespace std;
int main(void)
{
	int t;
	cin >> t;
	while(t--)
	{
		string a = "YesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYes";
		string b;
		cin >> b;
		if(a.find(b)!=-1)
			cout << "YES\n" ;
		else	
			cout << "NO\n" ;
	} 
	return 0;
} 

C题 Atilla's Favorite Problem

这道题的思路就是通过一个for循环输入一个字符串数组c[i],c[i]-96就是字母表中的位置,然后通过max来比较大小。代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a;
	cin >> a;
	while(a--){
		int b,max=0;
		cin >> b;
		char c[100];
		for(int i=0;i<b;i++){
			cin >> c[i];
			if(c[i]-96>max)
				max=c[i]-96;
		}
		cout << max<< "\n";
	}
	return 0;
}

D题 Lost Permutation

这道题的思路将输入的数字进行一个标记,然后再通过一个sum,将未输出的数字加起来,然后通过比较sum与n的大小比较再进行一次判断,然后通过一个计数器cnt来统计出一共合格的数字。代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a;
	cin >> a;
	while(a--){
		int m,n,x;
		cin >> m >> n;
		int b[110]={0};
		for(int i=1;i<=m;i++){
			cin >> x;
			b[x]=1;
		}
		int cheak=0,sum=0,cnt=0;
		for(int i=1;;i++){
			if(b[i]==0){
			sum+=i;	
			cnt++;
			b[i]=1;
			}
			if(sum==n)
				break;
			if(sum>n){
				cheak=1;
				break;
			}
		}
		for(int i=1;i<=m+cnt;i++){
			if(b[i]==0){
				cheak=1;
				break;
			}
		}
		if(cheak==1)
			cout << "NO\n";
		else
			cout << "YES\n";
	}
	return 0;
}

Challenging Valleys

这道题的思路就是通过一个判断cheak,看之前是不是出现了谷点,然后看后面是不是还会出现峰点,如果后面又一次出现了谷点,则直接退出循环,输入no。代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a;
	cin >> a;
	while(a--){
		int b,cheak=0,mo=0;
		cin >> b;
		int c[b+2];
		for(int i=0;i<b;i++){
			cin >> c[i];
		}
		for(int j=1;j<b;j++){
			if(c[j-1]<c[j])
			cheak=1;
			if(c[j-1]>c[j]&&cheak==1){	
				mo=1;
					break;
			}
			
		}
		   if(mo==1)
			   cout << "No\n";
		   else
			   cout << "Yes\n";
	}
	return 0;
}

F题 Binary Inversions

这道题的思路就是通过一个枚举,三种情况,一种是不变,再一种是将最前面的0变为1,最后一种是将最后的1变为0,然后比较三个数的max值,因为这道题的值比较小,这样的输出是可以满足条件的。代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long int a;
	cin >> a;
	while(a--){
		int b;
		cin >> b;
		long long int c1[b+1],c2[b+1],c3[b+1],cnt1=0,cnt2=0,cnt3=0,sum=0;
		for(int i=0;i<b;i++){
			cin >> c1[i];
			c2[i]=c1[i];
			c3[i]=c1[i];
		}
		for(int i=0;i<b;i++){
			if(c2[i]==0){
				c2[i]=1;
				break;
			}
		}
		for(int i=b-1;i>=0;i--){
			if(c3[i]==1){
				c3[i]=0;
				break;
			}
		}
		for(int i=0;i<b;i++){
			if(c1[i]==0){
				cnt1+=sum;
			}else
				sum++;
		}
		sum=0;
		for(int i=0;i<b;i++){
			if(c2[i]==0){
				cnt2+=sum;
			}else
				sum++;;
		}
		sum=0;
		for(int i=0;i<b;i++){
			if(c3[i]==0){
				cnt3+=sum;
			}else
				sum++;
		}
		cout << max(cnt1,max(cnt3,cnt2))<<"\n";
		
	}
	return 0;
}

还需要注意的是,需要注意变量类型,如果是int的话数据就会越界。

G题 Quests

H题SlavicG's Favorite Problem

I题The Humanoid

这道题当时的思路就很简单了,先是对输入的数组进行一个sort排序,然后再从小到大进行一个判断,能击败,能击败的话,就得到一半的能量值。然后就如果不能吃下去的话,就可以喝能量药水了,喝的顺序有223 322 232三种,然后分别比较取最大值就可以了输出了。代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long int a;
	cin >> a;
	while(a--){
		long long int n ,h;
		cin >> n >> h;
		long long int x=0,x1=0,x2=0,x3=0,y[n+2],h1;
		h1=h;
		for(int i=1;i<=n;i++){
			cin >> y[i];
		}
		sort(y+1,y+1+n);
		int yao=1;
		for(int i=1;i<=n;i++){
			if(h>y[i]){
				x1++;
				h+=y[i]/2;
			}
			else{
				if(yao==1){
					h*=2;
					i--;
					yao++;
				}
				else if(yao==2){
					h*=2;
					i--;
					yao++;
				}
				else if(yao==3){
					h*=3;
					i--;
					yao++;
				}
				else
					break;
			}
		}
		x=max(x,x1);
		h=h1;
		yao=1;
		for(int i=1;i<=n;i++){
			if(h>y[i]){
				x2++;
				h+=y[i]/2;
			}
			else{
				if(yao==1){
					h*=2;
					i--;
					yao++;
				}
				else if(yao==2){
					h*=3;
					i--;
					yao++;
				}
				else if(yao==3){
					h*=2;
					i--;
					yao++;
				}
				else
					break;
			}
		}
		x=max(x,x2);
		h=h1;
		yao=1;
		for(int i=1;i<=n;i++){
			if(h>y[i]){
				x3++;
				h+=y[i]/2;
			}
			else{
				if(yao==1){
					h*=3;
					i--;
					yao++;
				}
				else if(yao==2){
					h*=2;
					i--;
					yao++;
				}
				else if(yao==3){
					h*=2;
					i--;
					yao++;
				}
				else
					break;
			}
		}
		x=max(x,x3);
		cout << x << "\n";
	}
	return 0;
}

J题Make It Round

这道题就是通过看2 5的数量,如果2的数量大于5,就补充5的倍数,如果大于可以增加的最大倍数,就退出循环,反之亦然,然后再补充10的倍数,直接模拟就可以了,代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long int a;
	cin >> a;
	while(a--){
		long long int n,m,x,y,cnt1=0,cnt2=0,mo=1;
		cin >> n >> m;
		x=n,y=n;
		while(1){
			if(x%2!=0){
				break;
			}
			else
			{
				cnt1++;
				x/=2;
			}	
		}
		while(1){
			if(y%5!=0){
				break;
			}
			else
			{
				cnt2++;
				y/=5;
			}	
		}
		while(1){
			if(cnt1<cnt2){
				if(mo*2>m)
					break;
				else{
					cnt2--;
					mo*=2;
				}
			}
			else if(cnt1>cnt2){
				if(mo*5>m)
					break;
				else{
					cnt1--;
					mo*=5;
				}
			}
			else 
				break;
		}
		while(1){
			if(mo*10>m)
				break;
			else
				mo*=10;
		}
		cout << m/mo*mo*n << "\n";
	}
	return 0;
}

K题Thermostat(补题)

这道题当时是没啥思路的,后面听了别人的讲解和代码,发现这个其实也可以通过模拟进行解决,先找出初始温度到目标温度是不是大于或等于x,不符合又看初始温度a到两边边界的差的绝对值是不是>=x,再进行一次判断,然后多次累加,但是最多只有三次,多了之后就会陷入死循环,因为一直不可能达到目标,然后自己根据别人的代码自己写了一遍,代码如下:

#include<bits/stdc++.h>  
using namespace std;
int main()
{
	int t;
	cin >> t;
	while(t--)
	{
		long long int l,r,x,a,b;
		cin >> l >> r >> x;
		cin >> a >> b;
		if(a==b)
		{
			cout << 0 << "\n";
			continue;		
		}
		int sum=1;
		int cheak=0;
		long long int  mo = abs(a-b);
		while(mo<x)
		{
			sum++;
			int x1 = max(a-l,r-a);
			if(sum>4||x1<x)
			{
				cheak=1;
				break;
			}
			mo = 0;
			int a1 = a;
			if(a-l>=x)
			{
				a = l;
				mo = abs(a-b);
			}
			if(r-a1>=x&&r-b>mo)
			{
				a = r;
				mo = abs(a-b);
			}
		}
		if(cheak==1)
			cout << -1 << "\n";
		else
			cout << sum << "\n";
	} 
	return 0;
} 

L题Advantage

这道题的思路很简单,我是通过一个sort函数取出最大值以及第二大的值,然后遍历看数字判断出最大值,然后再遍历数组看数组中的这个元素是不是max,如果不是,则用这个元素-max,如果是max,则用max-第二大的数字。代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a;
	cin >> a;
	while(a--){
		long long int b;
		cin >> b;
		long long int c[b+1],max=0,d[b+1];
		for(long long int i=0;i<b;i++){
			cin >> c[i];
			d[i]=c[i];
			if(c[i]>max)
				max=c[i];
		}
		sort(d,d+b);
		for(long long int i=0;i<b;i++){
			if(c[i]!=max)
		       cout << c[i]-max << " ";
			if(c[i]==max)
				cout << max-d[b-2] << " ";
		}
		cout << "\n";
	}
	return 0;
}

因为这个数据并不是很大,所以很多题都可以暴力枚举。

标签:训练,第一周,int,cin,long,else,--,yao,寒假
From: https://www.cnblogs.com/molinyuni/p/17034033.html

相关文章

  • 第一周训练赛2
    ProblemA题目描述https://atcoder.jp/contests/abc266/tasks/abc266_a?lang=en代码#include<iostream>usingnamespacestd;intmain(){stringS;whi......
  • 寒假集训——基础数论
    开篇\(————\sum\)的本质\(\sum\)其实可以理解为for循环例如$$\sum_{i=1}^{n}i$$其实就是代码中intans=0;for(inti=1;i<=n;i++)ans+=a[i];ans的值求......
  • 代码随想录算法训练营第11天
    今日刷题3道:20.有效的括号,1047.删除字符串中的所有相邻重复项,150.逆波兰表达式求值● 20.有效的括号题目链接/文章讲解/视频讲解:https://programmercarl.com......
  • Pytorch图像分类训练框架
    Pytorch图像分类训练框架使用pytorch进行图像分类训练是一个大部分代码可复用的过程,我将在kaggle比赛PaddyDoctor中写的训练代码抽取出来,方便以后图像分类任务使用。代......
  • 寒假集训第一期
    题目来源:https://vjudge.net/contest/536804A题EpicGame题面:SimonandAntisimonplayagame.Initiallyeachplayerreceivesonefixedpositiveintegerthatdoe......
  • 代码随想录算法训练营第10天
    今日刷题2道:先简单复习了栈和队列的理论基础,然后做题:232.用栈实现队列,225.用队列实现栈。ps:昨天不想学习,所以今天补回来,出来混总是要还的啊。● 232.用栈实现队列......
  • 第一周训练赛 B-Jumping on Walls
    题目描述Vasyaplaysacomputergamewithninjas.AtthisstageVasya'sninjashouldgetoutofadeepcanyon.Thecanyonconsistsoftwoverticalparallelwal......
  • 代码随想录算法训练营第10天 | 232. 用栈实现队列 225. 用队列实现栈
    232.用栈实现队列文章:代码随想录(programmercarl.com)思路:使用栈来模式队列的行为,如果仅仅用一个栈,是一定不行的,所以需要两个栈一个输入栈,一个输出栈,这里要注意输入栈......
  • 【深度学习】YOLOv5快速开始自定义训练与检测(附带模板项目)
    ✨YoLov5yolov5原仓库地址https://github.com/ultralytics/yolov5更多详细信息可阅读官方文档✨项目说明项目介绍此项目主要用于构建yolov5-3.1训练及检测环境......
  • 第四次限时训练题目大意及ac代码
    第四次限时训练题目大意及ac代码Atilla'sFavoriteProblem题目大意accode#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){......