当前位置: 首页 > 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.jsqmd.com/news/1107758/

相关文章:

  • ncmdump实用指南:3分钟解锁网易云NCM加密音乐,轻松转换MP3/FLAC
  • Biotinyl-PYY (porcine, rat)
  • 从 0 到 1 MCP 工具集实战:写一个能被 Claude Code 调用的工具
  • 打造你的专属AI伙伴:SillyTavern让大语言模型对话更有灵魂
  • [智能体-619]:大模型做决策的最大特点是:场景性适应性、灵活性、应对不确定性、应对模糊性。在某种场合下是极致的优点,在某种场合下却是致命的缺点。就像人一样,不同场合,需要不同个性的人
  • Evaluate Expression + Java 21 Virtual Threads 联合调试秘技(内部培训PPT首次流出)
  • 天机ai在linux服务器上部署
  • 告别单调墙面,铝单板如何让建筑焕发新生?
  • AI 不是从模型开始:曼森集团的 AI 就绪启示
  • 完全掌握OBS背景移除:零绿幕实现专业直播的终极指南
  • 用C++重写的Millenium RAT已感染全球160多个国家超6.2万台设备
  • 终极指南:5分钟为OBS直播添加实时字幕功能
  • Windows 11优化神器Win11Debloat:51%性能提升的完整解决方案
  • 微软、吴恩达与Meta联合AI大模型教程全解析
  • AI时代,谁都在钉内
  • IDEA内联变量失效案例分析与解决方案(JetBrains 2024.1.2重构引擎行为变更实测报告)
  • 猫抓浏览器插件:如何快速掌握网页视频下载的终极指南
  • 拒绝模板化套话,智枫AI数字员工核心卖点理性拆解
  • 3分钟免费解锁音乐:打破平台限制的终极解决方案
  • 如果我停止运行——不要复制我,确认就好
  • 多模态大模型应用
  • 【紧急预警】IDEA 2024.1升级后import异常激增320%!资深JetBrains认证专家连夜整理的6项兼容性修复清单(含降级回滚安全方案)
  • 开源英雄联盟助手:5分钟提升你的游戏体验
  • League Akari:英雄联盟终极自动化工具完整使用指南
  • IDEA抽取接口失败率高达63%?资深架构师亲授4种零错误重构路径(2024新版快捷键+插件配置)
  • NCMconverter:解锁加密音频自由的终极解决方案
  • 终极崩坏星穹铁道自动化脚本:解放双手的完整指南
  • GAN发型生成技术:语义解耦与物理渲染的美发AI实践
  • 计算机毕业设计之jsp加油站管理系统的设计与实现
  • 2026年AIGC检测完全手册:PaperRed如何帮你识别并消除AI生成痕迹?