BZOJ1707 : [Usaco2007 Nov]tanning分配防晒霜
S向每头奶牛连边,容量1
每个防晒霜向T连边,容量cover
每头奶牛向SPF在自己范围内的防晒霜连边,容量inf
用线段树优化建图跑最大流即可。
- #include<cstdio>
- const int N=7010,inf=~0U>>2;
- struct edge{int t,f;edge*nxt,*pair;}*g[N],*d[N],pool[60000],*cur=pool,*p;
- int n,m,tot,root,id[N],l[N],r[N],spf[N][2],i,x,y,S,T,h[N],gap[N],maxflow;
- inline int min(int x,int y){return x<y?x:y;}
- inline void add(int s,int t,int f){
- p=cur++;p->t=t;p->f=f;p->nxt=g[s];g[s]=p;
- p=cur++;p->t=s;p->f=0;p->nxt=g[t];g[t]=p;
- g[s]->pair=g[t];g[t]->pair=g[s];
- }
- int sap(int v,int flow){
- if(v==T)return flow;
- int rec=0;
- for(edge *p=d[v];p;p=p->nxt)if(h[v]==h[p->t]+1&&p->f){
- int ret=sap(p->t,min(flow-rec,p->f));
- p->f-=ret;p->pair->f+=ret;d[v]=p;
- if((rec+=ret)==flow)return flow;
- }
- if(!(--gap[h[v]]))h[S]=T;
- gap[++h[v]]++;d[v]=g[v];
- return rec;
- }
- int build(int a,int b){
- int x=++tot;
- if(a==b)return id[a]=x;
- int mid=(a+b)>>1;
- add(x,l[x]=build(a,mid),inf),add(x,r[x]=build(mid+1,b),inf);
- return x;
- }
- void ask(int x,int a,int b,int c,int d,int p){
- if(c<=a&&b<=d){add(p,x,inf);return;}
- int mid=(a+b)>>1;
- if(c<=mid)ask(l[x],a,mid,c,d,p);
- if(d>mid)ask(r[x],mid+1,b,c,d,p);
- }
- int main(){
- scanf("%d%d",&n,&m);tot=n+m;
- root=build(1,1000);
- S=tot+1,T=S+1;
- for(i=1;i<=n;i++)scanf("%d%d",&spf[i][0],&spf[i][1]),add(S,i,1);
- for(i=1;i<=m;i++)scanf("%d%d",&x,&y),add(id[x],i+n,inf),add(i+n,T,y);
- for(i=1;i<=n;i++)ask(root,1,1000,spf[i][0],spf[i][1],i);
- for(gap[0]=T,i=1;i<=T;i++)d[i]=g[i];
- while(h[S]<T)maxflow+=sap(S,inf);
- return printf("%d",maxflow),0;
- }
BZOJ1707 : [Usaco2007 Nov]tanning分配防晒霜的更多相关文章
- [BZOJ1707] [Usaco2007 Nov] tanning分配防晒霜 (贪心)
Description 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SP ...
- 【BZOJ】1707: [Usaco2007 Nov]tanning分配防晒霜
[算法]贪心扫描线(+堆) [题意]给定n头牛有区间[a,b],m个防晒霜值为ai,每个可以使用bi次,每次可以使包含它的区间涂到防晒霜,问最多被涂牛数. [题解] 参考:[bzoj1707]: [U ...
- 1707: [Usaco2007 Nov]tanning分配防晒霜
1707: [Usaco2007 Nov]tanning分配防晒霜 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 548 Solved: 262[Sub ...
- 【bzoj1707】[Usaco2007 Nov]tanning分配防晒霜 贪心+Treap
题目描述 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SPF值分别为mi ...
- BZOJ1707:[Usaco2007 Nov]tanning分配防晒霜
我对贪心的理解:https://www.cnblogs.com/AKMer/p/9776293.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem ...
- BZOJ 1707: [Usaco2007 Nov]tanning分配防晒霜
Description 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SP ...
- BZOJ 1707 [Usaco2007 Nov]tanning分配防晒霜(扫描线+贪心+优先队列)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1707 [题目大意] 每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值 防晒霜的作 ...
- BZOJ——T 1707: [Usaco2007 Nov]tanning分配防晒霜
http://www.lydsy.com/JudgeOnline/problem.php?id=1707 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 8 ...
- bzoj 1707: [Usaco2007 Nov]tanning分配防晒霜【贪心||最大流(?)】
洛谷上能过的最大流bzoj上T了--但是贪心做法明明在洛谷上比最大流要慢啊--如果是最大流的话就是裸题了吧 说一下贪心,就按照防晒霜排序,然后对每一个防晒霜选一头可以使用的且r最小的牛 就,没了. 贪 ...
随机推荐
- NGUI的部分控件无法更改layer?
http://momowing.diandian.com/post/2012-09-17/40038835795 今天狗日的遇到这样的问题,这是一个imagebutton:,它的层定义为:,NGUI里 ...
- HDU 3371 kruscal/prim求最小生成树 Connect the Cities 大坑大坑
这个时间短 700多s #include<stdio.h> #include<string.h> #include<iostream> #include<al ...
- HTML前端——CSS样式
使用CSS样式的方式: HTML<!DOCTYPE> 声明标签 内链样式表<body style="background: green; margin: 0; paddin ...
- 什么是mixin
转自:http://guangboo.org/2013/01/28/python-mixin-programming http://en.wikipedia.org/wiki/Mixin http:/ ...
- MVC 详细说明
.NET MVC执行过程: 1.网址路由比对 2.执行Controller与Action 3.执行View并返回结果 在使用MVC中是由IgnoreRoute()辅助方法对比成功的,会导致程序直接跳离 ...
- Junit4测试
1.junit初级入门 2.常用注解 3.运行流程 4.测试套件使用 5.参数化设置
- java Long的iniValue出错
Long l1 = 2500000000L; l1.intValue() 的值是负数 这里 System.out.println(Integer.MAX_VALUE); // 2147483647最大 ...
- js判空
2014年9月3日 11:36:10 转载的: http://blog.sina.com.cn/s/blog_755168af0100vsik.html typeof用法 typeof的运算数未定义, ...
- 利用 FFmpeg 和 ImageMagick, AVI 转 GIF(不失真)
利用[TMPGEnc 4.0 XPress] 或 [TMPGEnc Video Mastering Works 5] 生成 AVI 这个视频编辑软件,可对每个帧进行操作 1.生成每个帧的 PNG ff ...
- 如何在Ubuntu下安装”.deb“、”.bin“、”.tar.gz“、”.tar.bz2“格式的软件包!
今天在Ubuntu11.10中安装Google chrome浏览器是遇到了问题,下载好的“.deb”格式的安装文件google-chrome-stable.deb双击后或者右键快捷菜单选择 Synap ...