博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ1930】【SHOI2003】吃豆豆
阅读量:5209 次
发布时间:2019-06-14

本文共 1904 字,大约阅读时间需要 6 分钟。

初见杀……

原题:

两个PACMAN吃豆豆。一开始的时候,PACMAN都在坐标原点的左下方,豆豆都在右上方。PACMAN走到豆豆处就会吃掉它。PACMAN行走的路线很奇怪,只能向右走或者向上走,他们行走的路线不可以相交。 请你帮这两个PACMAN计算一下,他们俩加起来最多能吃掉多少豆豆。

N < = 2000

 

一眼秒掉,拆点费用流

然后发现内存64M???减少边的数组,提交,RE……

看chty的题解,更换建图方式,减少边数,提交,WA……

然后我的上午没了

解题思路很简单,拆点费用流即可,关键就在减少边数上

先按x第一优先级y第二优先级升序排序,然后对于每个点i从i+1往后扫,同时记录一个max(初值为oo),对于某个扫到的点j,如果a[j]>=a[i]且a[j]<max,就连边并max=a[j]

然后对于每个拆开的点中间连费用为1的边基础上再连费用为0的边,这样做是为了配合上面的建图方式使得前面的点能跳过这个点扫到后面的点

注意一定要连费用为0,否则后果就是直接被干掉一个上午/下午/晚上

主要原因还是因为看到这种建图方式后没有深刻理解就直接写上去了,导致最后没有连出费用为0的边

心好累,实在看不懂怎么建图就看代码把,注意不要忘了费用为0的边

代码:

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 #define ll long long 8 const int oo=1000000000; 9 ll rd(){ll z=0,mk=1; char ch=getchar();10 while(ch<'0'||ch>'9'){
if(ch=='-')mk=-1; ch=getchar();}11 while(ch>='0'&&ch<='9'){z=(z<<3)+(z<<1)+ch-'0'; ch=getchar();}12 return z*mk;13 }14 struct dcd{ll x,y;}a[21000];15 bool cmp(dcd x,dcd y){ return (x.x==y.x)?(x.y
dst[e[i].y]){34 dst[e[i].y]=dst[q[k]]+e[i].c;35 lst[e[i].y]=q[k],lst_e[e[i].y]=i;36 if(!vstd[e[i].y]) q[hd=(hd==qt ? 1 : hd+1)]=e[i].y,vstd[e[i].y]=true;37 }38 vstd[q[k]]=false;39 }40 return dst[t]>0;41 }42 int cstflw(){43 int bwl=0,mnflw=oo;44 while(spfa()){45 mnflw=oo;46 for(int i=t;i!=s;i=lst[i]) mnflw=min(mnflw,e[lst_e[i]].v);47 for(int i=t;i!=s;i=lst[i]){48 bwl+=mnflw*e[lst_e[i]].c;49 //cout<
<<" "<
<<" "<
<
>n; s=0,t=n+n+1,ss=t+1;59 for(int i=1;i<=n;++i) a[i].x=rd(),a[i].y=rd();60 sort(a+1,a+n+1,cmp);61 //for(int i=1;i<=n;++i) cout<
<<" "<
<
=a[i].y && a[j].y<=mx) ist(i+n,j,oo,0),mx=a[j].y;66 //if(a[j].y>=a[i].y && a[j].x>=a[i].x) ist(i+n,j,oo,0);67 ist(ss,i,oo,0),ist(i+n,t,oo,0),ist(i,i+n,1,1),ist(i,i+n,1,0);68 }69 ist(s,ss,2,0);70 cout<
<
View Code

 

转载于:https://www.cnblogs.com/JSL2018/p/6525091.html

你可能感兴趣的文章
曾经SimpleMemory的CSS
查看>>
HTML5——新增的API
查看>>
JS —— 数组去重
查看>>
JS —— 深度克隆
查看>>
JS —— 判断类型
查看>>
ES6——Promise
查看>>
ES6——Set、Map
查看>>
JS —— 圣杯模式(原型链继承)
查看>>
java学习之集合类 Collection接口
查看>>
MySQL基础(用的贼鸡儿多)
查看>>
python将Excel文件内容导入Mysql数据
查看>>
CF786B Legacy(线段树优化建图+最短路)
查看>>
网络编程
查看>>
BZOJ1001[BeiJing2006]狼抓兔子——最小割
查看>>
BZOJ2631tree——LCT
查看>>
BZOJ1115[POI2009]石子游戏——阶梯Nim游戏
查看>>
spfa求次短路
查看>>
初试python
查看>>
文本输入框UITextField和UITextView
查看>>
020
查看>>