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

[题解]【MX-S11】梦熊 NOIP 2025 模拟赛 3 WAOI R7 FeOI R6.5(同步赛) T1~T2

比赛页面

T1. P14520 战争游戏

\(s[l,r]=a_l+\dots+a_r\)

我们考虑初始状态下,小 L 占据 \([1,i]\),小 K 占据 \([i+1,n]\)

\(s[1,i]>s[i+1,n]\),显然小 L 可以将所有兵力都转移到 \(1\) 处,再一举消灭所有小 K 的兵力。

\(s[1,i]\le s[i+1,n]\),小 L 想战胜小 K 就必须夺取部分小 K 的兵力。而小 L 唯一的机会就是第一次操作,因为在这之后小 K 可以将所有兵力都转移到 \(n\) 处。

此时,小 L 能在第一步夺取成功并能取胜,当且仅当:

  • \(a[i]>a[i+1]\)(小 L 能吃过去)
  • \(a[i+2]<a[i]+a[i+1]\)(小 K 不能吃回来)
  • \(s[1,i+1]>s[i+2,n]\)(夺取后能取胜)

时间复杂度 \(O(n)\)

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
int t,n,a[N],s[N];
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>t;while(t--){cin>>n;for(int i=1;i<=n;i++) cin>>a[i],s[i]=s[i-1]+a[i];for(int i=1;i<n;i++){if(s[i]>s[n]-s[i]||(a[i]>a[i+1]&&a[i+2]<a[i]+a[i+1]&&s[i+1]>s[n]-s[i+1])) cout<<"1";else cout<<"0";}cout<<"\n";}return 0;
}

T2. P14521 加减乘除

显然从根节点走到某个节点所累加的数值是固定的,我们将区间的左右端点都减去这个数值,就不需要再考虑数值累加了。

原问题转化为:初始拥有一个数值,只能走区间包含该数值的边,能到达多少节点。

将每个节点到根路径上的区间取一个交集,即询问数值被多少节点的区间覆盖。

离散化一下,前缀和即可解决。

时间复杂度 \(O(n\log n+q)\)

赛时抽了写的树状数组,将就看。

点击查看代码
#include<bits/stdc++.h>
#define int long long
#define eb emplace_back
using namespace std;
const int N=5e5+5,Q=1e6+5;
int n,q,a[N],rt,b[2*N+Q],tn,qr[Q];
struct Ed{int to,l,r;};
struct Sg{int l,r;};
vector<Sg> s;
vector<Ed> G[N];
inline void dfs(int u,int c,int l,int r){c+=a[u];if(l<=r){b[++tn]=l,b[++tn]=r+1;s.eb(Sg{l,r+1});}for(Ed i:G[u]){dfs(i.to,c,max(l,i.l-c),min(r,i.r-c));}
}
inline int lb(int x){return x&-x;}
struct BIT{int s[2*N+Q];inline void chp(int x,int v){for(;x<=tn;x+=lb(x)) s[x]+=v;}inline int qry(int x){int a=0;for(;x;x-=lb(x)) a+=s[x];return a;}
}koishi;
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>q;for(int i=2,f,l,r;i<=n;i++){cin>>f>>l>>r;G[f].eb(Ed{i,l,r});}for(int i=1;i<=n;i++){char c;cin>>c>>a[i];if(c=='-') a[i]=-a[i];}dfs(1,0,-1e18,1e18);for(int i=1;i<=q;i++) cin>>qr[i],b[++tn]=qr[i];sort(b+1,b+1+tn),tn=unique(b+1,b+1+tn)-b-1;for(Sg i:s){i.l=lower_bound(b+1,b+1+tn,i.l)-b;i.r=lower_bound(b+1,b+1+tn,i.r)-b;koishi.chp(i.l,1);koishi.chp(i.r,-1);}for(int i=1;i<=q;i++){qr[i]=lower_bound(b+1,b+1+tn,qr[i])-b;cout<<koishi.qry(qr[i])<<"\n";}return 0;
}

T3. P14522 空之碎物

\(\ominus\)

等题解出了补。

T4. P14523 Ice Drop

http://www.jsqmd.com/news/42280/

相关文章:

  • C# 常用控件(学习笔记6)
  • 移动应用安全测试全面指南:方法与最佳实践
  • Ai元人文:“退一万步”的设想
  • TikTok(抖音)国际现代风水指南1什么是风水?
  • AI元人文:人机差异律——《人机互觉协议》草案
  • Windows-icacls
  • AI元人文:从哲学构想走向日常实践——与LLM共筑价值新文明
  • scoop安装使用PostgreSQL
  • 悟空来路与关山:AI元人文的终极眺望
  • nssm管理redis服务
  • pyslam(3) 开发语义建图 - MKT
  • AI元人文:价值意义的行为化革命与文明协同框架
  • 基于神经网络控制器的倒立摆控制系统simulink建模与仿真,对比模糊控制器
  • Java 字节流与字符流
  • 基于ADMM交替方向乘子法的超大规模储备系统分布式协同优化算法收敛性matlab仿真与分析
  • 安卓助手
  • MySQL 查询优化器
  • 精读GitHub - swift-markdown-ui
  • Bash的快捷键
  • C++学习日志——蓝桥杯课程总结_基础篇/2025.11.16
  • 【Linux】curl基础语法与常用参数详解
  • Linux系统编程初步——冯诺依曼体系结构的理解
  • 2025-11-17 使用nvm下载node包失败
  • 2. 使用Gin处理HTTP请求
  • C++之复合类型(四) - Invinc
  • 20232414 2025-2026-1 《网络与系统攻防技术》实验五实验报告
  • 物流管理,必须掌握的10个要点 - 智慧园区
  • 工程行业中-使用AI报价得可行性-一般(属于能应付但不精确,未测试在数据库全得情况下得效果,总体欠调教)
  • 力扣 第 476 场周赛(A~D)
  • libvte, xfce4-terminal和gnome-terminal,干货满满