总时间限制: 
10000ms

单个测试点时间限制: 
1000ms

内存限制: 
262144kB
描述
很少人知道其实奶牛非常喜欢到洞穴里面去探险。
    洞窟里有N(1≤N≤100)个洞室,由M(1≤M≤1000)条双向通道连接着它们.每对洞室间
至多只有一条双向通道.有K(1≤K≤14)个洞室,里面放有1捆干草.牛吃1捆干草,体重指数就会增加1.
    贪吃的贝茜要到洞窟里面探险.她希望能吃尽量多的干草,但每条通道有一个宽度阈值,如果体重指数超过相应的阈值,贝茜就会被卡祝她从洞窟1出发,体重指数为0.在洞里溜达一圈后,她要返回洞窟1.    那她最多能吃多少捆干草呢?注意,贝茜经过一个洞室,不一定非要吃掉里面的干草.
输入
第1行输入N,M,K,之后K行每行一个整数,表示在这个洞室放有一捆干草;接下来M行每行三个整数,表示一条双向通道的起点终点和宽度阈值.
输出
最多能吃掉的干草数.
样例输入
  1. 6 7 5
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 1 2 3
  8. 3 6 2
  9. 6 2 10
  10. 2 4 1
  11. 5 1 1
  12. 4 5 1
  13. 1 6 1
样例输出
  1. 4
来源
USACO 2004 Open Orange
思路:贪心,把每个稻草的阈值都排一个序,能吃的就吃
注意几个细节:
1、要特判一号洞穴有艹的情况
2.、最后要写>
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<queue>
  6. using namespace std;
  7. const int MAXN=;
  8. const int maxn=0x3f;
  9. void read(int &n)
  10. {
  11. char c='+';int x=;bool flag=;
  12. while(c<''||c>''){c=getchar();if(c=='-')flag=;}
  13. while(c>=''&&c<='')
  14. x=(x<<)+(x<<)+c-,c=getchar();
  15. flag==?n=-x:n=x;
  16. }
  17. int n,m,k;
  18. struct node
  19. {
  20. int have;
  21. int need;
  22. int pos;
  23. }a[MAXN];
  24. int map[MAXN][MAXN];
  25. int dis[MAXN][MAXN];
  26. int comp(const node &a,const node &b)
  27. {
  28. if(a.have==b.have)
  29. return a.need<b.need;
  30. else
  31. return a.have>b.have;
  32. }
  33. int main()
  34. {
  35. read(n);read(m);read(k);
  36. int num=k;
  37. for(int i=;i<=k;i++)
  38. {
  39. int p;
  40. read(p);
  41. a[p].have=;
  42. a[i].pos=i;
  43. }
  44. memset(map,maxn,sizeof(map));
  45. for(int i=;i<=m;i++)
  46. {
  47. int x,y,z;
  48. read(x);read(y);read(z);
  49. map[x][y]=z;
  50. map[y][x]=z;
  51. }
  52.  
  53. for(int i=;i<=n;i++)
  54. map[i][i]=;
  55.  
  56. for(int k=;k<=n;k++)
  57. for(int i=;i<=n;i++)
  58. for(int j=;j<=n;j++)
  59. if(map[i][j]<maxn)
  60. map[i][j]=max(map[i][j],min(map[i][k],map[k][j]));
  61. else
  62. map[i][j]=min(map[i][k],map[k][j]);
  63.  
  64. for(int i=;i<=n;i++)
  65. if(a[i].have)
  66. a[i].need=map[][i];
  67.  
  68. sort(a+,a+n+,comp);
  69.  
  70. int now=;
  71. int flag=;
  72. for(int i=;i<=num;i++)
  73. {
  74. // if(a[i].have==0)break;
  75. if(a[i].have&&a[i].pos==)
  76. {
  77. flag=;
  78. continue;
  79. }
  80. if(a[i].need>now)
  81. now++;
  82.  
  83. }
  84. if(flag==)
  85. now++;
  86. printf("%d",now);
  87. return ;
  88. }

05:Cave Cows 1 洞穴里的牛之一的更多相关文章

  1. 3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二

    3381: [Usaco2004 Open]Cave Cows 2 洞穴里的牛之二 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 21  Solved ...

  2. Bzoj 3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一

    3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 64  Solved ...

  3. bzoj3383[Usaco2004 Open]Cave Cows 4 洞穴里的牛之四*

    bzoj3383[Usaco2004 Open]Cave Cows 4 洞穴里的牛之四 题意: 平面直角坐标系有n个点,从(0,0)出发,从一个点上可以跳到所有与它横纵坐标距离都≤2的点上,求最少步数 ...

  4. bzoj3381[Usaco2004 Open]Cave Cows 2 洞穴里的牛之二*

    bzoj3381[Usaco2004 Open]Cave Cows 2 洞穴里的牛之二 题意: RMQ问题.序列长度≤25000,问题数≤25000. 题解: 倍增. 代码: #include < ...

  5. [BZOJ3380] [USACO2004 Open]Cave Cows 1 洞穴里的牛之一

    Description ​ 很少人知道其实奶牛非常喜欢到洞穴里面去探险. ​ 洞窟里有N(1≤N≤100)个洞室,由M(1≤M≤1000)条双向通道连接着它们.每对洞室间 至多只有一条双向通道.有K( ...

  6. P3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一

    还是蛮简单的一道题,首先dfs一遍,在所有能到达放有干草的洞穴的所有路径中,找出路径上最小伐值的最大值,按这个值由小到大,再来一遍贪心就行了,能放就放,不能放拉倒(也可以理解为,不能放把最前一个删了) ...

  7. bzoj3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(spfa+状压DP)

    数据最多14个有宝藏的地方,所以可以想到用状压dp 可以先预处理出每个i到j的路径中最小权值的最大值dis[i][j] 本来想用Floyd写,无奈太弱调不出来..后来改用spfa 然后进行dp,这基本 ...

  8. P3383: [Usaco2004 Open]Cave Cows 4 洞穴里的牛之四

    这个系列总算是做完了,这是我第一次高效率做完四道题,虽然中间有两道水题,但是第一和第四题还是蛮好的,但是只要能想到思路就很快能打完的. 像这道题,刚开始在想能不能用DP?但是苦于不知道怎么实施,后来又 ...

  9. P3382: [Usaco2004 Open]Cave Cows 3 洞穴里的牛之三

    首先,我们先确定,最长的曼哈顿距离只可能为 x1+y2-(x2+y2) 和 x1-y1-(x2-y2) 所以我们只需要维护四个值, 分别代表 max(x+y) ; max(x-y) ; min(x+y ...

随机推荐

  1. ROS-URDF文件标签解读

    前言:URDF文件标签解读.margin: auto; width: 700px; height: 100px; ; width: 700px; text-align: center; 一.连杆(li ...

  2. 编写高质量的Makefile

    源地址 :http://blog.csdn.net/maopig/article/details/6801749 一.前言 回想自己的第一个Makefile,是这个样子的 CODE hello:hel ...

  3. c#设计模式(1)

    本文摘取自吕震宇的博客园文章,版权归吕震宇仅供个人学习参考.转载请标明原作者吕震宇. 这学期开设设计模式课程,将课件放上来. 课本:<C#设计模式>,电子工业出版社,ISBN 7-5053 ...

  4. WPF向系统发送消息 并传递结构体

    场景 :需要开发一个通讯组件 流程为:界面-开启接收服务-通过发送组件发送信息到 其他客户端和服务端 接受服务接收其他客户端发送的消息 需要传递给对应组件或者界面 因此会出现类库重复引用问题.因为采用 ...

  5. C#6.0新增功能

    C# 6.0 版本包含许多可提高开发人员工作效率的功能. 此版本中的功能包括: 只读自动属性: 可以创建只能在构造函数中设置的只读自动属性. 自动属性初始值设定项: 可以编写初始化表达式来设置自动属性 ...

  6. Android 自定义ScrollView的滑动监听事件

    项目结构: 1.LazyScrollView类(自定义ScrollView) package android.zhh.com.myapplicationscrollview; /** * Create ...

  7. [转]opencv学习资料

    转自:http://blog.csdn.net/poem_qianmo/article/details/20537737 1:Mat imread(const string& filename ...

  8. UVa 11549 Open Credit System

    题意:给出n个数,找出两个整数a[i],a[j](i < j),使得a[i] - a[j]尽量大 从小到大枚举j,在这个过程中维护a[i]的最大值 maxai晚于ans更新, 可以看这个例子 1 ...

  9. PHP学习过程中遇到的疑难杂症

    变量当双引号中包含变量时,变量会与双引号中的内容连接在一起:当单引号中包含变量时,变量会被当做字符串输出. Heredoc结构形式首先使用定界符表示字符串(<<<),接着在“< ...

  10. Type system

    Type system[edit] Main articles: Data type, Type system, and Type safety A type system defines how a ...