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

20260525 紫题训练

P3872 [TJOI2010] 电影迷

考虑最小割模型,将一部电影放入 \(S\) 看作去看,放入 \(T\) 看作不去看。

先假设将所有体验值是正数的电影全看完。

对于一部体验值为 \(x\) 的电影 \(i\)

  • \(x>0\),不去看它则总体验值会减少 \(x\),相当于放入 \(T\) 部需要 \(x\) 的代价,连边 \((S\to i,x)\)
  • \(x\le0\),去看它则总体验值会减少 \(-x\),相当于放入 \(S\) 部需要 \(-x\) 的代价,连边 \((i\to T,-x)\)

对于两部有依赖关系的电影 \(x,y\),若看了 \(x\) 没看 \(y\),即将 \(x\) 选入 \(S\) 部而 \(y\) 选入 \(T\) 部有 \(d_{x,y}\) 的代价。连边 \((x\to y,d_{x,y})\)

根据最大流最小割定理,按上面建出图后的最大流就是最小代价。

#include<bits/stdc++.h>
using namespace std;
namespace Network{constexpr int N=1005;int n,S,T,gap[N],dep[N];struct edge{int x,w,id;};int maxflow;vector<edge>s[N];vector<edge>::iterator cur[N];void clear(){for(int i=1;i<=n;i++)s[i].clear();n=0;}void add(int u,int v,int w){n=max({n,u,v});int id1=s[u].size();int id2=s[v].size();s[u].push_back({v,w,id2});s[v].push_back({u,0,id1});}void bfs(){queue<int>q;q.emplace(T);memset(gap,0,sizeof gap);memset(dep,-1,sizeof dep);for(gap[dep[T]=0]=1;!q.empty();){int x=q.front();q.pop();for(auto p:s[x]) if(!~dep[p.x])q.push(p.x),gap[dep[p.x]=dep[x]+1]++;}}int dfs(int x,int flow){if(x==T) returnmaxflow+=flow,flow;int res=0;for(auto &it=cur[x];it!=s[x].end();it++){auto &p=*it;if(p.w&&dep[p.x]+1==dep[x]){int t=dfs(p.x,min(flow-res,p.w));p.w-=t,s[p.x][p.id].w+=t,res+=t;if(res==flow) return res;}}gap[dep[x]]--,gap[++dep[x]]++;if(!gap[dep[x]-1]) dep[S]=n;return res;}int ISAP(int st,int ed){for(S=st,T=ed,maxflow=0,bfs();dep[S]<n;dfs(S,INT_MAX))for(int i=1;i<=n;i++) cur[i]=s[i].begin();return maxflow;}
};using Network::add;
constexpr int N=505;
int n,m,ans;
int main(){scanf("%d%d",&n,&m);int S=n+1,T=n+2;for(int i=1,x;i<=n;i++)scanf("%d",&x),x>0?(ans+=x,add(S,i,x)):add(i,T,-x);for(int i=1,x,y,d;i<=m;i++)scanf("%d%d%d",&x,&y,&d),add(x,y,d);printf("%d",ans-Network::ISAP(S,T));return 0;
}
http://www.jsqmd.com/news/884783/

相关文章:

  • Linux 负载均衡的 nr_balance_failed:均衡失败的退避机制
  • Godot 4.2 + C# 避坑指南:手把手教你打包发布你的第一个2D游戏到Steam
  • 风扇控制软件终极指南:如何用FanControl彻底解决电脑噪音与散热问题
  • 2026年江苏省SCMP培训选哪家?众智商学院课程特色与真实评价 - 众智商学院课程中心
  • 铜仁中医学类院校怎么选?2026年中医药教育升学完全指南 - 优质企业观察收录
  • 毕节卫生类学校怎么选?2026年医卫中职升学完全指南 - 优质企业观察收录
  • 你的自动化工作流还在“线性迭代”?——Lindy范式下的非对称升级路径:1次重构=3年运维成本归零
  • Linux CPU 容量感知:capacity_of 与异构计算调度
  • 国内超高分子量聚乙烯板生产企业实力排行盘点 - 奔跑123
  • Unity RectTransform动态修改原理与避坑指南
  • 2026年5月毕业生找工作平台推荐!高效解决求职难痛点 - 讲清楚了
  • 在Ray集群中使用vLLM部署LLM模型并集成Prometheus和Grafana进行指标观测的实践
  • 利用模型广场为智能网站选择最合适的AI引擎
  • 2026天津黄金回收市场白皮书:个人旧金资产处置攻略 - 合扬奢侈品交易中心
  • 盛誉轩黄金回收|张家口黄金变现避坑攻略(2026年5月实时行情版) - 润富黄金珠宝行
  • 顶奢变现门道!重庆理查德米勒名表回收,老牌机构更稳妥 - 奢侈品回收测评
  • Unity WebGL IL2CPP构建失败的根源与精准修复指南
  • flowcontainer实战:加密流量特征工程的高效提取方案
  • 福满多黄金回收|2026年5月金价高位震荡,吉林黄金变现全攻略 - 润富黄金珠宝行
  • 北京风水大师排行:实战资质与服务场景全维度对比 - 互联网科技品牌测评
  • Unity资源管理优化:YooAsset实现加载提速50%与零冗余部署
  • 霓虹文字生成失败率高达68.3%?2024 Q2实测数据揭示:--ar 16:9与--q 2的隐性耦合陷阱及安全参数矩阵
  • 使用libusb-win32驱动复活老旧USB硬件:以Elektor Magic Eye为例
  • 拒绝无效改重!真正能过查重的万能技巧
  • 如何快速解锁MacBook Touch Bar完整功能:跨平台驱动完整指南
  • 金裕恒黄金回收|2026年5月东莞黄金回收行情解读与变现指南 - 润富黄金珠宝行
  • 幸福黄金回收——唐山本地老店用十年口碑守护市民黄金变现安全 - 润富黄金珠宝行
  • Keil C166宏编程中A25错误的解析与修复
  • 深度学习赋能科学计算:从资源预测到精准调度实践
  • STM32CubeMX配置SPI驱动RC522避坑指南:从引脚分配到HAL库函数调用的完整流程