noip模拟15

news/2024/11/17 22:29:59/文章来源:https://www.cnblogs.com/ccjjxx/p/18551284

A 暴力操作(opt)

B 异或连通(xor)

C 诡异键盘(keyboard)

D 民主投票(election)

这道题很简单。。。

首先,对于一个节点 \(u\),如果 \(siz[u]-1\) 大于了其他所有节点能得到的最大值,那么它一定能胜利。

那考虑怎么找到一个值,满足所有节点能得到的最大值最小?用二分答案即可。

对于一次 check,我们需要一个树形 dp 去计算当前节点在最大值为 \(mid\) 下溢出的票数。\(dp[u]+=dp[v]+1\)

然后,会有三种情况。

  • 对于 \(siz[u]>res\),一定能胜利;

  • 对于 \(siz[u]<res\),一定不能胜利;

  • 对于 \(siz[u]=res\),如果这个点只有一个,那么它可以战胜。否则,若有多个,一定会有几个相等的。那么我们用 \(res-1\) 再跑一个 \(dp\),如果节点 \(1\) 的值是 \(1\),就代表有一个节点溢出,并且沿着到根节点的路径一路溢出到根。那只需要再次 dfs,找到那个节点就好了,这个节点一定可以战胜。

然后就是常数问题了。链式前向星的常数小于 vector。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int T,n;
inline int read()
{register int s=0;register char c=getchar();while(c<'0'||c>'9') c=getchar();while(c>='0'&&c<='9')s=(s<<1)+(s<<3)+(c^48),c=getchar();return s;
}
void write(int x)
{if(x>9) write(x/10);putchar(x%10+'0');
}
struct node{int to,next;
}e[N<<1];
namespace q{int *siz,*f;int head[N],cnt;inline void add(int u,int v){e[++cnt].to=v,e[cnt].next=head[u];head[u]=cnt;}inline void dfs1(int u){siz[u]=1;#pragma GCC unroll 2for(int i=head[u];i;i=e[i].next){int v=e[i].to;dfs1(v);siz[u]+=siz[v];
//			if(siz[v]>siz[Son[u]]) Son[u]=v;}}inline void ddfs(int u,int mx){f[u]=0;#pragma GCC unroll 2for(int i=head[u];i;i=e[i].next){int v=e[i].to;ddfs(v,mx);f[u]+=f[v]+1;}if(f[u]>mx) f[u]-=mx;else f[u]=0;}bitset<N>ans;bool fdf=0;inline void dddfs(int u,int V){if(f[u]&&siz[u]-1==V){ans[u]=1;fdf=1;return ;}if(fdf)return ;#pragma GCC unroll 2for(int i=head[u];i;i=e[i].next){int v=e[i].to;if(fdf)return ;if(f[v])dddfs(v,V);}}void work(){n=read();f=new int [n+2],siz=new int [n+2];cnt=0;#pragma GCC unroll 32for(int i=1;i<=n;i++)head[i]=0;#pragma GCC unroll 32for(int i=2;i<=n;i++){int f=read();add(f,i);}dfs1(1);int l=1,r=n,res=0;while(l<=r){int mid=(l+r)>>1;ddfs(1,mid);if(f[1]==0) res=mid,r=mid-1;else l=mid+1;}ans.reset();#pragma GCC unroll 2for(int i=1;i<=n;i++){if(siz[i]-1>res) ans[i]=1;}ddfs(1,res-1);if(f[1]==1) {fdf=0;dddfs(1,res);}for(int i=1;i<=n;i++) write((int)ans[i]);putchar(10);delete []siz,delete []f;}
}
signed main()
{
//	freopen("2.in","r",stdin);
//	freopen("ans.txt","w",stdout);freopen("election.in","r",stdin);freopen("election.out","w",stdout);T=read();while(T--) q::work();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/835552.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第 6 篇 Scrum 冲刺博客

团队作业4——第 6 篇 Scrum 冲刺博客 作业要求这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13234这个作业的目标 团队集体协作完成项目开发队名 雄狮般的男人站立式…

团队冲刺-6

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13234这个作业的目标 记录每日进展和问题,对问题进行解决1.每日会议| 成员 | 昨天任务 | 今天任务|工作中…

【模型部署】vLLM 部署 Qwen2-VL 踩坑记 02 - 推理加速

【模型部署】vLLM 部署 Qwen2-VL 踩坑记 02 - 推理加速 NLP Github 项目【模型部署】vLLM 部署 Qwen2-VL 踩坑记 02 - 推理加速 NLP Github 项目:NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用,分享大模型算法…

【伪造检测】Noise Based Deepfake Detection via Multi-Head Relative-Interaction

一、研究动机[!note] 动机:目前基于噪声的检测是利用Photo Response Non-Uniformity (PRNU)实现的,这是一种由于相机感光传感器而造成的缺陷噪声,主要用图像的源识别,在伪造检测的任务中并没有很好的表现。因此在文中提出了一种基于伪造噪声痕迹的检测算法。 实现原理:通过…

11月17日

今日错误错误原因:没有分辨出两个单词词性上的含义与区别,对于什么语境该用什么做区分不清

超实用的SpringAOP实战之日志记录

AOP使用场景的本质是:在一个`方法`的执行前、执行后、执行异常和执行完成状态下,都可以做一些`统一的操作`。AOP 的核心优势在于将这些横切功能从核心业务逻辑中提取出来,从而实现代码的`解耦`和`复用`,提升系统的`可维护性`和`扩展性`。本文主要以日志记录作为切入点,来讲…

2024/11/17 总结

记忆宫殿初始入度为\(0\)的点为源点。 我们令 \(S\) 为如果成立,就能够推出事件的源点集合。 当事件成立时,显然 \(S\) 中的点必有至少一个是真的。所以我们只要把所有包含 \(S\) 的事件都标记为真就行了。 Pro-Professor Szu 某大学校内有一栋主楼,还有 栋住宅楼。这些楼之…

# [团队项目Scrum冲刺-day7]

每天举行站立式会议昨天已完成的任务成员 任务徐嘉炜 优化登录界面交互逻辑陈祥意 对各个测试模块测试林楦 优化整体UI界面陈大锴 优化注册界面交互逻辑蔡家显 检查测试记录陈祖民 优化登录UI肖商 反馈前一天测试结果今日计划完成的任务成员 任务林楦 优化前端页面显示陈祖民 优…

HBase的常用命令

一、general类 1、查看集群的状态 status2、查看数据库版本 version3、显示当前用户和组 whoami4、查看操作表的命令 table_help5、退出hbase exit或者ctrl+c 二、DDL相关 注:DDL是用于定义和管理数据库中的结构的命令,例如创建,删除,修改表等操作 1、创建表 注:创建表的时…

用户故事与敏捷开发

什么是用户故事 用户故事(User Story)是用来对软件或用户有价值功能的简短描述,是对需求的一种描述。它清晰简洁的传达了用户想要的功能。 它从用户角度出发,用来描述用户的需求,用来表达用户需求的方式之一。 它从用户角度出发,解释了用户所期望得到的结果。用户故事清楚…

团队项目冲刺--day6

每天举行站立式会议成员 任务##昨天已完成的工作成员 任务徐嘉炜 开发音频API交互逻辑陈祥意 测试网络API林楦 开发注册UI界面陈大锴 开发系统界面交互逻辑蔡家显 汇总整体测试记录陈祖民##今天计划完成的工作 界面细节完善,如歌曲封面动画,歌曲播放,页面背景随封面渐变,歌…

11.17 鲜花

a pa ta ? zaong ma ze mi da. (byd 没有输入法绷不住了)11.17 鲜花(RMQ专题) 哈哈,回家看到朴彩英这个歌绷不住了。 不是吧,姐?推歌-박채영《아파트》 채영이가 좋아하는 랜덤 게임 랜덤 게임 Game start 아파트 아파트 아파트 아파트 아파트 아파트 Uh, uh huh uh huh …