编程之美第一题 超级赛亚ACMer

来源:互联网 发布:遍历搜寻C语言 编辑:程序博客网 时间:2024/06/10 20:35

题意太麻烦 , 就不说了, 编美第一题,  也算是签到题,和队友一起果断混了5个水

题, 也不知道会不会有小熊公仔,废话不多说,细说比赛我出的三个水题。

题解:

这个人每次战斗力会跨越,  YY了一下,每次跨越的落脚点为该跨越距离中最后一个点, 

然后就A了 ,  YY 大法好。

代码:

#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;int n, m, k;__int64 value[10005];int slove(int x, int k1){    int k2 = x;    for(int i = x; i < n;)    { // printf("%d\n", k2);       for(int j = i+1; j < n; j++)       {          if(value[j] <= value[i] + k1)          {              k2 = j;                      }                  else break;       }       if(k2 >= n-1)   return 1;       if(k2 == i)  return 0;       i = k2, k2 = i, k1 --;            }}int main(){     int T, flag1 = 1;     scanf("%d", &T);     while(T--)     {        scanf("%d %d %d", &n, &m, &k);        for(int i = 0; i < n; i++)        scanf("%I64d", &value[i]);        sort(value, value+n);        printf("Case #%d:\n", flag1++);        if(m >= value[n-1])          {           printf("why am I so diao?\n");           continue;             }        if(m < value[0])        {           printf("madan!\n");           continue;             }        int j = 0;        for(int i = 0; i < n; i++)        {           if(value[i] <= m)           j = i;           else break;            }                int x = slove(j, k);        if(x == 1)  printf("why am I so diao?\n");        else  printf("madan!\n");     }    }

0 0
原创粉丝点击