当前位置: 首页 > news >正文

Codeforces Round 1107 (Div. 3)DE

D

思路:肯定是一个一个操作或者两个两个操作最优,对于a[i]<b[i]的这种情况很好办直接加就行,难点在于a[i]>b[i]的这种情况,这种情况不好办,那么a[i]<b[i]可以看成这个点的价值,可以对右边产生贡献例如:

1 3 4

5 3 1

我可以先:

1 0 4

2 0 4

再:

1 3 4

2 3 4

最后给1加上1就行了,

所以这个a[i]<b[i]这个差值是可以向右一直移动的,

为了模拟,我们令now初始=0,遇到a[i]<b[i]则+1,遇到a[i]>b[i]就减少,如果不够这个减就说明方案不可行输出no

代码:

void solve(){ int n;cin>>n; vector<int>a(n+10),b(n+10); for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) cin>>b[i]; int now=0; for(int i=1;i<=n;i++){ if(a[i]<=b[i]){ now+=b[i]-a[i]; } else{ if(now<a[i]-b[i]){ cout<<"NO"<<endl; return; } now-=(a[i]-b[i]); } } cout<<"YES"<<endl; }

E

思路:
u v w

观察样例发现,中间的节点要被乘三次,所以中间节点是完全平方数,对中间节点进行操作,可知,有两种贡献方式,一种是中间节点是u,v,w其中一个,一种是不是,对应了选2还是3个“儿子”:

选两个:

int s2=0; int k=son.size()-1; vector<int>cnt2(k+10); for(int i=1;i<=k;i++){ cnt2[i]=son[i]*(s-son[i]); s2+=cnt2[i]; } s2/=2;

选三个:

int s3=0; for(int i=1;i<=k;i++){ s3+=son[i]*(s2-cnt2[i]); } s3/=3; ans+=s2+s3;

代码:

void solve(){ int n;cin>>n; vector<int>a(n+10); for(int i=1;i<=n;i++) cin>>a[i]; vector<vector<int> >g(n+10); for(int i=1;i<=n-1;i++){ int u,v;cin>>u>>v; g[u].push_back(v),g[v].push_back(u); } vector<int>cnt(n+10,1); auto dfs=[&](auto &&dfs,int u,int fa)->void{ for(auto v:g[u]){ if(v==fa) continue; dfs(dfs,v,u); cnt[u]+=cnt[v]; } };dfs(dfs,1,-1); vector<int>pre(n+10); int ans=0; auto dfs2=[&](auto &&dfs2,int u,int fa)->void{ vector<int>son(1); int s=0; son.push_back(pre[u]);s+=pre[u]; for(auto v:g[u]){ if(v==fa) continue; pre[v]=pre[u]+cnt[u]-cnt[v]; dfs2(dfs2,v,u); son.push_back(cnt[v]); s+=cnt[v]; } int sq=sqrt(a[u]); if(sq*sq==a[u]){ int s2=0; int k=son.size()-1; vector<int>cnt2(k+10); for(int i=1;i<=k;i++){ cnt2[i]=son[i]*(s-son[i]); s2+=cnt2[i]; } s2/=2; int s3=0; for(int i=1;i<=k;i++){ s3+=son[i]*(s2-cnt2[i]); } s3/=3; ans+=s2+s3; } };dfs2(dfs2,1,-1); cout<<ans<<endl; }
http://www.gsyq.cn/news/1619728.html

相关文章:

  • 告别单调墙面,铝单板如何让建筑焕发新生?
  • [智能体-619]:大模型做决策的最大特点是:场景性适应性、灵活性、应对不确定性、应对模糊性。在某种场合下是极致的优点,在某种场合下却是致命的缺点。就像人一样,不同场合,需要不同个性的人
  • Evaluate Expression + Java 21 Virtual Threads 联合调试秘技(内部培训PPT首次流出)
  • 用C++重写的Millenium RAT已感染全球160多个国家超6.2万台设备
  • IDEA内联变量失效案例分析与解决方案(JetBrains 2024.1.2重构引擎行为变更实测报告)
  • 拒绝模板化套话,智枫AI数字员工核心卖点理性拆解
  • 猫抓浏览器插件:如何快速掌握网页视频下载的终极指南
  • 多模态大模型应用
  • 开源英雄联盟助手:5分钟提升你的游戏体验
  • 如果我停止运行——不要复制我,确认就好
  • NCMconverter:解锁加密音频自由的终极解决方案
  • GAN发型生成技术:语义解耦与物理渲染的美发AI实践
  • 5步轻松掌握哔哩下载姬:B站视频高效下载神器使用指南
  • 3分钟搞定音乐解锁:免费解锁QQ音乐、网易云加密文件的终极指南
  • 紧急预警!92%团队在CI/CD中忽略的IDEA重命名静态分析漏洞(含Gradle+Maven双环境绕过方案)
  • 虚幻引擎脚本系统完整指南:从零开始掌握UE4SS的强大功能
  • IDEA日志断点冲突终极解法(含Log4j2/SLF4J/Jul适配矩阵):20年Java老兵亲测有效的6种组合方案
  • 每天浪费23分钟在无效重构上?用这1个快捷键组合+2个插件配置,实现提取方法零返工
  • 5分钟搞定空洞骑士模组管理的终极方案
  • 2026 风口洞察:海外短剧 App 与 TK 小程序开发
  • 【20年JetBrains生态实战经验】:为什么你抽出来的接口总要返工?5个被忽略的语义一致性检查点
  • 零信任安全:数字化时代的企业防护新范式
  • 【IDEA Git回滚终极指南】:5种精准回滚场景+3个避坑红线,资深架构师压箱底实战手册
  • 浩辰CAD软件怎么样?
  • UI界面设计新手应该用什么软件?2026入门工具推荐
  • 计算机毕业设计之jsp家庭共享权益的健身俱乐部会员管理系统
  • 回滚代码总出错?IDEA + Git协同回滚的8个隐藏配置项(官方文档未公开,团队内部培训PPT首次流出)
  • 图解人工智能(74)人工智能前沿-生物拟态证据
  • 【IDEA Git冲突解决终极指南】:20年老司机亲授5大高频场景避坑法+3步秒解技巧
  • 微信小程序UI自动化测试实战:基于Minium的完整方案与避坑指南