hdu 5246 乱搞

题意:题目太长直接看链接

链接:点我

乱搞题

显然,一个人要想成功,必须大于等于最强的人的战斗力,所以我们从后往前看

这里直接拿例1解释,首先递减排个序

15,13,10,9,8

作差得2,3,1,1,

此时我们从10出发即可成功

同时也发现,战斗力逐渐递增和直接到某个值其实是等价的

于是我们假设战斗力是从15-13-10-9-8变化的,观察这种变化能否成功即可

由13到15,变化为2,则从13出发剩余战斗力至少得提高2

从10到13,战斗力要提高3,而k为3然后10小于m,即成功

看一下反例2:

8,9,10,13,16

作差得3,3,1,1

从13-16,战斗力至少要提高3,而战斗力最高才能提高3,所以必须从13出发才能成功,而13<m,则不能成功

 

题目还是比较好想的,只是自己描述的不太清楚

 1 #include<cstdio>

 2 #include<iostream>

 3 #include<algorithm>

 4 #include<cstring>

 5 #include<cmath>

 6 #include<queue>

 7 #include<map>

 8 using namespace std;

 9 #define MOD 1000000007

10 const int INF=0x3f3f3f3f;

11 const double eps=1e-5;

12 typedef long long ll;

13 #define cl(a) memset(a,0,sizeof(a))

14 #define ts printf("*****\n");

15 const int MAXN=10005;

16 int n,tt;

17 ll m;

18 long long a[MAXN],b[MAXN];

19 bool cmp(ll x,ll y)

20 {

21     return x>y;

22 }

23 int main()

24 {

25     int i,j;

26     int k;

27     #ifndef ONLINE_JUDGE

28     freopen("1.in","r",stdin);

29     #endif

30     int ca=1;

31     scanf("%d",&tt);

32     while(tt--)

33     {

34         printf("Case #%d:\n",ca++);

35         scanf("%d%d%d",&n,&m,&k);

36         for(i=1;i<=n;i++)   scanf("%I64d",&a[i]);

37         sort(a+1,a+1+n,cmp);

38         if(a[1]<=m)

39         {

40             printf("why am I so diao?\n");

41             continue;

42         }

43         for(i=1;i<n;i++)

44         {

45             b[i]=a[i]-a[i+1];

46         }

47         bool flag=0;

48         int K=k;

49         k=1;

50         for(i=1;i<n;i++)

51         {

52             if(k>=K)

53             {

54                 if(a[i]<=m)

55                 {

56                     flag=1;

57                     break;

58                 }

59                 else

60                 {

61                     flag=0;

62                     break;

63                 }

64             }

65             k=(int)b[i];

66         }

67         if(i==n&&a[n]<=m)

68         {

69             flag=1;

70         }

71         if(!flag)

72         {

73             printf("madan!\n");

74         }

75         else

76             printf("why am I so diao?\n");

77     }

78 }

 

你可能感兴趣的:(HDU)