• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            pku 1209 Calendar 歷法問題,超多trick

            簡要題意:
            給出1900-1999 年中任一一年的事件,(d.m.p),分別表示日、月、重要度(提前p天需要通知)。然后給出n個時間點,要求輸出需要提醒的日期。排序規則很詭異(與官 方測試數據不同),引poj的discuss:先是按時間排,時間相同就看是不是今天,是今天就只管輸入順序,不是今天就先考慮星星的問題再來輸入順序。

            我的解法:
            將事件看做區間,開一個366的二維數組或者vector,來記錄覆蓋每個時間點的事件。然后對每個數組按照上述排序規則進行排序。
            輸出的時候有點詭異,所有的時間輸出采取右對齊并占3字節。
            還有個更詭異的,時期會套圈。。。(感覺和題意描述有點區別),就是說,如果輸出12.31號需要提醒的事件,那么需要考慮1月份的,然后排序的時候1月份還要排在后面。。。。

            代碼:
              1 Source Code
              2 Problem: 1209        User: yzhw
              3 Memory: 616K        Time: 0MS
              4 Language: G++        Result: Accepted
              5 
              6     * Source Code
              7 
              8       # include <cstdio>
              9       # include <vector>
             10       # include <cstring>
             11       # include <string>
             12       # include <algorithm>
             13       using namespace std;
             14       struct node
             15       {
             16           int t,r,id,d,m;
             17           char name[255];
             18           bool operator<(const node &pos) const
             19           {
             20               if(t!=pos.t) return t<pos.t;
             21               else if(r!=pos.r) return r>pos.r;
             22               else return id<pos.id;
             23           }
             24       };
             25       vector<node> day[400];
             26 
             27       int main() {
             28       //    freopen("c.in","r",stdin);
             29       //    freopen("ans.txt","w",stdout);
             30           int year,c=0;
             31           scanf("%d",&year);
             32           int time[13];
             33           time[0]=0;
             34           for(int i=1;i<=12;i++)
             35               if(i<=7&&i%2||i>7&&!(i%2))
             36                   time[i]=31;
             37               else
             38                   time[i]=30;
             39           if(year%4==0)
             40               time[2]=29;
             41           else
             42               time[2]=28;
             43           for(int i=2;i<=12;i++)
             44               time[i]+=time[i-1];
             45           bool flag=false;
             46           while(true)
             47           {
             48               char jud[5];
             49               scanf("%s",jud);
             50               if(jud[0]=='#'break;
             51               else if(jud[0]=='A')
             52               {
             53                   int d,m,l;
             54                   scanf("%d%d%d",&d,&m,&l);
             55                   char str[300];
             56                   gets(str);
             57                   while(str[0]==' ')
             58                       for(int i=0;i<strlen(str);i++)
             59                           str[i]=str[i+1];
             60                   for(int i=max(1,time[m-1]+d-l);i<=time[m-1]+d;i++)
             61                   {
             62                       node tmp;
             63                       strcpy(tmp.name,str);
             64                       tmp.id=c;
             65                       tmp.d=d;
             66                       tmp.m=m;
             67                       if(i!=time[m-1]+d)
             68                          tmp.r=l-(time[m-1]+d-i-1);
             69                       else
             70                          tmp.r=8;
             71                       tmp.t=time[m-1]+d;
             72                       day[i].push_back(tmp);
             73                   }
             74 
             75                   for(int i=time[12]+time[m-1]+d-l;i<=time[12];i++)
             76                   {
             77                       node tmp;
             78                       strcpy(tmp.name,str);
             79                       tmp.id=c;
             80                       tmp.d=d;
             81                       tmp.m=m;
             82                       tmp.r=l-(time[m-1]+d-1+time[12]-i+1-1);
             83                       tmp.t=time[m-1]+d+time[12];
             84                       day[i].push_back(tmp);
             85                   }
             86                   c++;
             87               }
             88               else
             89               {
             90                   if(!flag)
             91                   {
             92                       flag=true;
             93                       for(int i=0;i<=time[12];i++)
             94                           sort(day[i].begin(),day[i].end());
             95                   }
             96                   int d,m;
             97                   scanf("%d%d",&d,&m);
             98                   printf("Today is:%3d%3d\n",d,m);
             99                   for(int i=0;i<day[time[m-1]+d].size();i++)
            100                   {
            101                      printf("%3d%3d ",day[time[m-1]+d][i].d,day[time[m-1]+d][i].m);
            102                      if(day[time[m-1]+d][i].t==time[m-1]+d) printf("*TODAY*");
            103                      else
            104                      {
            105                        for(int j=0;j<day[time[m-1]+d][i].r;j++)
            106                            printf("*");
            107                        for(int j=day[time[m-1]+d][i].r+1;j<8;j++)
            108                            printf(" ");
            109                      }
            110                      printf(" %s\n",day[time[m-1]+d][i].name);
            111                   }
            112                   printf("\n");
            113               }
            114           }
            115           return 0;
            116       }
            117 
            118 

            posted on 2010-11-26 20:38 yzhw 閱讀(239) 評論(0)  編輯 收藏 引用 所屬分類: data struct

            <2010年11月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            亚洲中文字幕久久精品无码喷水| 香港aa三级久久三级老师2021国产三级精品三级在 | 777午夜精品久久av蜜臀 | 亚洲国产综合久久天堂| 久久精品国产久精国产思思| 99久久精品免费国产大片| 少妇久久久久久被弄到高潮 | 亚洲精品乱码久久久久久蜜桃图片 | 国产亚洲美女精品久久久2020| 看久久久久久a级毛片| 久久免费99精品国产自在现线| 日产精品99久久久久久| 一本一道久久a久久精品综合 | 久久久国产视频| 精品国产综合区久久久久久| 亚洲AV日韩AV永久无码久久| 手机看片久久高清国产日韩| 久久精品人人做人人爽电影蜜月| 亚洲&#228;v永久无码精品天堂久久 | 精品久久久久久久久中文字幕| 久久精品国产男包| 激情五月综合综合久久69| 久久精品国产亚洲AV无码娇色 | 伊人色综合久久天天人手人婷 | 热99re久久国超精品首页| 久久久久成人精品无码中文字幕| 久久婷婷五月综合97色直播| 久久久久免费视频| 久久伊人色| 久久亚洲日韩看片无码| 一级做a爰片久久毛片看看| 人人狠狠综合88综合久久| 久久久中文字幕日本| 精品久久久久久无码人妻蜜桃 | 亚洲国产精品久久久久网站| 99精品伊人久久久大香线蕉| Xx性欧美肥妇精品久久久久久| 国产精品综合久久第一页| 久久香蕉国产线看观看猫咪?v| 人人狠狠综合88综合久久| 国产精品亚洲综合久久|