1. // 给定n头牛,每头有属性智商和幽默感,这两个属性值有正有负,现在要从这n头牛中选出若干头使得他们的智商和与幽默感和不为负数,
    // 并且两者两家和最大,如果无解输出0,n<=100,-1000<val<1000.
    // 这题是好题 思路来自以下博客
    // http://blog.csdn.net/woshi250hua/article/details/7633450
  2.  
  3. // 我开始想的是 dp[i][j][k] 放置i头牛 智商为j 幽默感为 k 是否存在 然后发现空间不允许呀、、
    // 别人思路 : 将智商作为容量 幽默感作为 价值 瞬间醒悟、原来可以这样的、、然后就是普通背包了
    // 1A
    #include <iostream>
  4. #include <algorithm>
  5. #include <queue>
  6. #include <math.h>
  7. #include <stdio.h>
  8. #include <string.h>
  9. using namespace std;
  10. #define MOD 1000000007
  11. #define maxn 200010
  12. int dp[maxn];
  13. int S[],F[];
  14. int main()
  15. {
  16. int N;
  17. while(scanf("%d",&N)!=EOF){
  18. int i,j,k;
  19. int len=,le=;
  20. for(i=;i<=N;i++)
  21. {
  22. scanf("%d %d",&S[i],&F[i]);
  23. if(S[i]>=) len+=S[i];
  24. else le+=(-S[i]);
  25. }
  26. len=max(len,le);
  27. for(i=;i<=*len;i++)
  28. dp[i]=-MOD;
  29. dp[]=;
  30. // memset(dp,0,sizeof(dp));
  31. for(i=;i<=N;i++)
  32. if(S[i]>=){ // 根据这个判断转移方向
    for(j=len;j>=S[i]-len;j--){
  33. k=j-S[i];
  34. if(k<) k=-k+len;
  35. if(j<) j=-j+len;
  36. dp[j]=max(dp[j],dp[k]+F[i]);
  37. if(j>len) j=len-j;
  38. }
  39.  
  40. }else{
  41. for(j=-len;j<=len+S[i];j++){
  42. k=j-S[i];
  43. if(k<) k=-k+len;
  44. if(j<) j=-j+len;
  45. dp[j]=max(dp[j],dp[k]+F[i]);
  46. if(j>len) j=len-j;
  47. }
  48. }
  49. int ans=;
  50. for(i=;i<=len;i++) if(dp[i]>=) ans=max(ans,i+dp[i]);//,printf("%d %d?",i,dp[i]);
  51. printf("%d\n",ans);
  52. }
  53. return ;
  54. }

poj 2184 Cow Exhibition的更多相关文章

  1. POJ 2184 Cow Exhibition【01背包+负数(经典)】

    POJ-2184 [题意]: 有n头牛,每头牛有自己的聪明值和幽默值,选出几头牛使得选出牛的聪明值总和大于0.幽默值总和大于0,求聪明值和幽默值总和相加最大为多少. [分析]:变种的01背包,可以把幽 ...

  2. [POJ 2184]--Cow Exhibition(0-1背包变形)

    题目链接:http://poj.org/problem?id=2184 Cow Exhibition Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  3. POJ 2184 Cow Exhibition (01背包变形)(或者搜索)

    Cow Exhibition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10342   Accepted: 4048 D ...

  4. poj 2184 Cow Exhibition(01背包)

    Cow Exhibition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10882   Accepted: 4309 D ...

  5. poj 2184 Cow Exhibition(dp之01背包变形)

    Description "Fat and docile, big and dumb, they look so stupid, they aren't much fun..." - ...

  6. POJ 2184 Cow Exhibition (01背包的变形)

    本文转载,出处:http://www.cnblogs.com/Findxiaoxun/articles/3398075.html 很巧妙的01背包升级.看完题目以后很明显有背包的感觉,然后就往背包上靠 ...

  7. poj 2184 Cow Exhibition(背包变形)

    这道题目和抢银行那个题目有点儿像,同样涉及到包和物品的转换. 我们将奶牛的两种属性中的一种当作价值,另一种当作花费.把总的价值当作包.然后对于每一头奶牛进行一次01背包的筛选操作就行了. 需要特别注意 ...

  8. POJ 2184 Cow Exhibition 01背包

    题意就是给出n对数 每对xi, yi 的值范围是-1000到1000 然后让你从中取若干对 使得sum(x[k]+y[k]) 最大并且非负   且 sum(x[k]) >= 0 sum(y[k] ...

  9. POJ 2184 Cow Exhibition (带负值的01背包)

    题意:给你N(N<=100)只牛,每只牛有一个智慧值Si和一个活泼值Fi,现在要从中找出一些来,使得这些牛智慧值总和S与活泼值总和F之和最大,且F和S均为正.Si和Fi范围在-1000到1000 ...

随机推荐

  1. Maven开源中国镜像

      mirrors> <mirror> <id>nexus-osc</id> <mirrorOf>central</mirrorOf> ...

  2. 【hadoop2.6.0】MapReduce原理

    看了几篇博文,感觉还是云里雾里的. http://blog.csdn.net/opennaive/article/details/7514146 http://www.aboutyun.com/thr ...

  3. eclipse配置mahout

    1.在elcipse上建立一个java project 项目名:mymahout 2.建立libs文件夹,在mahout 0.9的lib文件夹下找到一下java包 其中log4j.properties ...

  4. 用cxSelect插件补充一下回显过滤项功能

    这个在DJANGO里,最好在过滤之后,让用户知道自己过滤的选择.所以要定位默认值. 1,在HTML文件里显示默认值: <form class="uk-form" name=& ...

  5. hdu 4599 Dice 概率DP

    思路: 1.求f[n];dp[i]表示i个连续相同时的期望 则 dp[0]=1+dp[1]     dp[1]=1+(5dp[1]+dp[2])/6     ……     dp[i]=1+(5dp[1 ...

  6. 2013 Multi-University Training Contest 2 Balls Rearrangement

    先算出lcm(a,b),如果lcm>=n,则直接暴力解决:否则分段,求出0-lcm内的+0-n%lcm内的值. 再就是连续相同的一起计算!! #include<iostream> # ...

  7. XML中如何使用schema

    Schema简介 DTD的语法相当复杂,并且它不符合XML文件的标准,自成一个体系,W3C定义的Schema用来代替DTD. chema相对于DTD的明显好处是XML Schema文档本身也是XML文 ...

  8. [codility]CountDiv

    https://codility.com/demo/take-sample-test/count_div 此题比较简单,是在O(1)时间里求区间[A,B]里面能被K整除的数字,那么就计算一下就能得到. ...

  9. 通过一个简单的数据库操作类了解PHP链式操作的实现

    class Model{ public $table; //操作的表; private $opt; //查询的参数; private $pri; //表的主键; private $lastSql; / ...

  10. java里int和Integer什么区别

    Integer i=0; i是一个对象 int i=3; i是一个基础变量 Integer i=0; 这种写法如果没记错,在JAVA1.5之前是会报错的,自动的加解包是1.5的新特性 必须写成 Int ...