HDU2673-shǎ崽(水题)
如果不能够直接秒杀的题,就不算水题。又应证了那句话,有时候,如果在水题上卡住,那么此题对于你来说,也就不算是水题了额~~
刚睡醒,迷迷糊糊。
题目的意思很简单,求一个最大的,再求一个最小的。几乎是什么营养的题目。可是一开始我还是傻傻地直接暴力,哈哈,为我的笨付出了直接代价。10000*10000,不TLE才怪。
后来再稍微想了下,应该先从大到小排序,然后取一个头,再取一个尾,直接扫描到中间,分n为奇偶情况考虑。不知各位大虾是不是有更快。
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{
if(a>b)
return true;
else
return false;
}
int main(void)
{
int n,i,j,num[10001];
while(scanf("%d",&n)==1)
{
for(i=0;i<n;i++)
scanf("%d",&num[i]);
sort(num,num+n,cmp);
if(n%2)//奇数这种情况
{
for(j=0,i=0;i<n/2;i++,j++)
{
printf("%d %d ",num[j],num[n-j-1]);
}
printf("%d\n",num[n/2]);
}
else//偶数这种情况
{
for(j=0,i=0;i<n/2-1;i++,j++)
printf("%d %d ",num[j],num[n-j-1]);
printf("%d %d\n",num[n/2-1],num[n/2]);
}
}
return 0;
}
转载于:https://www.cnblogs.com/cchun/archive/2011/05/14/2520080.html
总结
以上是生活随笔为你收集整理的HDU2673-shǎ崽(水题)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 巨魔之眼,现在在哪打出来?
- 下一篇: 检测晃动的三种方法