考虑没有爆发,那么相当于是带权最小不可交路径覆盖,由于只能从编号小的到编号大的,因此一定是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. .NET 开发一个服务器 应用管理工具

    一:背景 1.Anno.Deploy Anno.Deploy可以和 Anno集成使用,用于部署新的服务.启动服务.停止服务.清理服务.也可以单独使用,用于守护程序. 使用方法 1.和Anno集成使用 ...

  2. 山顶点提取(ArcPy实现)

    一.背景 山顶点指哪些在特定邻域分析范围内,该点都比周围点高的区域.山顶点是地形的重要特征点,它的分布与密度反映了地貌的发育特征,同时也制约着地貌发育.因此,如何基于DEM数据正确有效的提取山顶点,在 ...

  3. SpringBoot之日志注解和缓存优化

    SpringBoot之日志注解和缓存优化 日志注解: 关于SpringBoot中的日志处理,在之前的文章中页写过: 点击进入 这次通过注解+Aop的方式来实现日志的输出: 首先需要定义一个注解类: @ ...

  4. 分布式/微服务必配APM系统,SkyWalking让你不迷路

    前言 如今分布式.微服务盛行,面对拆分服务比较多的系统,如果线上出现异常,需要快速定位到异常服务节点,假如还用传统的方式排查肯定效率是极低的,因为服务之间的各种通信会让定位更加繁琐:所以就急需一个分布 ...

  5. python socket 基本使用

    socket通常也叫做"套接字",用于连接server client,是一个通信链的句柄,应用程序通常通过套接字向网络发出请求或应答网络请求. 就像python 处理file一样: ...

  6. Scrum Meeting 0605

    零.说明 日期:2021-6-5 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 困难 qsy PM&前端 暂无 重新设 ...

  7. BUAA软件工程结对项目作业

    BUAA软件工程结对项目 小组成员:16005001,17373192 1.教学班级和项目地址 项目 内容 这个作业属于哪个课程 博客园班级连接 这个作业的要求在哪里 结对项目作业 我在这个课程的目标 ...

  8. SpringBoot加密配置属性

    一.背景 在系统中的运行过程中,存在很多的配置属性,比如: 数据库配置.阿里云配置 等等,这些配置有些属性是比较敏感的,是不应直接以明文的方式出现在配置文件中,因此对于这些配置我们就需要加密来处理. ...

  9. xUtils3的使用教程

    首先在build.gradle下的dependencies下添加引用. implementation 'org.xutils:xutils:3.3.36' 然后创建一个表实体. package com ...

  10. Access的分页代码

    if giPage = 1 then begin sSQL := 'SELECT TOP 10 * FROM dw_demo WHERE '+sWhere +' ORDER BY '+sOrder+' ...