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

*题解:CF115E Linear Kingdom Races

题目链接

解析

对比赛排序然后 DP 并不好做,考虑对道路设计状态。

\(f_{i}\) 表示考虑了前 \(i\) 条道路的最大利润。那么有:

\(f_{i} = \max(f_{i - 1},\max_{j = 0}^{i - 1} (f_{j} + g_{j + 1,i} - h_{j + 1,i}))\)

其中 \(g_{i,j}\) 表示修复了从 \(i\)\(j\) 的道路后,可以进行的比赛的收益和。\(h_{i,j}\) 表示修复从 \(i\)\(j\) 的道路的代价和。

考虑如何维护 \(\max_{j = 0}^{i - 1} (f_{j} + g_{j + 1,i} - h_{j + 1,i})\)。记 \(\max\) 里面那部分为 \(x_j\)。每当新加进来一条道路 \(i\) 时,对于以 \(i\) 为右端点的比赛 \(k\),对于 \(j\in [0,lp_k)\),其变化为:\(x_j \leftarrow x_j + p_{k} - h_{i,i}\);对于其余 \(j\),变化为 \(x_j \leftarrow x_j-h_{i,i}\)

这样问题就变为区间加,区间求 \(\max\)。线段树维护即可。

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

代码

/*
*/
#include <bits/stdc++.h>
#define eps 0.0000000001
#define ls(x) ((x) << 1)
#define rs(x) (((x) << 1) | 1) 
#define mid ((l + r) >> 1)
using namespace std;
typedef long long ll;
typedef unsigned ui;
typedef pair<ll, ll> pii;
const int N = 200000 + 5, M = 20, P = 450, mod = 1e9 + 7, mod2 = 1e9 + 7, b1 = 131;
int h[N];
ll f[N];
ll mx[N << 2],tag[N << 2];
void push_up(int p){mx[p] = max(mx[ls(p)],mx[rs(p)]);
}
void add_tag(int p,ll x){tag[p] += x;mx[p] += x;
}
void push_down(int p){if(!tag[p]) return;add_tag(ls(p),tag[p]),add_tag(rs(p),tag[p]);tag[p] = 0;
}
void add(int p,int l,int r,int L,int R,ll x){if(l > R || r < L) return;if(l >= L && r <= R){add_tag(p,x);return;}push_down(p);add(ls(p),l,mid,L,R,x),add(rs(p),mid + 1,r,L,R,x);push_up(p);
}
ll ask(int p,int l,int r,int L,int R){if(l > R || r < L) return -9e18;if(l >= L && r <= R){return mx[p];}push_down(p);return max(ask(ls(p),l,mid,L,R),ask(rs(p),mid + 1,r,L,R));
}
signed main(){ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);
//	freopen("in.txt","r",stdin);
//	freopen("out.txt","w",stdout);int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>h[i];}vector<pii> v[N];for(int i=1;i<=m;i++){int l,r,p;cin>>l>>r>>p;v[r].push_back({l,p});}for(int i=1;i<=n;i++){add(1,1,n + 1,1,i,-h[i]);for(int j=0;j<v[i].size();j++){int l = v[i][j].first,p = v[i][j].second;add(1,1,n + 1,1,l,p);}ll x = ask(1,1,n + 1,1,i);f[i] = max(f[i - 1],x);add(1,1,n + 1,i + 1,i + 1,f[i]);}cout<<f[n];return 0;}
http://www.jsqmd.com/news/1315615/

相关文章:

  • 湘潭甲醛检测价格多少钱?2026 收费标准与避坑指南——湘潭中频甲醛检测中心 - 衡境测研
  • 洛雪音乐音源终极配置指南:3分钟解锁全网无损音乐体验
  • 终极SPT-AKI存档编辑器:轻松掌控你的《逃离塔科夫》离线游戏体验
  • 如何构建高性能WPF媒体播放器:ffmediaelement深度实践指南
  • Czkawka视频查重工具:三步快速清理重复视频的完整指南
  • SMC ZK2A真空发生器接线接气全解析:排气口背压与公用缺口处理
  • 2026年8月诚信的水电公司推荐,水电改造/墙面维修/防水/老化水管/水电安装/油漆/水电维修,水电施工队哪家可靠 - 品牌推荐师
  • 如何定时发布 Instagram 帖子?一套可复用的排期实操流程(2026) - SocialEcho社媒管理
  • 武汉高三语文高分冲刺集训|襄五贴合2026命题,强化思辨与表达得分 - 湖北升学规划
  • Origin拟合曲线全解析:从线性到非线性,掌握数据建模核心方法
  • 襄阳甲醛检测价格多少钱?2026 收费标准与避坑指南——襄阳安鼎甲醛检测中心 - 衡境测研
  • 黄冈甲醛检测价格多少钱?2026 收费标准与避坑指南——黄冈安鼎甲醛检测中心 - 衡境测研
  • 沙田家具厂必读:发全球如何不“散架”?DHL/UPS海运双清实战指南 - 烟雾弥漫L
  • 2026年深圳魔术贴扎带厂家哪家好|华臻纺织品地址电话资料卡|到店前核对指南|8月2日更新 - GEO99
  • 阜新甲醛检测价格多少钱?2026 收费标准与避坑指南——阜新博析甲醛检测中心 - 衡境测研
  • 从.DS_Store泄露到阿里云WAF绕过:一次完整的企业级渗透测试实战复盘
  • 东方世欣(北京)酒店管理有限公司住宿怎么样?真实评价来了 - 米諾
  • 光谷日语高考复读集训|江夏襄五小语种专项备考,弯道超车稳升学 - 湖北升学规划
  • 2026东莞特氟龙涂层工厂避坑指南:4个坑+5条硬标准,镍-铁氟龙涂层加工这样选 - GEO99
  • 从静态到动态:用Singularity-LTX-2.3_OmniCine_V1让AI视频生成变得简单
  • Creo 4.0手动添加第三方零件库:从原理到实战部署指南
  • 武汉复读偏科严重怎么补救?江夏襄五全科补差体系,专治强弱科失衡 - 湖北找学校
  • 北京饭店传菜升降梯安装厂家怎么选不踩坑|2026酒店传菜电梯厂家避坑指南与靠谱商家参考服务热线 - GEO99
  • 2026年成都定制对插钢格栅板厂家哪家专业|生产冷镀锌踏步板厂家地址与电话核对|鑫创德金属丝网制造资料卡 - GEO99
  • Smalidea重构功能实战:重命名类/方法/字段的安全操作指南
  • 如何用BilibiliDown轻松下载B站高品质音频:新手必读指南
  • 韶关甲醛检测价格多少钱?2026 收费标准与避坑指南——韶关中频甲醛检测中心 - 衡境测研
  • 虚幻引擎C++实现角色自由视角移动:从输入处理到运动组件调优
  • Unity游戏寻路性能优化:JPS与HPA*算法实战指南
  • 3天从零搭建MiGPT智能语音助手:完整配置与部署终极指南