首页 > 其他分享 >2024/7/9 noip模拟鳃

2024/7/9 noip模拟鳃

时间:2024-07-09 21:53:21浏览次数:8  
标签:head noip int 2024 vis maxn ans 模拟 size

T1
image
30pts
教训:存图双向边数组要开2倍(就是这么简单!)还害得我调了半个小时才发现,改后ac
code:

using namespace std;
int n,a,b,anode,bnode;
const int maxn = 1e6+10;
struct edge{
	int to,next;
}e[maxn];
int nodeflag = -1;
int head[maxn],siz[maxn],cnt,ans[maxn];
void addedge(int u,int v){
	cnt++;
	e[cnt].to = v;
	e[cnt].next = head[u];
	head[u] = cnt;
}
bool vis[maxn];
int dfs(int x,int fa){
	vis[x] = true;
	int size_ = 1;
	for(int i = head[x];i;i = e[i].next){
		if(!vis[e[i].to]) size_ += dfs(e[i].to,x);
	}
	if(size_ == a){
		anode = x;
		bnode = fa;
		nodeflag = 1;
	}
	if(size_ == b){
		anode = x;
		bnode = fa;
		nodeflag = 2;
	}
	return size_;
}
void dfs1(int x){
	vis[x] = true;
	ans[x] = a--;
	for(int i = head[x];i;i = e[i].next){
		if(!vis[e[i].to]) dfs1(e[i].to);
	}
}
void dfs2(int x){
	vis[x] = true;
	ans[x] = b--;
	ans[x] -= 2*ans[x];
	for(int i = head[x];i;i = e[i].next){
		if(!vis[e[i].to]) dfs2(e[i].to);
	}
}
int main(){
	cin>>n>>a>>b;
	int u,v;
	for(int i = 1;i < n;i++){
		cin>>u>>v;
		addedge(u,v);
		addedge(v,u);
	}
	dfs(v,u);
	if(anode == 0){
		cout<<"-1";
		return 0;
	}
	for(int i = 1;i <= n;i++) vis[i] = false;
	if(nodeflag == 1){
		vis[bnode] = true;
		dfs1(anode);
		dfs2(bnode);
	}
	else{
		vis[anode] = true;
		dfs1(bnode);
		dfs2(anode);
	}
	for(int i = 1;i <= n;i++) cout<<ans[i]<<" ";
}

T2
image
image
0pts 赛后思路理清

T3
image
赛中骗分 15pts 赛后ac。还有一种做法,贴边走一定是最优的,把所有矩形抽象成左线段,只取经过x轴的矩形,从左到右连边跑最短路。

T4 脑裂待解
image

标签:head,noip,int,2024,vis,maxn,ans,模拟,size
From: https://www.cnblogs.com/Kang-shifu/p/18292799

相关文章

  • 洛谷P5594 【XR-4】模拟赛C语言
    #include<stdio.h>intmain(){ intn,m,k; inti,j; inth,l; scanf("%d%d%d",&n,&m,&k); intarr[n+1][m+1]; intday[k+1]; for(i=1;i<=n;i++){//录入数据 for(j=1;j<=m;j++){ scanf("%d&quo......
  • 洛谷P1308 [NOIP2011 普及组] 统计单词数C语言
    #include<stdio.h>#include<string.h>#include<ctype.h>intmain(){charcheck[11];charstr[1000001];intf_num=0;intcount=0;inti=0;intj=0;intp=1;gets(check);gets(str);......
  • 2024年06月CCF-GESP编程能力等级认证Python编程三级真题解析
    本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。一、单选题(每题2分,共30分)第1题小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?()A.1B.2C.3D.4答案:C第......
  • 20240709比赛总结
    T1超市抢购https://gxyzoj.com/d/hzoj/p/3765仔细读懂数据生成器,就能看出来,实际上物品肯定是够用的因为只能从右向左搬运物品,所以我们只需要对于每一个i,i+1的间隔,考虑有多少个物资需要从右边搬到左边去,把这个贡献累加即可代码:#include<cstdio>#include<algorithm>#define......
  • elementary os 8 2024年07月新动态
    具体信息请登录官网查询**OS7更新**Photos8已经作为Flatpak应用发布到AppCenter。这意味着你可以通过从AppCenter安装Flatpak版本来继续接收Photos的更新,即使在旧版本的elementaryOS上,而且Photos现在也很容易为那些运行除elementaryOS之外的Linux发行版的人提供。这个新......
  • Exam20240629 赛后结
    Exam20240629赛后结T1想法几乎是对的,结果两个不能直接乘起来就是如果你不太冷静的话就容易做出错误的判断,我考虑了这个问题,居然认为直接乘起来是可以的emmT2不太熟悉容斥,想到前缀和之后扔了结果它这个时候就已经变成slime和npc了这个时候就只需要钦定一段是大于k的其......
  • Codeforces Round #956 (Div. 2) and ByteRace 2024
    Preface连着好几天因为熬夜看LOL比赛导致白天精神萎靡,都没精力VP了而且明天就要开始统一训练了,趁着最后一天补一下前两天因为看比赛没打的这场吧这场只能说是战术正确,想了会E没啥思路就马上转头去把F写了,后面回头慢慢想E也想出来了,最后极限2h14min出了EA.ArrayDivisibility......
  • 【全开源】2024最新版在线客服系统PHP源码(全新UI+终身使用+安装教程)
    PHP在线客服系统主要功能:1.用户信息用户提交:新用户可以通过表单留言输入相关信息,如用户名、密码、邮箱等,完成后获得唯一的用户ID和密码。2.客服管理客服信息管理:管理客服人员的基本信息,如姓名、工号、权限等。客服工作状态:实时显示客服人员的在线/离线状态,方便客户选择合......
  • 【2024最新】零基础如何学习挖漏洞?看这篇就够了(超详细)
    文章目录前言什么是漏洞挖掘学习漏洞挖掘的正确顺序漏洞挖掘需要具备的知识漏洞挖掘需要做什么有关漏洞挖掘的其他想法漏洞的复杂性团队工作写在最后==如何入门学习网络安全【黑客】==【----帮助网安学习,以下所有学习资料文末免费领取!----】大纲学习教程面试刷题资料......
  • 国开大学2024《社会保障基础(统设课)》
    1.养老保险通过强制性的分摊机制,为老年人提供足够收入以维持退休后的基本生活水平,防范老年风险,这是养老保险的()。答案:B.保险功能2.职工达到法定退休年龄,缴费未满15年,则()。答案:D.一次性领取个人账户储存额3.目前我国养老保险基金筹集的主要模......