• <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>
            發新隨筆
            發新文章 管理

            #include <stdio.h>

            struct xx {
                
            int l, r, m, c;
            }
             t[9000000];
            int n, m, i;

            void make(int l, int r, int i) {
                t[i].l 
            = l, t[i].r = r, t[i].m = (l + r) >> 1, t[i].c = r - l;
                
            if (l + 1 != r) {
                    make(l, t[i].m, i 
            << 1);
                    make(t[i].m, r, (i 
            << 1+ 1);
                }

            }


            int update(int l, int r, int i) {
                
            if (t[i].l == l && t[i].r == r) return t[i].c;
                
            if (r <= t[i].m) return update(l, r, i << 1);
                
            if (l >= t[i].m) return update(l, r, (i << 1+ 1);
                
            return update(l, t[i].m, i << 1+ update(t[i].m, r, (i << 1+ 1);
            }


            int find(int k, int i) {
                t[i].c
            --;
                
            if (t[i].l == t[i].m) {
                    printf(
            "%d ", t[i].l);
                    
            return t[i].l;
                }

                
            int s = t[i << 1].c;
                
            if (k <= s) return find(k, i << 1);
                
            return find(k - s, (i << 1+ 1);
            }


            int main() {
                
            while (scanf("%d%d"&n, &m) != EOF) {
                    make(
            1, n + 11), i = 0;
                    
            while (i = update(1, find((i + m) % t[1].c ? (i + m) % t[1].c : t[1].c, 1+ 11), t[1].c);
                    printf(
            "\n");
                }

                
            return 0;
            }

            posted @ 2010-05-19 17:59 huicpc0860 閱讀(210) | 評論 (0)編輯 收藏
             
            //狀態壓縮dp
            #include 
            <stdio.h>
            #include 
            <string.h>
            int dp[101][6][160];

            int max(int a, int b) {
                
            return a > b ? a : b;
            }

            int main() {
                
            int m, k;
                
            while (scanf("%d%d"&m, &k), m || k) {
                    memset(dp, 
            0sizeof (dp));
                    
            int n = 1 << k, ans = 0, a;
                    
            for (int i = 1; i <= m; i++) {
                        scanf(
            "%d"&a);
                        a
            --;
                        
            for (int j = 0; j < k; j++)
                            
            for (int s = 0; s < n; s++)
                                
            if ((s >> a)&1) {
                                    
            if (a == j) dp[i][j][s] = max(dp[i][j][s], dp[i - 1][j][s] + 1);
                                    
            else dp[i][j][s] = max(dp[i][j][s], dp[i - 1][j][s]);
                                } 
            else {
                                    dp[i][a][s 
            | (1 << a)] = max(dp[i][a][s | (1 << a)], dp[i - 1][j][s] + 1);
                                    dp[i][j][s] 
            = max(dp[i][j][s], dp[i - 1][j][s]);
                                }
                    }
                    
            for (int i = 0; i < k; i++)
                        
            for (int j = 0; j < n; j++)
                            ans 
            = max(ans, dp[m][i][j]);
                    printf(
            "%d\n", m - ans);
                }
                
            return 0;
            }

            posted @ 2010-05-18 16:42 huicpc0860 閱讀(214) | 評論 (0)編輯 收藏
             
            #include <stdio.h>
            #include 
            <string.h>
            const int N = 1 << 11;
            long long x[N], y[N];
            int n, m, t;

            bool check(int x) {
                
            while (x) {
                    
            if (x & 1) {
                        x 
            >>= 1;
                        
            if (x & 1)x >>= 1;
                        
            else return 0;
                    } 
            else x >>= 1;
                }
                
            return 1;
            }

            bool judge(int now, int last) {
                
            int tmp = t & (~last);
                
            if ((now & tmp) == tmp && check(now - tmp))return 1;
                
            return 0;
            }

            int main() {
                
            while (scanf("%d%d"&n, &m), n || m) {
                    
            if ((n & 1&& (m & 1)) {
                        puts(
            "0");
                        
            continue;
                    }
                    
            if (n < m)n ^= m, m ^= n, n ^= m;
                    
            int s = 1 << m;
                    t 
            = s - 1;
                    
            for (int i = 0; i < s; i++)y[i] = check(i);
                    
            for (int i = 1; i < n; i++) {
                        
            for (int j = 0; j < s; j++)
                            
            for (int k = 0; k < s; k++)
                                
            if (judge(j, k))x[j] += y[k];
                        memcpy(y, x, 
            sizeof (x[0]) * s);
                        memset(x, 
            0sizeof (x[0]) * s);
                    }
                    printf(
            "%lld\n",y[t]);
                }
                
            return 0;
            }

            posted @ 2010-05-17 16:11 huicpc0860 閱讀(163) | 評論 (0)編輯 收藏
             
             1 #include <stdio.h>
             2 int r[30010= {0}, p[30010], n, x, y, d[30010];
             3 char s[3];
             4 
             5 int find(int x) {
             6     if (x != p[x]) {
             7         int t = p[x];
             8         p[x] = find(p[x]);
             9         r[x] += r[t];
            10     }
            11     return p[x];
            12 }
            13 
            14 int main() {
            15     for (int i = 1; i < 30010; i++)p[i] = i, d[i] = 1;
            16     scanf("%d"&n);
            17     while (n--) {
            18         scanf("%s%d", s, &x);
            19         if (s[0== 'M') {
            20             scanf("%d"&y);
            21             x = find(x), y = find(y);
            22             p[x] = y;
            23             r[x] = d[y];
            24             d[y] += d[x];
            25         } else {
            26             find(x);
            27             printf("%d\n", r[x]);
            28         }
            29     }
            30     return 0;
            31 }

            posted @ 2010-05-15 21:18 huicpc0860 閱讀(142) | 評論 (0)編輯 收藏
             
            #include <stdio.h>
            #include 
            <algorithm>
            using namespace std;

            struct point {
                
            int x, y;
            };

            bool cmp(point p1, point p2) {
                
            return p1.y < p2.y || p1.y == p2.y && p1.x < p2.x;
            }

            int cross(point p0, point p1, point p2) {
                
            return (p1.x - p0.x)*(p2.y - p0.y)-(p1.y - p0.y)*(p2.x - p0.x);
            }

            void tubao(point *p, int n, point *ch, int &m) {
                
            int i, k;
                sort(p, p 
            + n, cmp);
                
            for (m = i = 0; i < n; i++) {
                    
            while (m > 1 && cross(ch[m - 2], ch[m - 1], p[i]) < 0)m--;
                    ch[m
            ++= p[i];
                }
                
            if (n = m)return;
                k 
            = m;
                
            for (i = n - 2; i >= 0; i--) {
                    
            while (m > k && cross(ch[m - 2], ch[m - 1], p[i]) < 0)m--;
                    ch[m
            ++= p[i];
                }
                
            if (n > 1)m--;
            }

            bool judge(point *p, int n) {
                
            if (n < 6)return 0;
                
            for (int i = 2; i < n; i++)
                    
            if (cross(p[0], p[1], p[i]) != 0)return 1;
                
            return 0;
            }

            int main() {
                point p[
            1010], ch[1010];
                
            int t, n;
                scanf(
            "%d"&t);
                
            while (t--) {
                    scanf(
            "%d"&n);
                    
            for (int i = 0; i < n; i++)
                        scanf(
            "%d%d"&p[i].x, &p[i].y);
                    
            bool flag = judge(p, n);
                    
            if (flag) {
                        tubao(p, n, ch, n);
                        ch[n] 
            = ch[0];
                        point a, b;
                        
            for (int i = 1; flag && i < n;) {
                            a 
            = ch[i - 1], b = ch[i++];
                            flag 
            = 0;
                            
            while (i <= n && cross(a, b, ch[i]) == 0) {
                                flag 
            = 1;
                                i
            ++;
                            }
                        }
                    }
                    puts(flag 
            ? "YES" : "NO");
                }
                
            return 0;
            }

            posted @ 2010-05-15 21:07 huicpc0860 閱讀(281) | 評論 (0)編輯 收藏
            僅列出標題
            共2頁: 1 2 
            CALENDER
            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿

            隨筆分類

            隨筆檔案

            搜索

            •  

            最新隨筆

            最新評論


            Powered By: 博客園
            模板提供滬江博客

            久久精品国产亚洲5555| 久久精品国产亚洲AV不卡| 7777久久亚洲中文字幕| 国产韩国精品一区二区三区久久 | 久久久久久久精品成人热色戒| 亚洲国产天堂久久综合| 久久精品成人欧美大片| 国产精品久久久久…| 亚洲国产综合久久天堂| 69久久精品无码一区二区| 欧美一区二区久久精品| 91精品婷婷国产综合久久| 久久se精品一区精品二区国产| 亚洲乱码中文字幕久久孕妇黑人 | 久久婷婷人人澡人人爽人人爱| 久久久久久亚洲Av无码精品专口| 99久久精品免费看国产免费| 亚洲人成精品久久久久| 欧美精品福利视频一区二区三区久久久精品 | 久久久久综合中文字幕| 97香蕉久久夜色精品国产 | 国产精品久久影院| 狠狠色丁香婷婷久久综合五月| 久久夜色tv网站| 国产婷婷成人久久Av免费高清| 国产精品亚洲综合久久| 婷婷久久综合九色综合九七| 亚洲综合精品香蕉久久网97| 国产精品对白刺激久久久| 成人午夜精品无码区久久| 国产精品久久新婚兰兰| 久久久久久免费视频| 香蕉久久永久视频| 综合久久一区二区三区| 欧美久久亚洲精品| 欧美久久久久久精选9999| 久久青青国产| 人人妻久久人人澡人人爽人人精品 | 69久久夜色精品国产69| 思思久久好好热精品国产| 中文字幕无码久久久|