• <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 閱讀(1156) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告

            性欧美大战久久久久久久久| 久久精品人人做人人爽97 | 久久精品国产精品亚洲艾草网美妙| 久久96国产精品久久久| 一本一道久久精品综合| 久久99亚洲综合精品首页| 久久毛片一区二区| 久久青青草原综合伊人| 久久噜噜久久久精品66| 伊人久久大香线焦AV综合影院 | 精品久久久无码人妻中文字幕| 99久久精品免费看国产一区二区三区| 国产精品女同久久久久电影院| 久久91这里精品国产2020| 亚洲AV无码成人网站久久精品大| 久久久久综合网久久| 久久婷婷五月综合国产尤物app| 91精品国产91久久综合| 久久精品人人做人人爽电影| 国产精品一区二区久久精品无码 | 国产V亚洲V天堂无码久久久| 久久强奷乱码老熟女网站| 久久亚洲精品人成综合网| 色综合久久88色综合天天 | 国产精品久久一区二区三区| 久久人做人爽一区二区三区| 久久av高潮av无码av喷吹| 精品久久久久久| 久久久国产精品亚洲一区| 国产A三级久久精品| 久久午夜免费视频| 香蕉久久AⅤ一区二区三区| 国产午夜福利精品久久| 亚洲综合婷婷久久| 99久久国产主播综合精品| 国产午夜福利精品久久2021| 亚洲国产精品18久久久久久| 亚洲午夜久久久影院伊人| 狠狠色婷婷久久综合频道日韩| 亚洲欧美成人久久综合中文网 | 色婷婷久久综合中文久久蜜桃av|