洛谷上能过的最大流bzoj上T了……但是贪心做法明明在洛谷上比最大流要慢啊……如果是最大流的话就是裸题了吧

说一下贪心,就按照防晒霜排序,然后对每一个防晒霜选一头可以使用的且r最小的牛

就,没了。

贪心

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cstring>
  5. using namespace std;
  6. const int N=2505;
  7. int n,m,ans,l[N],r[N];
  8. bool used[N];
  9. struct qwe
  10. {
  11. int v,c;
  12. }a[N];
  13. inline bool cmp(qwe a,qwe b)
  14. {
  15. return a.v<b.v;
  16. }
  17. int read()
  18. {
  19. int r=0,f=1;
  20. char p=getchar();
  21. while(p>'9'||p<'0')
  22. {
  23. if(p=='-')
  24. f=-1;
  25. p=getchar();
  26. }
  27. while(p>='0'&&p<='9')
  28. {
  29. r=r*10+p-48;
  30. p=getchar();
  31. }
  32. return r*f;
  33. }
  34. int find(int x)
  35. {
  36. int tmp=0,mn=1e9;
  37. for(int i=1;i<=n;i++)
  38. if(!used[i]&&l[i]<=x&&r[i]>=x&&r[i]<mn)
  39. mn=r[i],tmp=i;
  40. return tmp;
  41. }
  42. int main()
  43. {
  44. n=read(),m=read();
  45. for(int i=1;i<=n;i++)
  46. l[i]=read(),r[i]=read();
  47. for(int i=1;i<=m;i++)
  48. a[i].v=read(),a[i].c=read();
  49. sort(a+1,a+m+1,cmp);
  50. for(int i=1;i<=m;i++)
  51. while(a[i].c--)
  52. {
  53. int tmp=find(a[i].v);
  54. if(tmp)
  55. used[tmp]=1,ans++;
  56. }
  57. printf("%d",ans);
  58. return 0;
  59. }

最大流……

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<queue>
  4. #include<cstring>
  5. using namespace std;
  6. const int N=5005,inf=1e9;
  7. int n,m,l[N],r[N],h[N],cnt=1,s,t,le[N];
  8. struct qwe
  9. {
  10. int ne,to,va;
  11. }e[10000005];
  12. int read()
  13. {
  14. int r=0,f=1;
  15. char p=getchar();
  16. while(p>'9'||p<'0')
  17. {
  18. if(p=='-')
  19. f=-1;
  20. p=getchar();
  21. }
  22. while(p>='0'&&p<='9')
  23. {
  24. r=r*10+p-48;
  25. p=getchar();
  26. }
  27. return r*f;
  28. }
  29. void add(int u,int v,int w)
  30. {
  31. cnt++;
  32. e[cnt].ne=h[u];
  33. e[cnt].to=v;
  34. e[cnt].va=w;
  35. h[u]=cnt;
  36. }
  37. void ins(int u,int v,int w)
  38. {
  39. add(u,v,w);
  40. add(v,u,0);
  41. }
  42. bool bfs()
  43. {
  44. queue<int>q;
  45. memset(le,0,sizeof(le));
  46. le[s]=1,q.push(s);
  47. while(!q.empty())
  48. {
  49. int u=q.front();
  50. q.pop();
  51. for(int i=h[u];i;i=e[i].ne)
  52. if(!le[e[i].to]&&e[i].va>0)
  53. {
  54. le[e[i].to]=le[u]+1;
  55. q.push(e[i].to);
  56. }
  57. }
  58. return le[t];
  59. }
  60. int dfs(int u,int f)
  61. {
  62. if(u==t||!f)
  63. return f;
  64. int us=0;
  65. for(int i=h[u];i&&us<f;i=e[i].ne)
  66. if(le[e[i].to]==le[u]+1&&e[i].va>0)
  67. {
  68. int t=dfs(e[i].to,min(e[i].va,f-us));
  69. e[i].va-=t;
  70. e[i^1].va+=t;
  71. us+=t;
  72. }
  73. if(!us)
  74. le[u]=0;
  75. return us;
  76. }
  77. int dinic()
  78. {
  79. int re=0;
  80. while(bfs())
  81. re+=dfs(s,inf);
  82. return re;
  83. }
  84. int main()
  85. {
  86. n=read(),m=read();
  87. s=0,t=n+m+1;
  88. for(int i=1;i<=n;i++)
  89. l[i]=read(),r[i]=read(),ins(s,i,1);
  90. for(int i=1;i<=m;i++)
  91. {
  92. int x=read(),c=read();
  93. for(int j=1;j<=n;j++)
  94. if(l[j]<=x&&r[j]>=x)
  95. ins(j,i+n,1);
  96. ins(i+n,t,c);
  97. }
  98. printf("%d\n",dinic());
  99. return 0;
  100. }

bzoj 1707: [Usaco2007 Nov]tanning分配防晒霜【贪心||最大流(?)】的更多相关文章

  1. BZOJ 1707 [Usaco2007 Nov]tanning分配防晒霜(扫描线+贪心+优先队列)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1707 [题目大意] 每个奶牛各自能够忍受的阳光强度有一个最小值和一个最大值 防晒霜的作 ...

  2. BZOJ 1707: [Usaco2007 Nov]tanning分配防晒霜

    Description 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SP ...

  3. 1707: [Usaco2007 Nov]tanning分配防晒霜

    1707: [Usaco2007 Nov]tanning分配防晒霜 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 548  Solved: 262[Sub ...

  4. 【BZOJ】1707: [Usaco2007 Nov]tanning分配防晒霜

    [算法]贪心扫描线(+堆) [题意]给定n头牛有区间[a,b],m个防晒霜值为ai,每个可以使用bi次,每次可以使包含它的区间涂到防晒霜,问最多被涂牛数. [题解] 参考:[bzoj1707]: [U ...

  5. BZOJ——T 1707: [Usaco2007 Nov]tanning分配防晒霜

    http://www.lydsy.com/JudgeOnline/problem.php?id=1707 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 8 ...

  6. [BZOJ1707] [Usaco2007 Nov] tanning分配防晒霜 (贪心)

    Description 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SP ...

  7. 【bzoj1707】[Usaco2007 Nov]tanning分配防晒霜 贪心+Treap

    题目描述 奶牛们计划着去海滩上享受日光浴.为了避免皮肤被阳光灼伤,所有C(1 <= C <= 2500)头奶牛必须在出门之前在身上抹防晒霜.第i头奶牛适合的最小和最 大的SPF值分别为mi ...

  8. BZOJ1707:[Usaco2007 Nov]tanning分配防晒霜

    我对贪心的理解:https://www.cnblogs.com/AKMer/p/9776293.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem ...

  9. BZOJ1707 : [Usaco2007 Nov]tanning分配防晒霜

    S向每头奶牛连边,容量1 每个防晒霜向T连边,容量cover 每头奶牛向SPF在自己范围内的防晒霜连边,容量inf 用线段树优化建图跑最大流即可. #include<cstdio> con ...

随机推荐

  1. [WPF自定义控件库]为Form和自定义Window添加FunctionBar

    1. 前言 我常常看到同一个应用程序中的表单的按钮----也就是"确定"."取消"那两个按钮----实现得千奇百怪,其实只要使用统一的Style起码就可以统一按 ...

  2. [luoguP1097] 统计数字(水)

    传送门 这么水的题,也只有提高组第一题了吧 代码 #include <cstdio> #include <iostream> #include <algorithm> ...

  3. [NOIP2005] 提高组 洛谷P1051 谁拿了最多奖学金

    题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1 ...

  4. 对付 MySQL 的死连接,Sleep的进程的来源探究[转]

    当前的连接数:mysql> show status like '%Threads_connected%';+-------------------+-------+| Variable_name ...

  5. IOS7状态栏StatusBar官方标准适配方法

    IOS7状态栏StatusBar官方标准适配方法 hello,大家好,ios7正式版已经发布,相信大家都在以各种方式来适配ios7. 如果你已经下载了xcode5,正准备使用,你会发现各种布局的改变. ...

  6. SQL SERVER示例:修改自定义数据类型精度

    /*--修改自定义数据类型精度的示例      自定义数据类型一旦被引用,就不能再修改和删除,如果要修改数据的精度,就非常麻烦,下面的示例演示了如何修改      假设要修改的自定义变量名为aa -- ...

  7. Java电商项目-8.实现SSO单点登陆

    目录 创建ashop-sso-web单点登陆系统 用户名唯一性验证 用户注册 用户登陆 获得用户登陆状态 实现安全退出 项目的Github地址 创建ashop-sso-web单点登陆系统 先创建好模块 ...

  8. POJ2155 Matrix 【二维树状数组】+【段更新点查询】

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17766   Accepted: 6674 Descripti ...

  9. 华为云分布式数据库中间件DDM和开源MyCAT对比

    前言 华为云分布式数据库中间件(Distributed Database Middleware)是解决数据库容量.性能瓶颈和分布式扩展问题的中间件服务,提供分库分表.读写分离.弹性扩容等能力,应对海量 ...

  10. Eclipse + CDT引入OpenCV失败的解决的方法

    Android JNI开发中用到了OpenCV,由于想通过JNI实现,就没有去用Android层的Lib引用. 可是操作中发如今.cpp文件中include的时候发现"#include &l ...