首页 > 其他分享 >题解:Toyota Programming Contest 2024#9(AtCoder Beginner Contest 370)

题解:Toyota Programming Contest 2024#9(AtCoder Beginner Contest 370)

时间:2024-09-07 21:54:08浏览次数:10  
标签:tmp AtCoder Contest int 题解 void while getchar

总体情况

这次手速够快:ABC in 10min,ABCDE in 30min。

A - Raise Both Hands

思路

分类讨论很简单的。

注意一定要判断 \(0,0\) 这种情况。

Code

// Problem: A - Raise Both Hands
// Contest: AtCoder - Toyota Programming Contest 2024#9(AtCoder Beginner Contest 370)
// URL: https://atcoder.jp/contests/abc370/tasks/abc370_a
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
//#define int long long
namespace gtx{
//	Fast IO
	void read(int &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void read(char &x){do{x=getchar();}while(x==' '||x=='\n'||x=='\r');}
	void write(char x){putchar(x);}
	void write(int x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');};
	}
	void write(int x,char y){write(x);write(y);}
	signed main(){
		int a,b;
		cin >> a>>b;
		cout << (a&&b?"Invalid":(a?"Yes":(b?"No":"Invalid")));
		return 0;
	}
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
//	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int T = 1;
//	gtx::read(T);
	while(T--) gtx::main();
	return 0;
}

B - Binary Alchemy

思路

这个直接模拟。

Code

// Problem: B - Binary Alchemy
// Contest: AtCoder - Toyota Programming Contest 2024#9(AtCoder Beginner Contest 370)
// URL: https://atcoder.jp/contests/abc370/tasks/abc370_b
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
//#define int long long
namespace gtx{
//	Fast IO
	void read(int &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void read(char &x){do{x=getchar();}while(x==' '||x=='\n'||x=='\r');}
	void write(char x){putchar(x);}
	void write(int x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');};
	}
	void write(int x,char y){write(x);write(y);}
	const int MAXN =120;
	int n,a[MAXN][MAXN];
	signed main(){
		read(n);
		for(int i = 1;i<=n;i++){
			for(int j = 1;j<=i;j++) read(a[i][j]);
		}
		int now = 1;
		for(int i = 1;i<=n;i++){
			if(now>=i) now = a[now][i];
			else now = a[i][now];
		}
		write(now);
		return 0;
	}
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
//	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int T = 1;
//	gtx::read(T);
	while(T--) gtx::main();
	return 0;
}

C - Word Ladder

思路

最小此时明显就是每一个位置上面不一样的位置之和。

于是我们只需要保证字典序最小就行。

考虑怎么做到字典序最小。

  • 对于 \(a_i>b_i\) 的操作,它一定会将字典序变小,我们一定要先执行这些操作,并按照 \(i\) 从小到大执行。
  • 对于 \(a_i<b_i\) 的操作,它一定会将字典序变大,我们一定要后执行这些操作,并按照 \(i\) 从大到小执行。

Code

// Problem: C - Word Ladder
// Contest: AtCoder - Toyota Programming Contest 2024#9(AtCoder Beginner Contest 370)
// URL: https://atcoder.jp/contests/abc370/tasks/abc370_c
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
//#define int long long
namespace gtx{
//	Fast IO
	void read(int &x){
		x = 0;int h = 1;char tmp;
		do{tmp=getchar();if(tmp=='-')h*=-1;}while(!isdigit(tmp));
		while(isdigit(tmp)) x*=10,x+=tmp-'0',tmp=getchar();
		x*=h;
	}
	void read(char &x){do{x=getchar();}while(x==' '||x=='\n'||x=='\r');}
	void write(char x){putchar(x);}
	void write(int x){
		if(x<0) putchar('-'),x=-x;int st[200]={0},tot=0;
		do{st[++tot]=x%10,x/=10;} while(x);
		while(tot){putchar(st[tot--]+'0');};
	}
	void write(int x,char y){write(x);write(y);}
	string a,b;
	vector<int> v1,v2;
	signed main(){
		cin >> a >>b;
		for(int i = 0;i<a.size();i++){
			if(a[i]==b[i]) continue;
			if(a[i]<b[i]) v2.push_back(i);
			else v1.push_back(i);
		}
		reverse(v2.begin(),v2.end());
		cout << v1.size()+v2.size() << endl;
		for(int i:v1){
			a[i] = b[i];
			cout << a << endl;
		}
		for(int i:v2){
			a[i] = b[i];
			cout << a << endl;
		}
		return 0;
	}
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
//	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int T = 1;
//	gtx::read(T);
	while(T--) gtx::main();
	return 0;
}

标签:tmp,AtCoder,Contest,int,题解,void,while,getchar
From: https://www.cnblogs.com/gutongxing/p/18402202

相关文章

  • 天翼云存储SpinTires问题解析:d3dx9_43.dll文件丢失应对指南
    在使用天翼云存储或运行SpinTires等游戏时,有时会遇到系统提示“d3dx9_43.dll文件丢失”的错误。这个问题通常是由于DirectX组件中的d3dx9_43.dll文件未正确安装、损坏或丢失所导致的。以下是一些应对指南,帮助您解决这一问题:一、了解d3dx9_43.dll文件的重要性d3dx9_43.dll是D......
  • 东方博宜oj题解1161-1165(c++)
    各位读者们,抱歉,因为最近的时间原因,所以更新频率比较低。1161:1161-元素插入有序数组-东方博宜OJ#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn,s,c; cin>>c>>n; inta[n];//定义数组 for(inti=0;i<n;i++){ cin>>a[i]; } s=n;//设c是最大的......
  • 洛谷 P4829 kry loves 2048——题解
    洛谷P4829题解传送锚点摸鱼环节kryloves2048题目背景kls是一个人赢。题目描述kls最近在玩一款类似2048的游戏,规则是这样的:一开始,有\(n\)个方块,每个方块上有一个\(1\)到\(m\)的整数。kls可以进行两种操作:选择两个数字相同的方块(不一定要相邻),将它们合并成一个数字为......
  • AtCoder Beginner Contest 369
    A-369(abc369A)题目大意给定两个数\(a,b\),问有多少个整数\(x\),使得\(a,b,x\)经过某种排列后成为等差数列,解题思路就三种情况:\(xab\),\(axb\),\(abx\),三种情况都求出来,然后放到set去重即为答案。中间的情况要判断是否是实数。神奇的代码#include<bits/stdc++.h>using......
  • 【题解】【动态规划】—— [NOIP2001 普及组] 装箱问题
    【题解】【动态规划】——[NOIP2001普及组]装箱问题[NOIP2001普及组]装箱问题题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.题意解析2.AC代码2.1.二维d......
  • 【题解】—— [NOIP2005 普及组] 陶陶摘苹果
    【题解】——[NOIP2005普及组]陶陶摘苹果[NOIP2005普及组]陶陶摘苹果题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.题意解析2.AC代码[NOIP2005普及组]陶陶摘苹果通往洛谷的传送门题目描述陶陶家的院子里有一棵苹果树,每到秋天树上就会结出......
  • 【题解】【结构体排序】——[NOIP2007 普及组] 奖学金
    【题解】【结构体排序】——[NOIP2007普及组]奖学金[NOIP2007普及组]奖学金题目背景题目描述输入格式输出格式输入输出样例输入#1输出#1输入#2输出#21.题意解析2.AC代码[NOIP2007普及组]奖学金通往洛谷的传送门题目背景NOIP2007普及组T1题目描述某......
  • [ABC328G] Cut and Reorder 题解
    [ABC328G]CutandReorder题解题目不难,思维难度尚可。首先需要发现的性质是\(1\)操作的次数最多只需要使用一次,使用多少次其实都是等价的。\(n\le22\)显然考虑状压dp。平凡的想法是设\(dp_{i,j}\)表示填数的状态为\(i\),最后一个填的是\(j\)位置的数的最小代价。这......
  • CF1991F Triangle Formation 题解
    Description你有\(n\)根棍子,从\(1\)到\(n\)编号。第\(i\)根棍子的长度是\(a_i\)。你需要回答\(q\)个问题。在每个查询中,你会得到两个整数\(l\)和\(r\)(\(1\lel<r\len,r−l+1\ge6\))。确定是否可以从编号为\(l\)到\(r\)的棒中选择\(6\)个不同的棒,形......
  • [ABC293Ex] Optimal Path Decomposition 题解
    [ABC293Ex]OptimalPathDecomposition题解是一道难得一遇的好题。对于题目中的两个限制,同时满足是困难的,于是考虑常见的套路:先固定其中一个,再计算另一个。对于本题,显然\(k\)是有单调性的,于是考虑二分这个\(k\),将最优性问题转化为可行性问题,dp路径的最小长度。那么考虑d......