首页 > 其他分享 >AtCoder Beginner Contest 047

AtCoder Beginner Contest 047

时间:2024-08-22 15:37:30浏览次数:13  
标签:AtCoder Beginner int cin long ++ maxm 047 using

A - Fighting over Candies

简单排序。

#include <bits/stdc++.h>

using namespace std;
using i64 = long long;

int main() {
	ios::sync_with_stdio(false), cin.tie(nullptr);
	vector<int> a(3);
	cin >> a[0] >> a[1] >> a[2];
	sort(a.begin(), a.end());
	if (a[2] == a[0] + a[1]) cout << "Yes";
	else cout << "No";
	return 0;
}

B - Snuke's Coloring 2 (ABC Edit)

如果着眼于计算被涂黑部分的面积就不利于计算。就本题而言应该直接去计算余下的白色面积。这就需要端点坐标。

分类讨论:当 \(a\) 分别取值的时候,边界的端点值会被更新(上一次涂黑的可能会被本次覆盖),不断更新端点值,最后根据矩形面积公式计算。

#include <bits/stdc++.h>

using namespace std;
using i64 = long long;

int main() {
	ios::sync_with_stdio(false), cin.tie(nullptr);
	int W, H, N;
	cin >> W >> H >> N;
	int a1 = 0, a2 = W, a3 = 0, a4 = H;
	for (int i = 0; i < N; i++) {
		int x, y, a;
		cin >> x >> y >> a;
		if (a == 1) {
			a1 = max(a1, x);
		} else if (a == 2) {
			a2 = min(a2, x);
		} else if (a == 3) {
			a3 = max(a3, y);
		} else {
			a4 = min(a4, y);
		}
	}
	if (a2 <= a1 || a4 <= a3) cout << 0;
	else cout << (a2 - a1) * (a4 - a3);
	return 0;
}

C - 1D Reversi

通过在草稿纸上模拟可以看出,答案即为字符串相邻字符不相同的个数。
举例:对于 WBBW,在最右边增加 B,变为 WBBBB,只需在左侧再加上一个 B 即可。也即每次增加的字符,都是把相邻的不同字符更改为相同

#include <bits/stdc++.h>

using namespace std;
using i64 = long long;

int main() {
	ios::sync_with_stdio(false), cin.tie(nullptr);
	string s;
	cin >> s;
	int ans = 0;
	for (int i = 1; i < s.size(); i++) {
		if (s[i] != s[i - 1]) ans++;
	}
	cout << ans;
	return 0;
}

D - An Invisible Hand

本题难在理解题意。以样例三为例。
得到最高利润的方式有多种,可以是 \(9-4=5,\) 也可以是 \(8-3=5\)。
因此只需要统计有几组这样的最高利润即可,答案就是组数。

对数组遍历,用 \(b[i]\) 记录在当前城市出售苹果所能得到的最高利润,\(minn\) 表示前 \(i-1\) 个城市中的最小值,不断更新 \(maxm\) 得到最高利润。
再遍历一遍,但凡 \(b[i]\) 与 \(maxm\) 相等就将答案计数 + 1.

image

#include <bits/stdc++.h>

using namespace std;
using i64 = long long;

int main() {
	ios::sync_with_stdio(false), cin.tie(nullptr);
	int N, T;
	cin >> N >> T;
	vector<int> a(N), b(N);
	
	int minn = 0x3f3f3f3f, maxm = -0x3f3f3f3f;
	for (int i = 0; i < N; i++) {
		cin >> a[i];
		b[i] = a[i] - minn;
		minn = min(minn, a[i]);
		maxm = max(maxm, b[i]);
	}
	int ans = 0;
	for (int i = 0; i < N; i++) {
		if (b[i] == maxm) ans++;
	}
	cout << ans;
	return 0;
}

标签:AtCoder,Beginner,int,cin,long,++,maxm,047,using
From: https://www.cnblogs.com/pangyou3s/p/18374001

相关文章

  • AtCoder Beginner Contest 367
    A-ShoutEveryday思路:水题一道,模拟即可。B-Cut.0思路:直接cin和cout即可,c++输入输出性质。C-EnumerateSequences思路:注意到数据范围很小,因此考虑到搜素所有的序列,然后判断是否合法。D-Pedometer思路:观察到是环上问题,先断环为链,观察题目,可以发现,对于s,它的终......
  • AtCoder Beginner Contest 046
    A-AtCoDeerandPaintCans#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;intmain(){ ios::sync_with_stdio(false),cin.tie(nullptr); set<int>s; for(inti=0;i<3;i++){ intx; cin>>x; s.inser......
  • 删除字符串中的所有相邻重复项(1047)
    题目描述给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在S上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。解题思路这里我们还是使用栈这个数据结构,我们还是遍历当前字符串,......
  • [AtCoder - tdpc_game] :ゲーム 题解
    [AtCoder-tdpc_game]:ゲーム题解一道小清新\(dp\)题。定义\(dp_{i,j}\)为第一堆山还有\(i\)个物品,第二堆山还有\(j\)个物品,すぬけ君能取得物品的最大价值。由于只能取两座山最上面的物品,假设当前两座山分别有\({x,y}\)个物品,すぬけ君选后只能有两种情况,分别为\(d......
  • 2788647047_last
    importrequestsimportpandasaspdfromopenpyxlimportWorkbook#读取域名文件withopen("domains.txt","r")asf:domains=f.readlines()#去除注释和空行domains=[line.strip()forlineindomainsifnotline.startswith("#")andline.......
  • AtCoder ABC 367
    前言本题解部分思路来自于网络,仅供参考。A-ShoutEveryday题目大意给定Takahashi每天的睡觉时间和起床时间,求Takahashi在$A$时是睡着的还是清醒的。解题思路根据题意模拟即可。code#include<bits/stdc++.h>usingnamespacestd;intmain(){inta,b,c;......
  • 2788647047_111py
    importrequestsfromopenpyxlimportWorkbook#创建一个工作簿wb=Workbook()#添加一个工作表ws=wb.active#读取文件中的域名withopen("domains.txt","r")asf:domains=f.readlines()#遍历域名,获取对应的IP地址fordomainindomains:#去除注释和空格......
  • AtCoder Beginner Contest 367
    题目链接:AtCoderBeginnerContest367总结:发挥很一般,A一直wa。开场有点事,导致D也没debug出来。A.ShoutEverydaytag:模拟Solution:注意\(B>C\)与\(B<C\)的不同情况即可。voidsolve(){  inta,b,c;  cin>>a>>b>>c;  if(c>b){    if(......
  • Atcoder [ABC367F] Rearrange Query 题解
    简要题意给定两个长度为\(N\)的序列\(A\)和\(B\)。有\(Q\)个查询,每个查询给定\(l,r,L,R\),其中\(l\leqr,L\leqR\),要求判断\(A\)的第\(l\)项到第\(r\)项构成的集合与\(B\)的第\(L\)项到第\(R\)项构成的集合是否相等。题解显然两个相等的集合所有元素......
  • Atcoder [ABC367C] Enumerate Sequences 题解
    简要题意给定\(n,k\)和\(R_i\),你需要输出所有满足下列条件的整数序列:长度为\(n\)。第\(i\)个元素的范围为\([1,R_i]\)。一个序列的所有元素的总和为\(k\)的倍数。输出请按照按照从左至右按位从小到大的顺序输出。题解注意到数据范围很小,我们可以直接爆搜,这里用......