ABC243做题笔记

Atcoder Beginner Contest 243

D - Moves on Binary Tree

题目大意

有一棵极大的二叉树,有 \(2^{10^{100}}-1\) 个节点,给定一些操作,输出在线段树上遍历后的最后的节点的编号。

解题思路

如果直接模拟,显然数据太大,会远超出 long long 的范围。

有一个条件非常重要:最终的答案在 long long 范围内,因此考虑:

  • 一次 \(U\) 操作会与一次 \(L\)\(R\) 操作抵消

维护一个栈,遍历操作串的时候每次遇到一个 \(U\) 操作就将其与栈顶中的一个 \(L\)\(R\) 抵消掉。

全部抵消后,直接模拟即可。

for(int i=0;i<n;i++){if(s[i]=='U'&&!stk.empty()){s[i]='0',s[stk.top()]='0';stk.pop();}else if(s[i]=='L'||s[i]=='R'){stk.push(i);}
}//剩余模拟部分略

E - Edge Deletion

题目大意

有一张有 \(N\) 个顶点,有 \(M\) 条边的带边权无向图,问能删多少条边,使得每两点之间的最短路长度不变。

解题思路

注意到这道题中 \(N\) 的范围很小,考虑 floyd 求全源最短路,再松弛边的时候,如果松弛的边距离与当前最短路长度相等,那么显然这条边时可以删去的。

for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){if(low[i][j]==low[i][k]+low[k][j]&&i!=k&&j!=k){ //如果距离相等f[i][j]=1;}low[i][j]=min(low[i][j],low[i][k]+low[k][j]);}for(int i=1;i<=m;i++){//有两种情况可以删边:前面记录的状态可以删去;当前两点之间最短路不经过这条边if(f[e[i].u][e[i].v]||low[e[i].u][e[i].v]!=e[i].d){ans++;}
}    cout<<ans<<"\n";

G - Sqrt

题目大意

有一个数列,最开始只有一个数 \(X\)。你可以对其进行一种操作:设末尾的数为 \(Y\),从 \(1 \ldots \sqrt Y\) 中选择一个数加到数列的末尾。如此进行 \(10^{100}\) 次操作,问数列一共有多少种可能的状态。

解题思路

有一个 \(O(T + X \sqrt X)\) 的做法,设 \(f_i\) 表示以数字 \(i\) 开头的数列可能的状态,设 \(i\) 的下一个位置上的数为 \(j\),那么 \(f_i = \sum _{j=1}^{ \sqrt i } f_j\)

最终答案为 \(f_x\),由于 \(X\) 极大,这种做法显然会超时。

考虑优化,根据数据范围以及上面的状态转移方程,\(f_x = \sum _{i=1}^{\sqrt [4]{x}}(\sqrt x - k^2+1) \times f_k\)

时间复杂度 \(O(T \times \sqrt [4]{X})\),轻松通过。

为了避免精度问题,需要开 long double。

f[1]=1;
for(int i=2;i<=5e5;i++){for(int j=1;j<=sqrt((double)i);j++){f[i]+=f[j];}
}while(T--){cin>>n;int ans=0,k=sqrt((double)n);for(int i=1;i<=sqrt((double)k);i++){g[i]=f[i]*(k-i*i+1);ans+=g[i];}cout<<ans<<"\n";
}

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

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

相关文章

揭秘35岁技术人去向:是高薪管理,还是无奈转行?

1 35 岁危机 35 是虚指,不一定 35 岁,也可是一个区间。有人 33 岁,有人是 40 岁。对技术人,到年龄确实明显困境。甚至不到 35 岁,网上招聘焦虑到32岁。 头部大厂小伙伴说晋升就像“续命卡”。升上去不一定稳,但可“多活”一两年,升不上去,不但目前绩效难保,甚至可能进…

电商小年营销全攻略:从策略到执行的全方位指南

电商小年营销需要从了解消费者需求、营造节日氛围、创新营销活动、社交媒体营销、优化物流配送以及提供优质服务等方面入手,全面提升营销效果和消费者体验。电商小年营销是针对小年这一传统节日进行的电子商务推广活动。小年作为春节的前奏,具有浓厚的节日氛围和独特的消费习…

TangGo:国产化综合红队协同工具

免责声明 请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与本公众号无关。最近我们团队在进行hvv演练的时候,我真切体会到了在日常工作中对高效工具的需求,找到一款合适的测试平台简直是事半功倍。 后面用了TangGo测试平台。这款工具真是让我省心不少。之前…

电商新年采购管理:优化策略与工具应用

电商新年用品采购管理是一个复杂而细致的过程,需要公司多个部门的协同合作和共同努力。通过科学的管理方法和工具的应用,可以提高采购效率、降低采购成本、确保商品质量,从而提升公司的竞争力和市场地位。电商新年用品采购管理是一个涵盖多个环节和方面的综合性工作,以下是…

输出Hello word

输出Hello word打开Notepad++文档,方便书写代码新建一个java文件编写代码 public class hello{public static void main (String[] args){ //格式固定的标题头System.out.print("hello word"); //输出的内容} }在cmd中编译javac …

如何管理研发进度拖延?中小科技企业适用的工具推荐

在科技行业蓬勃发展的当下,中小型科技企业面临着激烈的市场竞争。对于它们而言,研发流程的高效性直接关乎企业的生存与发展。敏捷方法作为一种灵活且高效的项目管理理念,正逐渐成为众多企业优化研发流程的关键选择。通过实施敏捷方法,企业能够快速响应市场变化,提升产品质…

招行面试:10Wqps场景,RocketMQ 顺序消费 的性能 如何提升 ?

本文原文链接 文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 …

Emacs 折腾日记(九)——elisp 数组与序列

elisp 中序列是数组和列表的统称,序列的共性是内部数据有一个先后的顺序,它与C/C++ 中有序列表类似。 elisp 中的数组包括向量、字符串、char-table 和布尔向量,它们的关系如下:在之前一章中已经介绍了序列中的一种类型——列表,本篇将介绍序列中的另外一种数据类型——数组…

DolphinScheduler项目管理页面加载缓慢?这样优化

问题现象 有时候,Apache DolphinScheduler项目管理页面会发生加载不出来的问题,浏览器查看为[http://ip:12345/dolphinscheduler/projects?pageSize=10&pageNo=1&searchVal=]请求超时。解决思路查看海豚运行日志(未发现异常)tail /home/dolphinscheduler/api-serv…

jenkins集成多版本maven打包

默认版本maven和jdkmvn高版本部署1.用低版本的mvn和jdk编译高版本项目的时候提示错误2.查看项目的pom.xml文件查看项目依赖的jdk版本3.部署高版本maven和jdk1.部署jdk1.172.部署maven-3.9.93.修改maven的jdk版本4.修改maven的依赖包仓库地址5.jenkins调用新的maven打包,不影响原…

如何解决使用 SQL Server 管理器远程操作数据库时出现“索引超出了数组界限 (Microsoft.SqlServer.Smo)”错误?

问题描述 当您使用 SQL Server Management Studio (SSMS) 远程连接并操作数据库时,可能会遇到以下错误提示:“索引超出了数组界限 (Microsoft.SqlServer.Smo)”。这个错误通常发生在尝试执行某些特定操作(如查询、修改表结构等)时。该问题不仅影响工作效率,还可能导致数据…

如何处理wdcp控制面板内phpMyAdmin无法访问的问题

用户反馈其wdcp控制面板内的phpMyAdmin无法正常访问,尽管已经修改了密码,但仍提示错误。这可能是由于权限设置错误、配置文件损坏或其他服务器配置问题引起的。 解决方案确认登录凭据确认当前使用的用户名和密码是否正确。如果不确定密码是否正确,可以尝试通过找回密码功能重…