当前位置: 首页 > 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.rkmt.cn/news/1381448.html

相关文章:

  • 突破AI编码助手的设备限制:Cursor Pro功能的技术实现与架构解析
  • 在多轮对话任务中观察 Taotoken 路由策略对响应一致性的影响
  • 深入硬件底层:SMUDebugTool AMD Ryzen处理器调试与优化完全指南
  • 保姆级教程:在Ubuntu 20.04上搞定华为云桌面(CloudClient)和VPN(SecoClient)的完整配置
  • 如何快速获取网易云和QQ音乐歌词?这可能是最完整的免费工具指南
  • 如何快速实现U盘文件自动备份:USBCopyer终极指南
  • 英雄联盟自动化助手LeagueAkari:基于LCU API的智能游戏体验提升方案
  • 番茄小说下载器:构建个人数字图书馆的完整技术方案
  • UE5.3手把手教你用后期处理材质实现热成像特效(含蓝图切换与角色高亮)
  • 避坑指南:UE热成像效果中,角色被遮挡就‘隐身’了?教你用Custom Stencil解决!
  • 告别生硬视差!在UE5中结合CameraPosition与WorldPosition,让材质动态更自然
  • 为内容创作团队搭建支持多模型切换的文案生成与润色工作流
  • Unity RectTransform动态修改原理与避坑指南
  • 2026年5月毕业生找工作平台推荐!高效解决求职难痛点 - 讲清楚了
  • 在Ray集群中使用vLLM部署LLM模型并集成Prometheus和Grafana进行指标观测的实践
  • 盛誉轩黄金回收|张家口黄金变现避坑攻略(2026年5月实时行情版) - 润富黄金珠宝行
  • Unity WebGL IL2CPP构建失败的根源与精准修复指南
  • 顶奢变现门道!重庆理查德米勒名表回收,老牌机构更稳妥 - 奢侈品回收测评
  • CA-CFAR、GO-CFAR、SO-CFAR怎么选?一张图看懂三种恒虚警检测算法的适用场景与避坑指南
  • 如何用免费工具解锁QQ音乐、网易云音乐等加密格式:3分钟解决音乐播放限制
  • 手把手教你用华为eNSP模拟器搭建一个真实的大学校园网(含完整配置脚本)
  • 5个高效技巧彻底清理macOS,让磁盘空间翻倍的终极解决方案
  • Mac Mouse Fix:让你的普通鼠标瞬间变身“超级鼠标“的3个神奇技巧
  • QT5.13.2项目实战:告别全屏遮挡,手把手教你定制悬浮式Virtual Keyboard
  • 5个核心技术方案:Tomato-Novel-Downloader实战指南
  • SAP CS20批量改BOM,一个开关没开导致报错?手把手教你排查与配置
  • 北京风水大师排行:实战资质与服务场景全维度对比 - 互联网科技品牌测评
  • 实测才敢推!2026年公认好用的专业AI论文工具
  • 为什么你的Midjourney出图总是“糊”?3大隐性参数陷阱+5步锐化校准法(附V6.1实测数据)
  • 口碑最好的AI论文写作工具推荐(从初稿改稿到过检全流程)适合全体毕业生