题目链接:HDU - 6437


其他博客中基本上都是O(n+m*m)复杂度的连边。

但是其实可以优化到O(n+m)

我们对每种种类,分别看成两层图,然后第一种是第一类的,第二层是第二类的。如果选择某个节目,那么看完之后连向本身的下一个点则 -W 的费用,否则连向另一层点为 0 的费用。


AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int inf=0x3f3f3f3f;
const int N=610,M=1e6+10;
int n,m,s,t,K,W,d[N],st[N],vis[N],cnt,ss;
int head[N],nex[M],to[M],w[M],flow[M],tot;
inline void ade(int a,int b,int c,int d){to[++tot]=b; nex[tot]=head[a]; w[tot]=d; flow[tot]=c; head[a]=tot;
}
inline void add(int a,int b,int c,int d){ade(a,b,c,d);  ade(b,a,0,-d);}
inline int spfa(){queue<int> q; q.push(s); memset(d,0x3f,sizeof d); d[s]=0; memset(st,0,sizeof st);while(q.size()){int u=q.front(); q.pop();    vis[u]=0;for(int i=head[u];i;i=nex[i])   if(flow[i]&&d[to[i]]>d[u]+w[i]){d[to[i]]=d[u]+w[i];   if(!vis[to[i]]) q.push(to[i]),vis[to[i]]=1;}}return d[t]<inf;
}
int dfs(int x,int f){if(x==t) return f;int fl=0; st[x]=1;for(int i=head[x];i&&f;i=nex[i]){if(!st[to[i]]&&flow[i]&&d[to[i]]==d[x]+w[i]){int mi=dfs(to[i],min(flow[i],f));flow[i]-=mi,flow[i^1]+=mi,fl+=mi,f-=mi;}}return fl;
}
inline int zkw(){int res=0;while(spfa())   if(d[t]<=0) res-=dfs(s,inf)*d[t];return res;
}
void solve(){cin>>n>>m>>K>>W; tot=1; memset(head,0,sizeof head); t=N-5,ss=t-1; cnt=2*n;add(s,ss,K,0),add(ss,1,K,0),add(ss,n+1,K,0),add(n,t,K,0),add(2*n,t,K,0);for(int i=1;i<n;i++)  add(i,i+1,inf,0),add(i+n,i+n+1,inf,0);for(int i=1,a,b,c,op;i<=m;i++){cin>>a>>b>>c>>op;add(a+op*n,++cnt,1,-c),add(cnt,b+op*n,1,W),add(cnt,b+(!op)*n,1,0);}cout<<zkw()<<'\n';
}
signed main(){int T; cin>>T; while(T--) solve();return 0;
}

HDU - 6437相关推荐

  1. ajax请求必须打断点才能成功,Jquery等待ajax执行完毕继续执行(断点调试正常,运行异常)...

    以前写过一个程序,发现用断点调试的时候,一步步的运行,程序是可以的,但是去了断点程序就出现了问题. $(document).ready(function(){ var arra=new Array() ...

  2. 网络流专题(完结撒花)

    题目及链接地址 TOJ4085: Drainage Ditcheshttp://210.32.82.1/acmhome/showstatus.do?&page=1&problemId= ...

  3. HDU 4389 - X mod f(x)

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=4389 2012多校,第9场,1010 . 问题是,询问区间内 存在多少个 哈沙德数(Harshad ...

  4. hdu 4389 囧,打表

    http://acm.hdu.edu.cn/showproblem.php?pid=4389 题意 :一个数能被他各个位数之和整除则符合要求,给L,R,问区间里有多少个数符合要求. 囧,居然打表就能过 ...

  5. HDU——1106排序(istringstream的使用、STLvector练习)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  6. hdu 5438 Ponds 拓扑排序

    Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...

  7. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  8. hdu 1312 Red and Black 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 第二条深搜,题目并不难,但是做了我好久好久,由于一个细节,让我赌上了一个晚上的时间. 题目大意: ...

  9. HDU 1429 胜利大逃亡(续) (BFS+位压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

  10. hdu 1272 小希的迷宫

    Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该 ...

最新文章

  1. python简单代码画图-Python竟能画这么漂亮的花,帅呆了(代码分享)
  2. Pytorch install
  3. 济南泉水与城市生态主题 第四届泉水文化论坛第二次会议
  4. html 中一个格子拆分成两个_一个效果惊人的数字游戏
  5. 判断点是否在三角形内
  6. 学java出来工作会很忙吗?
  7. 明年起Polkascan不再为Kulupu提供服务
  8. 深度学习TF—3.神经网络全连接层
  9. Tensorflow:print输出控制
  10. hwd分别是长宽高_丰田重磅新RAV4荣放!不仅颜值高了 配置还再升级,仅18万
  11. LM算法——列文伯格-马夸尔特算法(最速下降法,牛顿法,高斯牛顿法)(完美解释负梯度方向)
  12. 云+智能的羊群效应显现,百度用“云智一体”坐定头羊位置
  13. 安装mysql staring server 失败 已经成功决解。
  14. A Survey on Vision Transformer
  15. SecureBlackbox.NET 22.0.8455 Crack
  16. 【第八篇】Qt学习与使用---设置应用程序的ICON图标
  17. [Java 基础] 深入理解List的toArray()方法和toArray(T[] a)方法
  18. 作为一个码工,意外走入了一个充满PM的会议室
  19. 绝妙!不用外部电路检测芯片工作电压!
  20. 创业板“市盈率” PE ratio

热门文章

  1. SAP FICO 第三节 BDC和LTMC导入S4财务科目
  2. QQ坦白说解密解决方案(二)
  3. 做课题与科研项目常用的研究方法
  4. mpa和pis_1psia等于多少mpa
  5. 百万级数据库优化方案大全
  6. 使用Python进行文件快速搜索(建立文件搜索索引)
  7. 来自阿里十余年的老架构师自述:成为架构师你只差了一步
  8. 电芯容量在前期循环中容量增加_锂电池随着使用次数增加而最大容量下降,为什么...
  9. 各种坐标系下的散度、梯度、旋度公式
  10. word文件损坏打不开如何修复?