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

AtCoder Beginner Contest 333

时间:2023-12-17 11:12:24浏览次数:26  
标签:AtCoder return Beginner sz int s2 s1 cin 333

总结

  • 人生第一次掉rating
  • tm是降智操作

A

水题

B

逆天操作
WA了3发
第三发交的时候以为过了,等到切完E发现B怎么还没过(

#include<bits/stdc++.h>

using namespace std;
map<string, int> f;

int main() {
	f["AB"] = f["BC"] = f["CD"] = f["DE"] = f["EA"] = 1;
	f["AC"] = f["BD"] = f["CE"] = f["DA"] = f["EB"] = 2;
	string s1, s2;
	cin >> s1 >> s2;
	if(!f[s1]) swap(s1[0], s1[1]);
	if(!f[s2]) swap(s2[0], s2[1]);
	puts(f[s1] == f[s2] ? "Yes" : "No");
	return 0;
}

C

人家题把上限都告诉你了
然后我\(O(12^3)\) 的枚举不写,写半个小时四进制枚举(

#include<bits/stdc++.h>

using namespace std;

bool check(int x) {
	int a[15], len = 0;
	while(x) a[++ len] = x % 4, x /= 4;
	
	for(int i = len ;i >= 1; -- i) {
		if(!a[i]) return 0;
	}
	for(int i = len; i > 1; -- i) {
		if(a[i] > a[i - 1]) return 0;
	}
	return a[1] == 3;
}

int main() {
	int n, cnt = 0;
	cin >> n;
	for(int i = 0; i < 1 << 24; ++ i) {
		if(check(i)) ++ cnt;
		if(cnt == n) {
			int x = i, len = 0, a[15];
			while(x) a[++ len] = x % 4, x /= 4;
			for(int j = len ;j >= 1; -- j) {
				cout << a[j];
			}
			return 0;
		}
	}
	return 0;
}

D

dfs

#include<bits/stdc++.h>

using namespace std;
const int N = 3e5 + 5;

vector<int> H[N];
int fa[N], sz[N];

int dfs(int x) {
	sz[x] = 1;
	for(int y : H[x]) {
		if(y != fa[x]) {
			fa[y] = x;
			sz[x] += dfs(y);
		}
	}
	return sz[x];
}

int main() {
	ios :: sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
	int n;
	cin >> n;
	for(int i = 1; i < n; ++ i) {
		int x, y;
		cin >> x >> y;
		H[x].push_back(y);
		H[y].push_back(x);
	}
	dfs(1);
	int ans = n;
	for(int y : H[1]) ans = min(ans, n - sz[y]);	
	cout << ans;
	return 0;
}

E

贪心,打每个怪用离其最近的药水

#include<bits/stdc++.h>

using namespace std;
const int N = 2e5 + 5;

int n, op[N], a[N];
bool used[N];

struct Node {
	int p, v;
	bool operator < (const Node &x) const {
		if(v != x.v) return v < x.v;
		else return p > x.p;
	}
};

int main() {
	ios :: sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
	cin >> n;
	set<Node> se;
	for(int i = 1; i <= n; ++ i) {
		cin >> op[i] >> a[i];
		if(op[i] == 1) se.insert({i, a[i]});
	}
	for(int i = 1; i <= n; ++ i) {
		if(op[i] == 2) {
			auto it = se.lower_bound({i, a[i]});
			auto x = *it;
			if(x.v == a[i]) {
				se.erase(it);
				used[x.p] = 1;
			}
			else return cout << -1, int();
		}
	}
	int cur = 0, ans = 0;
	for(int i = 1; i <= n; ++ i) {
		if(used[i]) ++ cur;
		if(op[i] == 2) -- cur;
		ans = max(ans, cur);
	}
	cout << ans << '\n';
	for(int i = 1; i <= n; ++ i) if(op[i] == 1) cout << used[i] << ' ';
	return 0;
}

标签:AtCoder,return,Beginner,sz,int,s2,s1,cin,333
From: https://www.cnblogs.com/Lu-xZ/p/17908863.html

相关文章

  • AtCoder Beginner Contest 332
    坐地铁时口糊了6题,回来写时结果爆longlong,0没有逆元,卡了好久A-OnlineShopping(abc332A)题目大意线上购物,买了\(n\)种物品,分别给出它们的单价和数量。若总价少于\(s\)元,则需要支付\(k\)元邮费,否则包邮。问总价多少。解题思路求个和判断下是否加邮费即可。神奇的......
  • AtCoder Beginner Contest 332 题解
    A-OnlineShopping题目链接AtcoderLuogu简要题意共有\(n\)件商品,第\(i\)件商品的价格为\(p_i\)日元,数量为\(q_i\)件。除了购买商品所需的的钱数,还要支付运费:如果所买商品的总价小于\(s\)日元,那么要支付运费\(k\)日元。问所需要的钱数是多少。简要思路模拟......
  • AtCoder Beginner Contest 332
    AtCoderBeginnerContest332A-OnlineShopping代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e6+10;typedefpair<ll,ll>pii;voidsolve(){intn,s,k;cin>>n>>s>>......
  • AtCoder Grand Contest 001
    比赛链接A-BBQEasy从小到大排序以后,答案就是所有奇数位置之和。B-MysteriousLight发现去掉前两次反射以后,剩下的是一个在平行四边形内反射的过程,且形式类似于辗转相除。具体地,\[F(n,x)=\begin{cases} -n&x=0\\ 2x\lfloor\frac{n}{x}\rfloor+F(x,n\bmodx)&x>0\e......
  • AtCoder Regular Contest 169
    A-PleaseSign某个\(A_i\)对\(A_1\)的贡献是\(\binom{10^{100}}{\mathrm{dep}_i}\),所以深度为\(d\)的节点的\(A_i\)之和只要不为\(0\),其贡献就一定远大于深度\(<d\)的所有点的贡献之和。从大到小找到第一个和非零的深度即可。B-SubsegmentswithSmallSums直......
  • AtCoder Beginner Contest 332 (D)
    题目链接思路:这就是一个二维的全排列问题代码:#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;#defineLNF0x3f3f3f3f3f3f3f3f#defineINF0x3f3f3f3f#defineIOSios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);#definepllp......
  • ATCoder 332 A-D
    A: OnlineShopping(读懂题即可)packageAtCoder.begin332;importjava.util.Scanner;publicclassA{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intn=sc.nextInt(),s=sc.nextInt(),k=sc.nextInt(......
  • 【题解】AtCoder abc322_f Random Update Query
    传送门:https://atcoder.jp/contests/abc332/tasks/abc332_f容易发现,对于一个位置$i$,$A_i$的最终值是由对$i$的最后一次赋值操作决定的;因此,将所有操作按时间顺序倒过来考虑,则由第$j$次操作决定$A_i$最终值的概率为"在第$(j+1)$~$m$次操作中没有修改过$i$的概率"与"第......
  • AtCoder Regular Contest 169 (ARC169)
    怎么有人ARCA卡了半天的?A.PleaseSign考虑\(i\)位置上的数,下次它被加到\(P_i\),再下次被加到\(P_{P_i}\),因为这个序列有性质\(P_i<i\),这样加若干轮一定会到达\(1\)。令所有的\(i\)向\(P_i\)连边,则这是一棵以\(1\)为根的树。设\(f_i=\sum\limits_{j=1}^n[dep_......
  • AtCoder_abc332
    AtCoder_abc332比赛链接A-OnlineShoppingA题链接题目大意这里有\(N\)件商品,第\(i\)件商品价格为\(P_i\),你要购买\(Q_i\)件,除了购买的费用外,他还要支付运费。如果购买的总价大于\(S\),运费为0元,否则他需要支付\(K\)元的运费。他一共要花多少钱呢?解题思路无代码//Prob......