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[];
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=;i<n;i++)
{
scanf("%d",&a[i]);
}
qsort(a,n,sizeof(a[]),cmp);
sum=;
for(int i=;i<n;i++)
{
sum+=pow(0.95,i)*a[i];
}
printf("%.10lf\n",sum);
}
return ;
}

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[],cnt[],tt;
int main()
{
int T,K=,maxt;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
memset(h,,sizeof(h));
maxt=;
for(int i=; i<n; i++)
{
scanf("%d",&a);
s=-abs(-a)*abs(-a);
h[s]++;
maxt=max(maxt,h[s]);
}
printf("Case #%d:\n",++K);
tt=;
for(int i=; i<=; i++)
{
if(h[i]&&h[i]==maxt)
{
cnt[tt++]=i;
}
}
if(tt==)
{
printf("%d\n",cnt[]);
continue;
}
if(tt*maxt==n)
{
printf("Bad Mushroom\n");
continue;
}
bool zz=false;
for(int i=; i<tt; i++)
{
if(zz)
{
printf(" %d",cnt[i]);
}
else
{
printf("%d",cnt[i]);
zz=true;
}
}
printf("\n");
}
return ;
}

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

#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[],sum,cnt[],tt,mm[];
int main()
{
int T,K=,maxt;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
memset(h,,sizeof(h));
for(int i=;i<n;i++)
{
scanf("%d",&a[i]);
s[i]=-abs(-a[i])*abs(-a[i]);
h[s[i]]++;
}
printf("Case #%d:\n",++K);
sort(s,s+n);
sum=;
maxt=;
tt=;
for(int i=;i<=;i++)
{
if(h[i])
{
sum++;
mm[tt]=i;
cnt[tt++]=h[i];
maxt=max(maxt,h[i]);
}
}
if(sum==)
{
printf("%d\n",s[]);
continue;
}
bool ff=false;
for(int i=;i<tt;i++)
{
if(cnt[i]!=maxt)
{
ff=true;
break;
}
}
if(!ff)
{
printf("Bad Mushroom\n");
continue;
}
bool zz=false;
for(int i=;i<tt;i++)
{
if(cnt[i]==maxt)
{
if(zz)
{
printf(" %d",mm[i]);
}
else
{
printf("%d",mm[i]);
zz=true;
}
}
}
printf("\n");
}
return ;
}
 

最新文章

  1. Unity C#最佳实践(上)
  2. ABP理论学习之EntityFramework集成
  3. WebService中使用Aspose.Cells.dll
  4. cdh5.7权限测试示例
  5. scanf的一些技巧
  6. COJ970 WZJ的数据结构(负三十)
  7. 基于mjpg_streamer视频服务器移植【转】
  8. 4.接口隔离原则(Interface Segregation Principle)
  9. 工作案件1 一切都是有check引起的
  10. Java设计模式学习资源汇总
  11. 安装dynamics CRM 2013提示“实例名称必须与计算机名称相同”
  12. OpenCL异构计算资料收集
  13. java工具类(六)根据经纬度计算距离
  14. 二分查找算法的C++和PHP实现
  15. UnityEditorWindow自建窗口扩展
  16. url传参过程中文字需编码、解码使用
  17. Java基础-一文搞懂位运算
  18. Django进阶知识
  19. OpenJ_Bailian 4017 爬楼梯
  20. HTML 5 拖放 drag dragend dragover ....

热门文章

  1. linux -- 查看ip,路由,dns
  2. 编程之美 set 13 光影切割问题
  3. Jquery之编辑不可修改
  4. sed使用
  5. 延迟加载JavaScript
  6. PMP 质量管理7张图 很形象
  7. Android - ViewPager实现Gallery效果
  8. 理解CSS3 isolation: isolate的表现和作用
  9. QQ空间的文艺打开方法
  10. Zabbix自动发现与主动注册