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作为一个选择,看有几个5t就加几个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;
	
} 
posted @   不认命,就是哪吒的命!  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示