• <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 閱讀(231) 評論(0)  編輯 收藏 引用 所屬分類: data struct

            <2011年9月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            99久久精品无码一区二区毛片 | 久久久久夜夜夜精品国产| 久久国产免费直播| 久久精品国产亚洲αv忘忧草 | 色狠狠久久AV五月综合| 久久久女人与动物群交毛片| 2021少妇久久久久久久久久| 丁香五月综合久久激情| 久久99九九国产免费看小说| 伊人久久大香线蕉av一区| 久久天天躁狠狠躁夜夜网站| 91久久福利国产成人精品| 久久精品国产亚洲av瑜伽| 尹人香蕉久久99天天拍| 国产∨亚洲V天堂无码久久久| 久久精品国产亚洲AV不卡| 国色天香久久久久久久小说 | yy6080久久| 国产精品免费看久久久| 国内精品久久久久久久涩爱| 中文字幕人妻色偷偷久久| 久久综合亚洲色HEZYO国产| 波多野结衣中文字幕久久| 日日狠狠久久偷偷色综合96蜜桃| 亚洲国产另类久久久精品黑人| 91亚洲国产成人久久精品| 婷婷久久久亚洲欧洲日产国码AV| 久久国产精品久久| 欧美熟妇另类久久久久久不卡| 亚洲欧美国产精品专区久久| 久久免费线看线看| 国内精品久久久久久野外| 亚洲欧美伊人久久综合一区二区| 久久久噜噜噜久久| 久久精品国产亚洲av麻豆小说 | 色综合久久精品中文字幕首页| 日本久久久久亚洲中字幕| 久久九九兔免费精品6| 久久只有这精品99| 亚洲欧美一区二区三区久久| 久久精品无码一区二区三区日韩|