青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

superman

聚精會神搞建設 一心一意謀發展
posts - 190, comments - 17, trackbacks - 0, articles - 0
   :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

  1 /* Accepted 1141 C++ 00:03.20 5904K */
  2 #include <iostream>
  3 
  4 using namespace std;
  5 const int maxn = 800;
  6 
  7 struct { int cnt, son[maxn]; } Tree[maxn + 1];
  8 struct { int cnt, x[maxn]; } Query[maxn + 1];
  9 
 10 class DisjointSet
 11 {
 12 private:
 13      int p[maxn + 1], rank[maxn + 1];
 14 public:
 15      void reset()
 16      {
 17           memset(p, 0sizeof(p));
 18           memset(rank, 0sizeof(rank));
 19      }
 20      void make(const int x)
 21      {
 22           p[x] = x;
 23           rank[x] = 0;
 24      }
 25      void link(const int x, const int y)
 26      {
 27           if(rank[x] > rank[y])
 28                p[y] = x;
 29           else
 30           {
 31                p[x] = y;
 32                if(rank[x] == rank[y])
 33                     rank[y]++;
 34           }
 35      }
 36      int find(const int x)
 37      {
 38           if(x != p[x])
 39                p[x] = find(p[x]);
 40           return p[x];
 41      }
 42 }set;
 43 
 44 int ancestor[maxn + 1], cnt[maxn + 1];
 45 bool black[maxn + 1];
 46 
 47 void LCA(int u)
 48 {
 49      set.make(u);
 50      ancestor[set.find(u)] = u;
 51      for(int i = 0; i < Tree[u].cnt; i++)
 52      {
 53           LCA(Tree[u].son[i]);
 54           set.link(u, Tree[u].son[i]);
 55           ancestor[set.find(u)] = u;
 56      }
 57      black[u] = true;
 58      for(int i = 0; i < Query[u].cnt; i++)
 59           if(black[Query[u].x[i]])
 60                cnt[ancestor[set.find(Query[u].x[i])]]++;
 61 }
 62 
 63 int main()
 64 {
 65      int n;
 66      while(cin >> n)
 67      {
 68           memset(cnt,   0,     sizeof(cnt));
 69           memset(Tree,  0,     sizeof(Tree));
 70           memset(Query, 0,     sizeof(Query));
 71           memset(black, falsesizeof(black));
 72           
 73           int s, t, m;
 74           bool x[maxn] = {false};
 75           for(int i = 0; i < n; i++)
 76           {
 77                scanf("%d:(%d)"&s, &m);
 78                for(int k = 0; k < m; k++)
 79                {
 80                     cin >> t;
 81                     x[t] = true;
 82                     Tree[s].son[k] = t;
 83                }
 84                Tree[s].cnt = m;
 85           }
 86           
 87           int root;
 88           for(int i = 1; i <= n; i++)
 89                if(x[i] == false)
 90                {
 91                     root = i;
 92                     break;
 93                }
 94           
 95           cin >> m;
 96           char c1, c2, c3;
 97           for(int i = 0; i < m; i++)
 98           {
 99                cin >> c1 >> s >> c2 >> t >> c3;
100                Query[s].x[Query[s].cnt++= t;
101                Query[t].x[Query[t].cnt++= s;
102           }
103           
104           set.reset();
105           LCA(root);
106           
107           for(int i = 1; i <= n; i++)
108                if(cnt[i])
109                     cout << i << ':' << cnt[i] << endl;
110      }
111      
112      return 0;
113 }
114 

posted @ 2008-04-22 22:40 superman 閱讀(359) | 評論 (0)編輯 收藏

 1 /* Accepted 1140 C++ 00:07.18 928K */
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 int n, m, match[301];
 7 bool map[301][301], visited[301];
 8 
 9 bool dfs(int p)
10 {
11      for(int i = 1; i <= m; i++)
12           if(map[p][i] && visited[i] == false)
13           {
14                visited[i] = true;
15                if(match[i] == 0 || dfs(match[i]))
16                {
17                     match[i] = p;
18                     return true;
19                }
20           }
21      return false;
22 }
23 
24 int main()
25 {
26      int cases; cin >> cases;
27      while(cases--)
28      {
29           memset(map, falsesizeof(map));
30           memset(visited, falsesizeof(visited));
31           memset(match, 0sizeof(match));
32           
33           cin >> n >> m;
34           
35           int cnt, t;
36           for(int s = 1; s <= n; s++)
37           {
38                cin >> cnt;
39                while(cnt--)
40                {
41                     cin >> t;
42                     map[s][t] = true;
43                }
44           }
45           
46           cnt = 0;
47           for(int i = 1; i <= n; i++)
48           {
49                memset(visited, falsesizeof(visited));
50                cnt += dfs(i);
51           }
52           cout << (cnt == n ? "YES" : "NO"<< endl;
53      }
54      
55      return 0;
56 }
57 

posted @ 2008-04-22 10:02 superman 閱讀(331) | 評論 (0)編輯 收藏

 1 /* Accepted 1127 C++ 00:00.00 840K */
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 int n, m;
 7 int len[26][26];
 8 bool map[26][26], visited[26];
 9 
10 void dfs(int s, int p, int cnt)
11 {
12      visited[p] = true;
13      for(int i = 0; i < n; i++)
14           if(map[p][i] && visited[i] == false)
15           {
16                len[s][i] = cnt + 1;
17                dfs(s, i, cnt + 1);
18           }
19 }
20 
21 int main()
22 {
23      char source;
24      cin >> n >> source >> m;
25      
26      char s, t;
27      while(cin >> s >> t)
28           s -= 'A', t -= 'A', map[s][t] = map[t][s] = true;
29      
30      for(int i = 0; i < n; i++)
31      {
32           memset(visited, falsesizeof(visited));
33           dfs(i, i, 0);
34      }
35      
36      m--;
37      cout << "Program 8 by team X" << endl;
38      cout << source; source -= 'A';
39      
40      bool fortified[26= {false};
41      fortified[source] = true;
42      
43      while(m--)
44      {
45           int max = 0, idx;
46           for(int i = 0; i < n; i++)
47                if(fortified[i] == false)
48                {
49                     int minDist = INT_MAX;
50                     
51                     for(int j = 0; j < n; j++)
52                          if(fortified[j])
53                               minDist <?= len[i][j];
54                     if(max < minDist)
55                     {
56                          max = minDist;
57                          idx = i;
58                     }
59                }
60           fortified[idx] = true;
61           cout << ' ' << char(idx + 'A');
62      }
63      cout << endl << "End of program 8 by team X" << endl;
64      
65      return 0;
66 }
67 

posted @ 2008-04-21 22:55 superman 閱讀(289) | 評論 (0)編輯 收藏

 1 /* Accepted 1181 C++ 00:00.00 848K */
 2 #include <string>
 3 #include <iostream>
 4 #include <algorithm>
 5 
 6 using namespace std;
 7 
 8 int main()
 9 {
10     string s, dict[100];
11     int n = 0, cnt[100][26= {0};
12     
13     while( (cin >> s) && s != "XXXXXX" )
14         dict[n++= s;
15     
16     sort( dict, dict + n );
17     
18     forint i = 0; i < n; i++ )
19         forint j = 0; j < dict[i].size(); j++ )
20             cnt[i][dict[i][j] - 97]++;
21     
22     while( (cin >> s) && s != "XXXXXX" )
23     {
24         int x[26= {0};
25         forint i = 0; i < s.size(); i++ )
26             x[s[i] - 97]++;
27         bool find = false;
28         forint i = 0; i < n; i++ )
29             if( s.size() == dict[i].size() )
30             {
31                 int j;
32                 for( j = 0; j < 26; j++ )
33                     if( cnt[i][j] != x[j] )
34                         break;
35                 if( j == 26 )
36                 {
37                     find = true;
38                     cout << dict[i] << endl;
39                 }
40             }
41         if( find == false )
42             cout << "NOT A VALID WORD" << endl;
43         cout << "******" << endl;
44     }
45     
46     return 0;
47 }
48 

posted @ 2008-04-18 09:50 superman 閱讀(300) | 評論 (0)編輯 收藏

set opt[i][j] for the the min time of using i lessons cover the 1..j topics.
    opt[i][j] = min{ opt[i - 1][j - k] + d(j - k + 1 .. j) }

 1 /* Accepted 1183 C++ 00:01.91 4760K */
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int N;
 9     cin >> N;
10     while(N--)
11     {
12         int n, l, c, t[1001], Case = 0,;
13         cin >> n;
14         while(n)
15         {
16             cin >> l >> c;
17             for(int i = 1; i <= n; i++)
18                 cin >> t[i];
19             
20             int d[1001][1001];
21             for(int i = 0; i <= n; i++)
22             for(int j = 0; j <= n; j++)
23                 d[i][j] = INT_MAX;
24             
25             d[0][0= 0;
26             
27             int i;
28             for(i = 0; i < n; i++)
29             {
30                 if(d[i][n] != INT_MAX)
31                     break;
32                 
33                 for(int j = i; j < n; j++)
34                 {
35                     if(d[i][j] == INT_MAX)
36                         break;
37                     
38                     int x = l;
39                     for(int k = j + 1; k <= n; k++)
40                     {
41                         x -= t[k];
42                         if(x < 0)
43                             break;
44                         
45                         if(x == 0)
46                             d[i + 1][k] <?= d[i][j];
47                         else if(1 <= x && x <= 10)
48                             d[i + 1][k] <?= d[i][j] - c;
49                         else if(x > 10)
50                             d[i + 1][k] <?= d[i][j] + (x - 10* (x - 10);
51                     }
52                 }
53             }
54             
55             cout << "Case " << ++ Case << ':' << endl << endl;
56             cout << "Minimum number of lectures: " << i << endl;
57             cout << "Total dissatisfaction index: " << d[i][n] << endl;
58             
59             cin >> n;
60             if(n)
61                 cout << endl;
62         }
63         if(N)
64             cout << endl;
65     }
66     
67     return 0;
68 }
69 

posted @ 2008-04-17 23:14 superman 閱讀(424) | 評論 (0)編輯 收藏

 1 /* C++ Accepted 0.015 380 KB */
 2 #include <queue>
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 struct rec { int n, m; };
 8 
 9 int main()
10 {
11     int n = 0char c;
12     for(int i = 0; i < 16; i++)
13     {
14         cin.get(c);
15         if(c == '\n')
16         {
17             i--;
18             continue;
19         }
20         if(c == 'b')
21             n |= (1 << i);
22     }
23     
24     rec cur = {n, 0};
25     queue <rec> q;
26     q.push(cur);
27     
28     bool repeat[65536= {false}, find = false;
29     while(q.empty() == false)
30     {
31         cur = q.front(); q.pop();
32         
33         if(cur.n == 0 || cur.n == 65535)
34         {
35             cout << cur.m << endl;
36             find = true;
37             break;
38         }
39         
40         for(int i = 0; i < 16; i++)
41         {
42             int t = cur.n;
43             
44             t ^= (1 << i);
45             if(i - 4 >= 0)
46                 t ^= (1 << (i - 4));
47             if(i + 4 < 16)
48                 t ^= (1 << (i + 4));
49             if(i % 4 - 1 >= 0)
50                 t ^= (1 << (i - 1));
51             if(i % 4 + 1 < 4)
52                 t ^= (1 << (i + 1));
53             
54             if(repeat[t] == false)
55             {
56                 repeat[t] = true;
57                 rec tmp = {t, cur.m + 1};
58                 q.push(tmp);
59             }
60         }
61     }
62     
63     if(find == false)
64         cout << "Impossible" << endl;
65     
66     return 0;
67 }
68 

posted @ 2008-04-16 02:34 superman 閱讀(358) | 評論 (0)編輯 收藏

 1 /* Accepted 0.046 200 KB */
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     struct { int x, y; } p[200];
 9     
10     int n;
11     cin >> n;
12     for(int i = 0; i < n; i++)
13         cin >> p[i].x >> p[i].y;
14     
15     int max = 0;
16     for(int i = 0; i < n; i++)
17     for(int j = 0; j < n; j++)
18         if(i != j)
19         {
20             int x = p[j].x - p[i].x;
21             int y = p[j].y - p[i].y;
22             
23             int cnt = 2;
24             for(int k = 0; k < n; k++)
25                 if(k != i && k != j)
26                     if(x * (p[k].y - p[i].y) == y * (p[k].x - p[i].x))
27                         cnt++;
28             if(max < cnt)
29                 max = cnt;
30         }
31     
32     cout << max << endl;
33     
34     return 0;
35 }
36 

posted @ 2008-04-15 15:32 superman 閱讀(264) | 評論 (0)編輯 收藏

 1 /* Accepted 0.39 1 200 KB */
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 int n, m, match[1000];
 7 bool map[1000][1000], visited[1000];
 8 
 9 bool dfs(int p)
10 {
11     for(int i = 0; i < m; i++)
12         if(map[p][i] && visited[i] == false)
13         {
14             visited[i] = true;
15             if(match[i] == -1 || dfs(match[i]))
16             {
17                 match[i] = p;
18                 return true;
19             }
20         }
21     return false;
22 }
23 
24 int main()
25 {
26     int s, t;
27     cin >> n >> m >> s;
28     while(cin >> s >> t)
29     {
30         s--, t--;
31         map[s][t] = true;
32     }
33     
34     int cnt = 0;
35     memset(match, 0XFFsizeof(match));
36     for(int i = 0; i < n; i++)
37     {
38         memset(visited, falsesizeof(visited));
39         cnt += dfs(i);
40     }
41     
42     cout << n + m - 2 * cnt + cnt << endl;
43     
44     return 0;
45 }
46 

posted @ 2008-04-14 23:02 superman 閱讀(226) | 評論 (0)編輯 收藏

 1 /* Accepted 1171 C++ 00:00.40 488K */
 2 #include <stdio.h>
 3 
 4 int main()
 5 {
 6     int n, N;
 7     char p[100000];
 8     
 9     scanf("%d"&N);
10     while(N--)
11     {
12         scanf("%d"&n);
13         for(int i = 0; i < n; )
14         {
15             scanf("%c", p + i);
16             if(p[i] == 'U' || p[i] == 'D')
17                 i++;
18         }
19         
20         int ans = 0, pos = 0;
21         for(int i = 1; i < n; i++)
22             if(p[i] != p[pos])
23             {
24                 pos = i;
25                 ans++;
26             }
27         
28         printf("%d\n", ans);
29         if(N)
30             putchar('\n');
31     }
32     
33     return 0;
34 }
35 

posted @ 2008-04-14 21:17 superman 閱讀(250) | 評論 (0)編輯 收藏

 1 /* Accepted 1133 C++ 00:00.04 836K */
 2 #include <map>
 3 #include <iostream>
 4 
 5 using namespace std;
 6 
 7 inline int split(int n)
 8 {
 9     int sum = 0;
10     while(n)
11     {
12         sum += n % 10;
13         n /= 10;
14     }
15     return sum;
16 }
17 
18 inline int prime(int n)    //if prime(n) == n, it's a prime number.
19 {
20     if(n % 2 == 0)
21         return 2;
22     for(int i = 3; i * i <= n; i += 2)
23         if(n % i == 0)
24             return i;
25     return n;
26 }
27 
28 int main()
29 {
30     int n;
31     map <intint> rec;
32     while((cin >> n) && n)
33     {
34         if(rec.count(n))
35         {
36             cout << rec[n] << endl;
37             continue;
38         }
39         for(int i = n + 1true; i++)
40         {
41             if(prime(i) == i)
42                 continue;
43             
44             int s1 = split(i);
45             
46             int s2 = 0, m = i, p;
47             while((p = prime(m)) != 1)
48             {
49                 s2 += split(p);
50                 m /= p;
51             }
52             
53             if(s1 == s2)
54             {
55                 cout << i << endl;
56                 rec[n] = i;
57                 break;
58             }
59         }
60     }
61     
62     return 0;
63 }
64 

posted @ 2008-04-14 18:24 superman 閱讀(456) | 評論 (0)編輯 收藏

僅列出標題
共19頁: First 9 10 11 12 13 14 15 16 17 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美劲爆第一页| 国产精品性做久久久久久| 激情婷婷亚洲| 鲁大师成人一区二区三区| 久久久久久久久久久久久久一区| 国产精自产拍久久久久久| 欧美一区二区三区在线播放| 欧美夜福利tv在线| 狠狠色综合播放一区二区| 欧美不卡激情三级在线观看| 欧美成人小视频| 亚洲永久免费| 久久er精品视频| 91久久精品国产91性色| 9国产精品视频| 国产主播一区二区三区| 欧美国产视频在线| 欧美无乱码久久久免费午夜一区| 欧美一区二区三区四区在线观看地址| 午夜精品一区二区三区四区| 亚洲国产精品一区二区www| 99国内精品| 国产亚洲精久久久久久| 91久久综合| 国产精品成人播放| 久久综合国产精品| 欧美日韩亚洲系列| 久久人人97超碰精品888| 欧美激情第3页| 久久超碰97人人做人人爱| 免费成人黄色片| 性色av一区二区三区红粉影视| 久久久久久自在自线| 亚洲夜间福利| 美日韩精品免费观看视频| 午夜精品久久久久久久久久久| 久久久另类综合| 性做久久久久久免费观看欧美| 久久一区二区精品| 欧美永久精品| 欧美视频免费在线观看| 欧美成ee人免费视频| 国产精品永久免费在线| 亚洲精品一区二区三| 在线观看91精品国产麻豆| 亚洲在线一区二区| 中文一区在线| 欧美高清视频在线| 欧美不卡视频| 激情欧美一区二区三区| 亚洲免费视频成人| 亚洲在线一区二区| 欧美日韩国产三级| 91久久精品国产| 亚洲激情成人在线| 久久青青草原一区二区| 久久久久久久综合| 国产日韩欧美视频在线| 亚洲一区二区三区欧美| 一区二区精品| 欧美日韩精品免费| 亚洲免费高清| 一区二区激情| 欧美色欧美亚洲高清在线视频| 亚洲人精品午夜| 一区二区三区欧美成人| 欧美日韩国产成人精品| 亚洲精品老司机| aⅴ色国产欧美| 欧美久久电影| 一本色道精品久久一区二区三区| 日韩视频在线观看免费| 欧美日本簧片| 夜夜嗨av一区二区三区四季av| 亚洲视频播放| 国产精品va在线播放我和闺蜜| 一区二区三区精品视频| 午夜天堂精品久久久久| 国产伦精品一区| 久久精品视频免费观看| 蜜乳av另类精品一区二区| 亚洲电影第三页| 欧美精品一区二区三| 99视频一区二区三区| 亚洲欧美综合另类中字| 国产一区二区三区在线观看网站| 久久成年人视频| 欧美电影在线观看| 亚洲最新视频在线| 国产精品私人影院| 久久色中文字幕| 日韩一区二区高清| 久久精品免费看| 亚洲精品国偷自产在线99热| 欧美日韩在线第一页| 欧美在线日韩| 亚洲精品之草原avav久久| 亚洲欧美日韩一区二区三区在线观看 | 久久久久国产一区二区三区| 136国产福利精品导航网址| 欧美风情在线观看| 午夜精品国产更新| 亚洲第一区中文99精品| 亚洲免费视频网站| 在线视频国产日韩| 国产精品久久久久高潮| 久久蜜桃av一区精品变态类天堂| 亚洲高清av| 久久精品成人一区二区三区蜜臀 | 欧美肥婆bbw| 亚洲欧美日韩在线不卡| 91久久国产精品91久久性色| 性欧美1819性猛交| 99精品视频免费观看视频| 韩国av一区二区三区四区| 欧美日本亚洲| 久久人人超碰| 午夜精品区一区二区三| 亚洲九九精品| 欧美激情五月| 久久综合激情| 欧美专区在线| 亚洲尤物在线视频观看| 91久久精品国产91久久性色tv| 国产视频一区免费看| 国产精品www网站| 欧美黄色成人网| 久久综合精品一区| 久久精品国产69国产精品亚洲 | 亚洲欧洲日本一区二区三区| 久久精品道一区二区三区| 亚洲一区二区三区国产| 亚洲三级性片| 亚洲人成网站999久久久综合| 韩国三级电影久久久久久| 国产偷久久久精品专区| 国产精品久久国产精品99gif| 欧美日韩精品三区| 欧美日韩国产影片| 欧美日本一道本| 欧美另类高清视频在线| 欧美黄色成人网| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美成人一区二区| 农夫在线精品视频免费观看| 久久免费黄色| 开心色5月久久精品| 久久男人资源视频| 久久久久久久久岛国免费| 久久精品人人| 久久久久一区二区| 久久综合色播五月| 欧美成人一区二区三区片免费| 蜜桃久久精品乱码一区二区| 欧美成人国产一区二区| 欧美黄色网络| 亚洲美女毛片| 亚洲影院在线| 久久经典综合| 欧美激情综合亚洲一二区| 欧美精品色网| 国产精品制服诱惑| 在线观看欧美| 夜夜嗨av一区二区三区网站四季av | 久久手机免费观看| 欧美精品色综合| 国产精品久久网站| 狠狠色狠狠色综合人人| 亚洲精品美女久久7777777| 99精品国产在热久久| 亚洲男人影院| 蜜桃av一区二区在线观看| 亚洲日本成人女熟在线观看| aa成人免费视频| 久久国产夜色精品鲁鲁99| 欧美成人免费全部观看天天性色| 欧美日韩一区二区三区在线观看免| 国产精品人人爽人人做我的可爱 | 欧美日韩国产精品一区二区亚洲 | 欧美日韩视频在线一区二区| 国产精品美女主播| 亚洲大片精品永久免费| 亚洲图中文字幕| 乱中年女人伦av一区二区| 亚洲蜜桃精久久久久久久| 久久国产黑丝| 欧美午夜不卡在线观看免费| 黄色成人在线免费| 亚洲综合电影| 欧美韩日亚洲| 亚洲综合视频网| 欧美日本韩国| 亚洲国产乱码最新视频| 亚洲欧美综合v| 亚洲精品国产拍免费91在线| 欧美在线播放一区| 欧美视频中文一区二区三区在线观看 | 欧美伊人久久久久久午夜久久久久| 欧美好吊妞视频| 亚洲国产精品毛片|