zoukankan      html  css  js  c++  java
  • HDU1084

    细节题

    1,注意输出

    2,当a[i].sum有偶数个时,前一半比后一半多5

    3,当只有一个时,除100,50以外,输出90,80,70,60等等之类的

    View Code
      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 #include<string.h>
      4 #include<iostream>
      5 #include<algorithm>
      6 #include<queue>
      7 #include<map>
      8 #include<math.h>
      9 using namespace std;
     10 const int maxn = 105;
     11 const int inf = 0x7fffffff;
     12 struct node{
     13     int sum,time,id,ans;
     14 }a[ maxn ];
     15 bool cmp(node a,node b){
     16     if( a.sum!=b.sum )return a.sum>b.sum;
     17     else return a.time<b.time;
     18 }
     19 bool cmp2(node a,node b){
     20     return a.id<b.id;
     21 }
     22 int main(){
     23     int n;
     24     int n1,n2,n3,n4,n5;
     25     while( scanf("%d",&n)!=EOF ){
     26         if( n<=0 ) break;
     27         char s[ 18 ];
     28         n1=n2=n3=n4=n5=0;
     29         for( int i=1;i<=n;i++ ){
     30             scanf("%d %s",&a[ i ].sum,s);
     31             a[ i ].id=i;
     32             if( a[i].sum==1 ) n1++;
     33             if( a[i].sum==2 ) n2++;
     34             if( a[i].sum==3 ) n3++;
     35             if( a[i].sum==4 ) n4++;
     36             if( a[i].sum==5 ) n5++;
     37             int res=0;
     38             res=( (s[0]-'0')*10+(s[1]-'0') )*3600+( (s[3]-'0')*10+(s[4]-'0') )*60+( (s[6]-'0')*10+(s[7]-'0'));
     39             a[i].time=res;
     40         }
     41         //for( int i=1;i<=n;i++ ){
     42         //    printf("id:%d time:%d sum:%d\n",a[i].id,a[i].time,a[i].sum);
     43         //}
     44     //    printf("\n");
     45         sort( a+1,a+n+1,cmp );
     46         //for( int i=1;i<=n;i++ ){
     47         //    printf("id:%d time:%d sum:%d\n",a[i].id,a[i].time,a[i].sum);
     48         //}
     49     //    printf("\n");
     50         int f4=1,f3=1,f2=1,f1=1;
     51         //f1=f2=f3=f4=0;
     52         /*
     53         if(n1==1)n1++;
     54         if(n2==1)n2++;
     55         if(n3==1)n3++;
     56         if(n4==1)n4++;
     57         */
     58         for( int i=1;i<=n;i++ ){
     59             if( a[i].sum==5 ){
     60                  a[i].ans=100;//printf("100\n");
     61                  continue;
     62             }
     63             
     64             if( a[i].sum==0 ){
     65                 a[i].ans=50;//printf("50\n");
     66                 continue;
     67             }
     68             
     69             if( a[i].sum==4 && f4<=(n4/2) ){
     70                 f4++;
     71                 a[i].ans=95;//printf("95\n");
     72                 continue;
     73             }
     74             else if( a[i].sum==4 ){
     75                 f4++;
     76                 a[i].ans=90;//printf("90\n");
     77                 continue;
     78             }
     79             
     80             if( a[i].sum==3 && f3<=(n3/2) ){
     81                 f3++;
     82                 a[i].ans=85;//printf("85\n");
     83                 continue;
     84             }
     85             else if( a[i].sum==3 ){
     86                 f3++;
     87                 a[i].ans=80;//printf("80\n");
     88                 continue;
     89             }
     90             
     91             if( a[i].sum==2 && f2<=(n2/2) ){
     92                 f2++;
     93                 a[i].ans=75;//printf("75\n");
     94                 continue;
     95             }
     96             else if( a[i].sum==2 ){
     97                 f2++;
     98                 a[i].ans=70;//printf("70\n");
     99                 continue;
    100             }
    101             
    102             if( a[i].sum==1 && f1<=(n1/2) ){
    103                 f1++;
    104                 a[i].ans=65;//printf("65\n");
    105                 continue;
    106             }
    107             else if( a[i].sum==1 ){
    108                 f1++;
    109                 a[i].ans=60;//printf("60\n");
    110                 continue;
    111             }
    112             
    113         }
    114         sort( a+1,a+1+n,cmp2 );
    115         for( int i=1;i<=n;i++ ){
    116         //    printf("id:%d time:%d ",a[i].id,a[i].time);
    117             printf("%d\n",a[i].ans);
    118         }
    119         printf("\n");
    120     }
    121     return 0;
    122 }    
    keep moving...
  • 相关阅读:
    位运算(&)实现分享弹窗上的图标动态显示/隐藏
    MySql如何编写高效的SQL
    Xamarin跨平台移动开发解决方案
    android wireshark抓包和fiddler抓包
    webview使用总结及注意事项
    让你的Android程序更省电
    android precelable和Serialization序列化数据传输
    图片下载缓存防止OOM
    二分搜索怎么用?我和快手面试官进行了深度探讨
    二分查找详解
  • 原文地址:https://www.cnblogs.com/xxx0624/p/2808175.html
Copyright © 2011-2022 走看看