首页 > 其他分享 >ABC368

ABC368

时间:2024-08-29 12:04:16浏览次数:10  
标签:cout int res cin dfs ++ ABC368

A

link

先输出后面,在输出前面。

神奇的代码
#include<bits/stdc++.h>

using namespace std;

int n,k;
int a[105];

signed main(){
	
	cin >> n >> k;
	for(int i = 1;i <= n;++ i){
		cin >> a[i];
		if(i >= n-k+1) cout << a[i] << " ";
	}
	for(int i = 1;i < n-k+1;++ i) cout << a[i] << " ";
	
	return 0;
	
} 

B

link

模拟。

神奇的代码
#include<bits/stdc++.h>

using namespace std;

int n;
int a[105];

bool cmp(int x,int y){
	return x > y;
}

signed main(){
	
	cin >> n;
	for(int i = 1;i <= n;++ i)
		cin >> a[i];
	
	int res = 0,op = 0;
	while(n-res > 1){
		sort(a+1,a+1+n,cmp);
		a[1]--;a[2]--;
		if(a[1] == 0) res++;
		if(a[2] == 0) res++;
		op++;
	}
	cout << op;
	
	return 0;
	
} 

C

link

对于每一个数,把\({1,1,2}\)作为一个选择,看有几个\(5\),\(t\)就加几个\(3\),剩下的不够\(5\)的暴力。

神奇的代码
#include<bits/stdc++.h>

#define int long long

using namespace std;

int n;
int a[200005];

signed main(){
	
	cin >> n;
	for(int i = 1;i <= n;++ i)
		cin >> a[i];
	
	int ti = 0;
	for(int i = 1;i <= n;++ i){
		int x = a[i];
		ti += x/5*3;
		x %= 5;
		while(x > 0){
			ti++;x--;
			if(ti%3 == 0) x -= 2;
		}
	}
	
	cout << ti;
	
	return 0;
	
} 

D

link

\(dfs\)。从一个点开始\(dfs\),如果子树内有点选,这个点就必须选,每个\(dfs\)返回一下以这个为根的子树有多少个点选。注意要从选的点开始\(dfs\)最优,因为如果从不选的,那么就一定会选这个,因为一定有要选的在他的子树内,就会多。

神奇的代码
#include<bits/stdc++.h>

using namespace std;

int k,n;
vector<int>ed[200005];
int v[200005];
int rt;

int dfs(int x,int fa){
	int res = 0;
	for(int i = 0;i < ed[x].size();++ i){
		int j = ed[x][i];
		if(j != fa) res += dfs(j,x);
	}
	if(res||v[x]) res++;
	return res;
}

signed main(){
	
	cin >> n >> k;
	for(int i = 1;i < n;++ i){
		int a,b;
		cin >> a >> b;
		ed[a].push_back(b);
		ed[b].push_back(a);
	}
	for(int i = 1;i <= k;++ i){
		int vv;
		cin >> vv;
		v[vv] = 1;
		if(!rt) rt = vv;
	}
	
	cout << dfs(rt,0);
	
	return 0;
	
} 

标签:cout,int,res,cin,dfs,++,ABC368
From: https://www.cnblogs.com/wmmdbk/p/18386421

相关文章

  • ABC368
     D树从叶子到根,对于某个点,如果其子树不存在需要的点,那么这个点和它的父亲所连的边,自然不需要,否则需要。有一个问题,比如需要点2、4、5,那么点1和点2所连的边也算进去了。实际上,到了它们的LCS(最大公共祖先)后,这些边就不用算了。用一个变量统计当前遍历过多少需要的点,如果所有需要......
  • ABC368G
    前言最简单的一次,终于AK了ABC,纪念一下。思路看到题目中有一句加粗的话入力で与えられるタイプ$3$のクエリの答えは$10^{18}$以下であることが保証されています。翻译出来是对于所有操作\(3\),答案不超过\(10^{18}\)。首先,\(a_i\)一定不会是\(0\),考虑一种情况,......
  • AtCoder Beginner Contest 368(ABC368)
    [ABC368F]DividingGame题意:有\(n\)堆石子,第\(i\)堆有\(a_i\)颗石子,每次可以拿走任意一堆石子数量任何数量的棋子,但是要保证拿走之后该堆的石子数量为原来的约数(不能不拿)。问是先手必胜还是后手必胜。\(n,a_i\le10^5\)。思路:发现与Nim游戏类似,且全局信息公开,状态......
  • ABC368
    A.Cut模拟代码实现#include<bits/stdc++.h>#definerep(i,n)for(inti=0;i<(n);++i)usingnamespacestd;intmain(){intn,k;cin>>n>>k;vector<int>a(n);rep(i,n)cin>>a[i];r......
  • abc368 题解
    切了ABCDF,G赛后1min切了(恼比赛链接:https://atcoder.jp/contests/abc368A-Cut题意:给定一个长度为\(n\)的序列,先输出后\(k\)个数,在输出前\(n-k\)个数。思路:按题意模拟即可。代码:https://atcoder.jp/contests/abc368/submissions/57030066B-Decrease2maxel......