• <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>

            Why so serious? --[NKU]schindlerlee

            2009年 12月 09日 星期三.sgu134 sgu133 sgu181

            簡單的樹形動態規劃
            貼代碼
             1 /* 
             2  * SOUR:sgu 134
             3  * ALGO:tree dp
             4  * DATE: 2009年 12月 09日 星期三 16:28:16 CST
             5  * COMM:3
             6  * */
             7 #include<iostream>
             8 #include<cstdio>
             9 #include<cstdlib>
            10 #include<cstring>
            11 #include<algorithm>
            12 #include<vector>
            13 using namespace std;
            14 typedef long long LL;
            15 const int maxint = 0x7fffffff;
            16 const long long max64 = 0x7fffffffffffffffll; 
            17 const int N = 16100;
            18 #define pb(x) push_back(x)
            19 vector<int> g[N];
            20 int vis[N];
            21 int n,res = maxint,out[N],top;
            22 void ckmax(int &a,int b) { if(a < b) a = b;} 
            23 int dfs(int u)
            24 {
            25     //printf("dfs = %d\n",u);
            26     vis[u] = true;
            27     int sum = 0,val = 0,tmp;
            28     for(int i = 0;i < g[u].size();i++) {
            29         int v = g[u][i];
            30         if(!vis[v]) {
            31             tmp = dfs(v);
            32             sum += tmp;
            33             ckmax(val,tmp);
            34         }
            35     }
            36     tmp = n - 1 - sum;
            37     ckmax(val,tmp);
            38     if (res > val) {
            39         res = val,top = 1,out[0= u;
            40     }else if(val == res) {
            41         out[top++= u;
            42     }
            43     return sum + 1;
            44 }
            45 
            46 int main()
            47 {
            48     int i,j,k,a=-1,b;
            49     scanf("%d",&n);
            50     for(i = 1;i < n;i++) {
            51         scanf("%d%d",&a,&b);
            52         g[a].pb(b);
            53         g[b].pb(a);
            54     }
            55     if(a != -1) {
            56         dfs(a);
            57         printf("%d %d\n",res,top);
            58         sort(out,out + top);
            59         if(top > 0) printf("%d",out[0]);
            60         for(i = 1;i < top;i++) {
            61             printf(" %d",out[i]);
            62         }
            63         putchar(10);
            64     }else {
            65         printf("0 0\n");
            66     }
            67     return 0;
            68 }
            69 
            70 
            sgu133 排序,看你幾分鐘能想出來
             1     scanf("%d",&n);
             2     for(i = 0;i < n;i++) {
             3         scanf("%d%d",&a[i].l,&a[i].r);
             4     }
             5     sort(a,a + n,cmp);
             6     int res = 0,pre = -1;
             7     for(i = 0;i < n;i++) {
             8         if(a[i].r < pre) {
             9             res ++;
            10         }
            11         pre = max(pre,a[i].r);
            12     }
            13     printf("%d\n",res);
            14 
            sgu181 算一個遞推式的第k項,很容易錯
             1 /* 
             2  * SOUR:sgu181
             3  * ALGO:math
             4  * DATE: 2009年 12月 11日 星期五 21:50:18 CST
             5  * COMM:3
             6  * 注意k可能出現在循環節開始之前
             7  * */
             8 #include<iostream>
             9 #include<cstdio>
            10 #include<cstdlib>
            11 #include<cstring>
            12 #include<algorithm>
            13 using namespace std;
            14 typedef long long LL;
            15 const int maxint = 0x7fffffff;
            16 const long long max64 = 0x7fffffffffffffffll;
            17 
            18 LL A,alpha,beta,gamma,M,k;
            19 const int N = 20010;
            20 LL vis[N];
            21 LL val[N];
            22 int main()
            23 {
            24     LL i;
            25     /*
            26        1)    x0 = A; 
            27        2)    xi = (alpha * x(i-1)^2 + beta * x(i-1) + gamma) mod M, for i >= 1. 
            28      * */
            29     //A (1 <= A <= 10000), alpha (0 <= alpha <= 100), beta (0 <= beta <= 100), gamma
            30     //(0 <= gamma <= 100), M (1 <= M <= 1000), k (0 <= k <= 10^9)
            31 
            32     fill(vis,vis + N,-1);
            33     cin >> A >> alpha >> beta >> gamma >> M >> k;
            34     LL xi = A,step = 0,cycle,before;
            35     while(1) {
            36         if(vis[xi] >= 0) {
            37             cycle = step - vis[xi];
            38             before = vis[xi];
            39             break
            40         }
            41         val[step] = xi;
            42         vis[xi] = step ++;
            43 
            44            xi = (alpha * xi*xi + beta * xi + gamma) % M;
            45     }
            46     if(k < step ) {
            47         cout << val[k] << endl;
            48     }else {
            49         LL idx = (k-before)%cycle + before;
            50         cout << val[idx] << endl;
            51     }
            52 
            53     return 0;
            54 }
            55 
            56 


            posted on 2009-12-13 14:57 schindlerlee 閱讀(1154) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告

            国产精品久久久久久福利漫画| 中文字幕无码久久精品青草| 欧美一区二区三区久久综| 人妻精品久久无码区| 国产精品久久久久久吹潮| 久久r热这里有精品视频| 久久精品国产亚洲一区二区| 久久国产成人午夜aⅴ影院| 久久国产AVJUST麻豆| 久久国产一区二区| 色婷婷综合久久久久中文字幕| 亚洲综合日韩久久成人AV| 亚洲国产精品久久久久网站| 久久亚洲精品无码观看不卡| 久久精品人人槡人妻人人玩AV | 久久精品国产欧美日韩| 久久久久亚洲av无码专区喷水| 精品无码久久久久久久久久| 国内精品久久久久久99蜜桃 | 99精品久久久久久久婷婷| 伊人久久大香线焦综合四虎| av色综合久久天堂av色综合在 | 韩国无遮挡三级久久| 久久国产免费直播| 久久国产三级无码一区二区| 精品少妇人妻av无码久久| 久久这里有精品| 久久精品国产99国产精品 | 午夜精品久久久内射近拍高清 | 国产精品99久久久久久人| 亚洲熟妇无码另类久久久| 久久中文字幕视频、最近更新 | 久久精品国产精品青草| www性久久久com| www.久久热| 久久精品国产影库免费看| 99re久久精品国产首页2020| 精品国际久久久久999波多野| www性久久久com| 欧美亚洲国产精品久久蜜芽| 中文字幕成人精品久久不卡|