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 }

 

posted @ 2015-05-31 00:15  miao_a_miao  阅读(148)  评论(0编辑  收藏  举报