hdoj 4310 贪心

不知为毛,过不了

我的代码:

#include<stdio.h>

int main()
{
 int n,a[30],b[30],temp,i,j,s1,s2;
 double c[30];
 while(scanf("%d",&n)!=EOF)
 {
  s1=0;
  s2=0;
  for(i=0;i<n;i++)
  {
   scanf("%d%d",&a[i],&b[i]);
   s1+=a[i];
   c[i]=a[i]/b[i];
  }
     for(i=0;i<n;i++)
  {
   for(j=i+1;j<n;j++)
   {
    if(c[i]<c[j])
    {
     temp=c[i];
     c[i]=c[j];
     c[j]=temp;
     temp=b[i];
     b[i]=b[j];
     b[j]=temp;
     temp=a[i];
     a[i]=a[j];
     a[j]=temp;
    }
   }
  }
  for(i=0;i<n;i++)
  {
      s2+=s1*b[i];
   s1-=a[i];
  }
  printf("%d\n",s2);
 }
}

Ac的代码:

  1. #include <stdio.h>
  2. #include <algorithm>
  3. using namespace std;
  4. struct Node
  5. {
  6. int dps;
  7. int hp;
  8. }a[30];
  9. int cmp(Node x,Node y)
  10. {
  11. return x.hp*y.dps<y.hp*x.dps;//按比率排,避免小数,所以讲式子进行转换
  12. }
  13. int main()
  14. {
  15. int t,i;
  16. int sum,ans;
  17. while(~scanf("%d",&t))
  18. {
  19. sum = ans = 0;
  20. for(i = 0;i<t;i++)
  21. {
  22. scanf("%d%d",&a[i].dps,&a[i].hp);
  23. sum+=a[i].dps;
  24. }
  25. sort(a,a+t,cmp);
  26. for(i = 0;i<t;i++)
  27. {
  28. ans+=sum*a[i].hp;
  29. sum-=a[i].dps;
  30. }
  31. printf("%d\n",ans);
  32. }
  33. return 0;
  34. }
  35. 有毛区别

hdoj 4310 贪心

时间: 2024-12-28 01:03:24

hdoj 4310 贪心的相关文章

HDOJ 2209 贪心

翻纸牌游戏 Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3669    Accepted Submission(s): 1371 Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦的是,每当你翻一

HDU 4310 贪心

题意 在游戏中你的dps为1但是hp无限 给出n个敌人的dps与hp 你一秒能打掉一个敌人你的dps的hp 当你输出的时候 所有活着的敌人都会打你 求杀死所有敌人时你掉的最少hp 一开始想错了 排序的时候先处理了dps更高的 然后wa 即使在游戏中这也是很傻的.. 应该处理dps/hp更高的 如果放在游戏里讲应该是先杀输出能力弱的... 如果直接return a.dps/a.hp>b.dps/b.hp会出现小数 所以用 return a.dps*b.hp>b.dps*a.hp #include

hdoj 1003 Max Sum 【最大子段和】【贪心】

题意:... 策略:看着像贪心,感觉也是贪心. 很久之前做的,又做了一遍,好题. 代码: #include<stdio.h> #include<string.h> int s[100005]; int main() { int t, i, j, l, st, en, n, v = 1; scanf("%d", &t); while(t --){ scanf("%d", &n); for(i = 1; i <= n; i

HDOJ 1009. Fat Mouse&#39; Trade 贪心 结构体排序

FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 56784    Accepted Submission(s): 19009 Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats g

贪心 HDOJ 4726 Kia&#39;s Calculation

题目传送门 1 /* 2 这题交给队友做,做了一个多小时,全排列,RE数组越界,赛后发现读题读错了,囧! 3 贪心:先确定最高位的数字,然后用贪心的方法,越高位数字越大 4 5 注意:1. Both A and B will have same number of digits 两个数字位数相同 6 2. which is no larger than 10 6 不是大小,而是长度不超过1e6 7 */ 8 #include <cstdio> 9 #include <iostream&g

hdoj 2124 Repair the Wall 【贪心】

题意:有一栋墙坏了(台风吹坏的,并且宽度一定),这个猪脚要修这栋墙,并且找到了一些宽度跟刮坏的墙一样,只是长度不一样的木块,让你求这些木块能不能修好这堵墙, 一句话就是判断这些的木块的长度的和能不能大于破坏的墙的长度,如果能,输出最少用几块, 不能输出impossible. 这道题水的不行...从大到小排下序就好了 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2124 代码: #include<stdio.h> #include<algo

hdoj 3177 Crixalis&#39;s Equipment 【贪心】

Crixalis's Equipment Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3073    Accepted Submission(s): 1250 Problem Description Crixalis - Sand King used to be a giant scorpion(蝎子) in the deserts

hdoj 1052 Tian Ji -- The Horse Racing【田忌赛马】 【贪心】

思路:先按从小到大排序, 然后从最快的開始比(如果i, j 是最慢的一端, flag1, flag2是最快的一端 ),田的最快的大于king的 则比較,如果等于然后推断,有三种情况: 一:大于则比較,二等于在推断田的最慢的是不是比king的最快的慢,三小于则与king的最快的比較: Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe

枚举+贪心 HDOJ 4932 Miaomiao&#39;s Geometry

题目传送门 1 /* 2 题意:有n个点,用相同的线段去覆盖,当点在线段的端点才行,还有线段之间不相交 3 枚举+贪心:有坑点是两个点在同时一条线段的两个端点上,枚举两点之间的距离或者距离一半,尽量往左边放,否则往右边放, 4 判断一下,取最大值.这题二分的内容少 5 */ 6 #include <cstdio> 7 #include <algorithm> 8 #include <cstring> 9 #include <cmath> 10 using n