HDU5003:Osu!(签到题)HDU5038:(签到题,题意很坑)

HDU 5003

水题,直接上代码(因为题意读错了,WA了一遍)。

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
typedef long long  ll;
#define inf 0x3f3f3f3f
#define mod 7
#include <math.h>
#include <queue>
using namespace std;
int n,a[60];
int cmp(const void *aa,const void *bb)
{
    return *(int *)bb-*(int *)aa;
}
int main()
{
    int T;
    scanf("%d",&T);
    double sum;
    while(T--)
    {
        scanf("%d",&n);
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        qsort(a,n,sizeof(a[0]),cmp);
        sum=0;
        for(int i=0;i<n;i++)
        {
            sum+=pow(0.95,i)*a[i];
        }
        printf("%.10lf\n",sum);
    }
    return 0;
}

HDU 5038

这题的题意真是无比坑啊,还有为么G++超时,C++就过了,尼玛这个大水题浪费了我好几个小时,我百度了一下说只有HDU上面C++快于G++,一般情况下(没算法的情况居多)如果用G++交

TLE了,请在用C++交一遍。

再说一下坑人的题意。

有n个蘑菇,重量为w[i],根据公式为这n个蘑菇分等级(给出一个分数),其中出现频率最多的那个分数成为mode,要求输出这个mode, 注意mode 可能不唯一,按升序输出符合是mode的分数。如果打出的分数每个都可以成为mode,那么则输出 Bad Mushroom.

可能上边说的不是很明白,为每个蘑菇打出分数后,有三种情况,举例子说明,假设有6个蘑菇:

1.  打出的分数为   2  2  2   1  1  6

其中2 出现的次数最多,mode唯一,输出 2

2. 打出的分数为   4   4  2   2  1   3

其中2,4出现的次数最多,mode不唯一,升序输出 2  4

3.打出的分数为   2   2   3   3   3   2

其中2,3出现的次数最多,但没有其它的分数了,也就是打出的分数每个都是mode,输出 Bad Mushroom.

其中第三种情况要特别注意一下,还要判断mode出现了几种,上面例子是出现了两种2,3,如果只出现一种,比如打出的分数为 2 2 2 2 2 2,要输出2,不能输出Bad Mushroom,所以要特判一下。

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
typedef long long  ll;
#define inf 0x3f3f3f3f
#define mod 7
#include <math.h>
#include <queue>
using namespace std;
int n,a,s,h[10001],cnt[1000001],tt;
int main()
{
    int T,K=0,maxt;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        memset(h,0,sizeof(h));
        maxt=0;
        for(int i=0; i<n; i++)
        {
            scanf("%d",&a);
            s=10000-abs(100-a)*abs(100-a);
            h[s]++;
            maxt=max(maxt,h[s]);
        }
        printf("Case #%d:\n",++K);
        tt=0;
        for(int i=0; i<=10000; i++)
        {
            if(h[i]&&h[i]==maxt)
            {
                cnt[tt++]=i;
            }
        }
        if(tt==1)
        {
            printf("%d\n",cnt[0]);
            continue;
        }
        if(tt*maxt==n)
        {
            printf("Bad Mushroom\n");
            continue;
        }
        bool zz=false;
        for(int i=0; i<tt; i++)
        {
            if(zz)
            {
                printf(" %d",cnt[i]);
            }
            else
            {
                printf("%d",cnt[i]);
                zz=true;
            }
        }
        printf("\n");
    }
    return 0;
}

我第一次写的方法有点麻烦:

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <algorithm>
typedef long long  ll;
#define inf 0x3f3f3f3f
#define mod 7
#include <math.h>
#include <queue>
using namespace std;
int n,a[1000001],s[1000001],h[10001],sum,cnt[1000001],tt,mm[1000001];
int main()
{
    int T,K=0,maxt;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        memset(h,0,sizeof(h));
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            s[i]=10000-abs(100-a[i])*abs(100-a[i]);
            h[s[i]]++;
        }
        printf("Case #%d:\n",++K);
        sort(s,s+n);
        sum=0;
        maxt=0;
        tt=0;
        for(int i=0;i<=10000;i++)
        {
              if(h[i])
              {
                    sum++;
                    mm[tt]=i;
                    cnt[tt++]=h[i];
                    maxt=max(maxt,h[i]);
              }
        }
        if(sum==1)
        {
            printf("%d\n",s[0]);
            continue;
        }
        bool ff=false;
        for(int i=0;i<tt;i++)
        {
            if(cnt[i]!=maxt)
            {
                ff=true;
                break;
            }
        }
        if(!ff)
        {
            printf("Bad Mushroom\n");
            continue;
        }
        bool zz=false;
        for(int i=0;i<tt;i++)
        {
            if(cnt[i]==maxt)
            {
                if(zz)
                {
                    printf(" %d",mm[i]);
                }
                else
                {
                    printf("%d",mm[i]);
                     zz=true;
                }
            }
        }
        printf("\n");
    }
    return 0;
}

时间: 2024-12-11 12:52:39

HDU5003:Osu!(签到题)HDU5038:(签到题,题意很坑)的相关文章

acm集训训练赛A题【签到题】

一.题目 Description After winning gold and silver in IOI 2014, Akshat and Malvika want to have some fun. Now they are playing a game on a grid made of nhorizontal and m vertical sticks. An intersection point is any point on the grid which is formed by t

涨姿势题2_水题_两种解法

Problem Description 涨姿势题就是所谓的优化题,在组队赛中,队伍发现了一题水题,那么应该交给谁去处理?作为处理水题的代码手,应该具备什么样的素养?1,要快,水题拼的就是速度!2,不能卡水题!水题都卡,绝对不是一个代码手的风范!3,不能出错,错一次即罚时20分钟,对于水题来讲是致命的!4,要能看出来一题是水题!没有这条,上面三条都是没有意义的! 如果你希望你成团队中一个合格的代码手,那么这套题是你最好的选择,快AC吧! 本系列即是为了提高水题代码手的素养而准备的!水题经常需要用到

poj 1006:Biorhythms(水题,经典题,中国剩余定理)

Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 110991   Accepted: 34541 Description Some people believe that there are three cycles in a person's life that start the day he or she is born. These three cycles are the physical,

poj 1002:487-3279(水题,提高题 / hash)

487-3279 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 236746   Accepted: 41288 Description Businesses like to have memorable telephone numbers. One way to make a telephone number memorable is to have it spell a memorable word or phras

线性规划与网络流24题第2题 太空飞行计划 最小割

/** 题目: 线性规划与网络流24题第2题 太空飞行计划 最小割 链接:http://www.cogs.pro/cogs/problem/problem.php?pid=727 题意:lv 思路:最大点权独立集(点集中任意两个点没有边相连,且点权和最大)=点权总和-最小点权覆盖集. 将实验和仪器看做节点. 实验放在二分图的左边, s->x, cap = 实验利润. 仪器放在右边, x->t, cap = 仪器费用. 如果实验u的进行需要仪器v,u->v, cap = INF. ans

【POJ2425】A Chess Game 博弈,SG函数,裸题,模板题

转载请注明出处:http://blog.csdn.net/vmurder/article/details/42653921 其实我就是觉得原创的访问量比未授权盗版多有点不爽233... 题意:给一个有向无环图(拓扑图),有若干个棋子,两人轮流操作,每次可以把其中某棋子沿图走一步,无法操作者输. 题解:SG函数裸题,模板题 代码: #include <cstdio> #include <cstring> #include <iostream> #include <a

HDU5742 It&#39;s All In The Mind(思维题,水题)

Problem Description Professor Zhang has a number sequence a1,a2,...,an. However, the sequence is not complete and some elements are missing. Fortunately, Professor Zhang remembers some properties of the sequence: 1. For every i∈{1,2,...,n}, 0≤ai≤100.

西安邀请赛D题 字符串生成题 深搜

很抱歉,学校的OJ并不支持外网,而且还没有加上题目... 题意是说,求一个字符串,他的所有长度超过4的子串都是唯一的. 然后我当时是想aaaa, baaa, caaa, daaa...这样巴拉巴拉一直生成下去的,后来发现真的是想的太天真了,因为前面的两个长度为4的子串("aaaabaaa")的存在,直接封杀了3个子串("aaab", "aaba", "abaa").然后我就想记录状态去试着暴力去跑一个生成机.其实也很简单,就是

hdu 4932 /bestcoder B题 #4 /思维题

题意:给一个数列(整数),用一些不相交的区间去覆盖(只能是用端点去覆盖,端点可以交).而且区间出度相等.求最大区间长度. 开始一下就敲了,枚举每个区间长度,判断合法,更新最大.但是后来一看小数,感觉不行,改为二分,后来还是挂了... 赛后才知道,二分的时候,答案必需要满足单调性啊,这里小的数据不行,大的数据可以行!如 0 1 5 6 10, 3不行,4行. 后来才知道,枚举时,每个差值的一半也是可以的:仔细想想很容易证明.(水,坑) #include<iostream> #include<