考虑没有爆发,那么相当于是带权最小不可交路径覆盖,由于只能从编号小的到编号大的,因此一定是DAG,而DAG的最小路径覆盖可以拆点并跑最大流,那么带权的只需要跑费用流即可(S向i连(1,0)的边,i’向T连(1,0)的边,i向j’连(1,t)的边,其中i->j有时间为t的边)。
考虑爆发操作,相当于让任意两点之间都能够新增一条边,但这样跑边数太多,可以直接从S连向i’(1,ai)的边(ai表示i爆发的代价)即可。

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 2005
4 struct ji{
5 int nex,to,len,cost;
6 }edge[N*20];
7 queue<int>q;
8 int E,n,m,t,x,y,head[N],d[N],vis[N],from[N];
9 void add(int x,int y,int z,int w){
10 edge[E].nex=head[x];
11 edge[E].to=y;
12 edge[E].len=z;
13 edge[E].cost=w;
14 head[x]=E++;
15 if (E&1)add(y,x,0,-w);
16 }
17 bool spfa(){
18 memset(d,0x3f,sizeof(d));
19 memset(vis,0,sizeof(vis));
20 q.push(0);
21 d[0]=0;
22 while (!q.empty()){
23 int k=q.front();
24 q.pop();
25 vis[k]=0;
26 for(int i=head[k];i!=-1;i=edge[i].nex){
27 int v=edge[i].to;
28 if ((edge[i].len)&&(d[v]>d[k]+edge[i].cost)){
29 d[v]=d[k]+edge[i].cost;
30 from[v]=i;
31 if (!vis[v]){
32 vis[v]=1;
33 q.push(v);
34 }
35 }
36 }
37 }
38 return d[t]<0x3f3f3f3f;
39 }
40 int dinic(){
41 int ans=0;
42 while (spfa()){
43 ans+=d[t];
44 for(int i=t;i;i=edge[from[i]^1].to){
45 edge[from[i]].len--;
46 edge[from[i]^1].len++;
47 }
48 }
49 return ans;
50 }
51 int main(){
52 scanf("%d%d",&n,&m);
53 memset(head,-1,sizeof(head));
54 for(int i=1;i<=n;i++){
55 scanf("%d",&t);
56 add(0,i,1,0);
57 add(0,i+n,1,t);
58 add(i+n,2*n+1,1,0);
59 }
60 for(int i=1;i<=m;i++){
61 scanf("%d%d%d",&x,&y,&t);
62 if (x>y)swap(x,y);
63 add(x,y+n,1,t);
64 }
65 t=2*n+1;
66 printf("%d",dinic());
67 }

[bzoj1927]星际竞速的更多相关文章

  1. BZOJ-1927 星际竞速 最小费用最大流+拆点+不坑建图

    1927: [Sdoi2010]星际竞速 Time Limit: 20 Sec Memory Limit: 259 MB Submit: 1593 Solved: 967 [Submit][Statu ...

  2. [BZOJ1927]星际竞速(费用流)

    Description 题意:给定n个点m条边的无向图,只能从编号小的到编号大的,且要求经过所有点刚好一次,而且可以从任意点瞬移到i号点并花费代价Ai,求最小代价. n<=800,m<=1 ...

  3. [SDOI2010][bzoj1927] 星际竞速 [最小路径覆盖+费用流]

    题面 传送门 思路 仔细观察题目要求的东西,发现就是求一个最小路径覆盖,只不过可以跳跃(就是那个鬼畜的超级跳跃) 那么就直接上最小路径覆盖模版 对每个点,拆成两个点$X_i$和$Y_i$,建立超级源超 ...

  4. bzoj1927: [Sdoi2010]星际竞速

    跟上一题几乎一样... #include<cstdio> #include<cstring> #include<iostream> #include<algo ...

  5. BZOJ1927 [Sdoi2010]星际竞速 【费用流】

    1927: [Sdoi2010]星际竞速 Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 2582  Solved: 1601 [Submit][St ...

  6. BZOJ 1927: [Sdoi2010]星际竞速

    1927: [Sdoi2010]星际竞速 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2051  Solved: 1263[Submit][Stat ...

  7. 1927: [Sdoi2010]星际竞速

    1927: [Sdoi2010]星际竞速 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 2040  Solved: 1257[Submit][Stat ...

  8. C++之路进阶——codevs2313(星际竞速)

    2313 星际竞速 2010年省队选拔赛山东  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master     题目描述 Description 10 年一度的银河系 ...

  9. BZOJ 1927: [Sdoi2010]星际竞速 费用流

    1927: [Sdoi2010]星际竞速 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

随机推荐

  1. MySQL8.0允许外部访问

    MySQL8.0允许外部访问     版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/h99 ...

  2. 升级了 Windows 11 正式版,有坑吗?

    今天磊哥去公司上班,惊喜的发现 Windows 提示更新了,并且是 Windows 11 正式版,这太让人开心了,二话不说"先升为敬". ​ 下载更新 下载完咱就重启更新呗. Wi ...

  3. 关于web项目中的资源跳转

    1.跳转包括两种方式: 转发 forward 重定向 redirect 2.两种方式的代码: AServlet类: //向request范围中存储数据 request.setAttribute(&qu ...

  4. 洛谷4208 JSOI2008最小生成树计数(矩阵树定理+高斯消元)

    qwq 这个题目真的是很好的一个题啊 qwq 其实一开始想这个题,肯定是无从下手. 首先,我们会发现,对于无向图的一个最小生成树来说,只有当存在一些边与内部的某些边权值相同的时候且能等效替代的时候,才 ...

  5. SpringBoot 后端接收前端传值的方法

    1.通过HttpServletRequest接收,适用于GET 和 POST请求方式       通过HttpServletRequest对象获取请求参数 @RestController @Reque ...

  6. NXOpen.CAM.CAMSetup.CopyObjects的使用

    复制CAM对象 Public Function CopyObjects(ByVal view As NXOpen.CAM.CAMSetup.View, ByVal objectsToBeMoved() ...

  7. 7-Zip

    7-Zip https://www.7-zip.org/

  8. C++控制台应用程序一闪而过的解决方法

    Visual Studio 2017 C++控制台应用程序, 如果编译时发现黑框一闪而过,请按以下步骤操作: 右键project → 属性 → 链接器 → 系统 → 子系统,在下拉菜单中改为控制台.

  9. linux性能优化基础——iommu相关配置

    此篇文档介绍了IOMMU相关的信息: https://blog.chaosjohn.com/Check-VT-D-or-IOMMU-under-Linux.html iommu和vt-d都是io半虚拟 ...

  10. [软工顶级理解组] Beta阶段事后分析

    目录 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结 质量提高 会议截图 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰 ...