日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【 2013 Multi-University Training Contest 8 】

發(fā)布時間:2025/3/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【 2013 Multi-University Training Contest 8 】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

HDU 4678 Mine

對于每個空白區(qū)域,求SG值。

最后異或起來等于0,先手必敗。

1 #pragma comment(linker,"/STACK:102400000,102400000") 2 #include<cstdio> 3 #include<cstring> 4 #define MAXN 1010 5 #define oo 1234567890 6 int arr[MAXN][MAXN]; 7 bool vis[MAXN][MAXN]; 8 int n, m; 9 int dg, bk; 10 int sg[MAXN * MAXN][2]; 11 int go[8][2] = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 }, { -1, -1 }, 12 { -1, 1 }, { 1, -1 }, { 1, 1 } }; 13 bool isIn(int x, int y) { 14 return x >= 0 && x < n && y >= 0 && y < m; 15 } 16 int SG(int digit, int blank) { 17 if (sg[digit][blank] == -1) { 18 int x, y; 19 x = y = -1; 20 if (blank) { 21 x = SG(0, 0); 22 } 23 if (digit) { 24 y = SG(digit - 1, blank); 25 } 26 for (int i = 0;; i++) { 27 if (i != x && i != y) { 28 sg[digit][blank] = i; 29 break; 30 } 31 } 32 } 33 return sg[digit][blank]; 34 } 35 void dfs(int x, int y) { 36 vis[x][y] = true; 37 if (arr[x][y] > 0) { 38 dg++; 39 } else if (arr[x][y] == 0) { 40 bk = 1; 41 int nx, ny; 42 for (int i = 0; i < 8; i++) { 43 nx = x + go[i][0]; 44 ny = y + go[i][1]; 45 if (isIn(nx, ny) && !vis[nx][ny]) { 46 dfs(nx, ny); 47 } 48 } 49 } 50 } 51 int main() { 52 int T; 53 int ca = 1; 54 int x, y; 55 int i, j, k; 56 int res; 57 memset(sg, -1, sizeof(sg)); 58 sg[0][0] = 0; 59 scanf("%d", &T); 60 while (T--) { 61 scanf("%d%d%d", &n, &m, &k); 62 memset(arr, 0, sizeof(arr)); 63 while (k--) { 64 scanf("%d%d", &x, &y); 65 arr[x][y] = -oo; 66 } 67 for (i = 0; i < n; i++) { 68 for (j = 0; j < m; j++) { 69 if (arr[i][j] < 0) { 70 for (k = 0; k < 8; k++) { 71 x = i + go[k][0]; 72 y = j + go[k][1]; 73 if (isIn(x, y)) { 74 arr[x][y]++; 75 } 76 } 77 } 78 } 79 } 80 res = 0; 81 memset(vis, false, sizeof(vis)); 82 for (i = 0; i < n; i++) { 83 for (j = 0; j < m; j++) { 84 if (!vis[i][j] && arr[i][j] == 0) { 85 dg = bk = 0; 86 dfs(i, j); 87 res ^= SG(dg, bk); 88 } 89 } 90 } 91 for (i = 0; i < n; i++) { 92 for (j = 0; j < m; j++) { 93 if (!vis[i][j]) { 94 dg = bk = 0; 95 dfs(i, j); 96 res ^= SG(dg, bk); 97 } 98 } 99 } 100 if (res) { 101 printf("Case #%d: Xiemao\n", ca++); 102 } else { 103 printf("Case #%d: Fanglaoshi\n", ca++); 104 } 105 } 106 return 0; 107 } View Code

?


?

?

HDU 4679 Terrorist’s destroy

dp[i][0]表示i為根的最長鏈。

dp[i][1]表示i為根的次長鏈。

dp[i][2]表示i為根的第三長鏈。

1 #pragma comment(linker,"/STACK:102400000,102400000") 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #define MAXN 200010 6 #define oo 0x7FFFFFFF 7 using namespace std; 8 int first[MAXN], next[MAXN], v[MAXN], cost[MAXN], id[MAXN], e; 9 int dp[MAXN][3]; 10 bool vis[MAXN]; 11 int res, idx; 12 void addEdge(int x, int y, int val, int idx) { 13 cost[e] = val; 14 id[e] = idx; 15 v[e] = y; 16 next[e] = first[x]; 17 first[x] = e++; 18 } 19 void dfs(int x) { 20 vis[x] = true; 21 dp[x][0] = dp[x][1] = dp[x][2] = 0; 22 for (int i = first[x]; i != -1; i = next[i]) { 23 int y = v[i]; 24 if (!vis[y]) { 25 dfs(y); 26 if (dp[y][0] + 1 >= dp[x][0]) { 27 dp[x][2] = dp[x][1]; 28 dp[x][1] = dp[x][0]; 29 dp[x][0] = dp[y][0] + 1; 30 } else if (dp[y][0] + 1 >= dp[x][1]) { 31 dp[x][2] = dp[x][1]; 32 dp[x][1] = dp[y][0] + 1; 33 } else if (dp[y][0] + 1 > dp[x][2]) { 34 dp[x][2] = dp[y][0] + 1; 35 } 36 } 37 } 38 } 39 void search(int x, int pre) { 40 int tmp; 41 vis[x] = true; 42 if (pre != -1) { 43 if (dp[x][0] + 1 == dp[pre][0]) { 44 if (dp[pre][1] + 1 >= dp[x][0]) { 45 dp[x][2] = dp[x][1]; 46 dp[x][1] = dp[x][0]; 47 dp[x][0] = dp[pre][1] + 1; 48 } else if (dp[pre][1] + 1 >= dp[x][1]) { 49 dp[x][2] = dp[x][1]; 50 dp[x][1] = dp[pre][1] + 1; 51 } else if (dp[pre][1] + 1 > dp[x][2]) { 52 dp[x][2] = dp[pre][1] + 1; 53 } 54 } else { 55 if (dp[pre][0] + 1 >= dp[x][0]) { 56 dp[x][2] = dp[x][1]; 57 dp[x][1] = dp[x][0]; 58 dp[x][0] = dp[pre][0] + 1; 59 } else if (dp[pre][0] + 1 >= dp[x][1]) { 60 dp[x][2] = dp[x][1]; 61 dp[x][1] = dp[pre][0] + 1; 62 } else if (dp[pre][0] + 1 > dp[x][2]) { 63 dp[x][2] = dp[pre][0] + 1; 64 } 65 } 66 } 67 for (int i = first[x]; i != -1; i = next[i]) { 68 int y = v[i]; 69 if (!vis[y]) { 70 if (dp[y][0] + 1 == dp[x][0]) { 71 tmp = dp[x][1] + dp[x][2]; 72 } else { 73 tmp = dp[x][0]; 74 if (dp[y][0] + 1 == dp[x][1]) { 75 tmp += dp[x][2]; 76 } else { 77 tmp += dp[x][1]; 78 } 79 } 80 tmp = cost[i] * max(dp[y][0] + dp[y][1], tmp); 81 if (tmp < res) { 82 res = tmp; 83 idx = id[i]; 84 } else if (tmp == res && idx > id[i]) { 85 idx = id[i]; 86 } 87 search(y, x); 88 } 89 } 90 } 91 int main() { 92 int T; 93 int ca = 1; 94 int n; 95 int i; 96 int x, y, val; 97 scanf("%d", &T); 98 while (T--) { 99 scanf("%d", &n); 100 e = 0; 101 memset(first, -1, sizeof(first)); 102 for (i = 1; i < n; i++) { 103 scanf("%d%d%d", &x, &y, &val); 104 addEdge(x, y, val, i); 105 addEdge(y, x, val, i); 106 } 107 res = oo; 108 memset(vis, false, sizeof(vis)); 109 dfs(1); 110 memset(vis, false, sizeof(vis)); 111 search(1, -1); 112 printf("Case #%d: %d\n", ca++, idx); 113 } 114 return 0; 115 } View Code

?


?

HDU 4681 String

分別枚舉D在A和B中的起點,可以暴力得到最短終點。

枚舉任意兩個起點與終點,通過dp可以求得兩端的LCS。

1 #include<cstdio> 2 #include<cstring> 3 #include<vector> 4 #define MAXN 1010 5 using namespace std; 6 char a[MAXN], b[MAXN], c[MAXN]; 7 vector<pair<int, int> > p1, p2; 8 int f[MAXN][MAXN], g[MAXN][MAXN]; 9 void cal(char a[], char c[], vector<pair<int, int> >&p) { 10 int i, j, k; 11 int la = strlen(a + 1); 12 int lc = strlen(c + 1); 13 p.clear(); 14 for (i = 1; i <= la; i++) { 15 k = 1; 16 if (a[i] != c[k]) { 17 continue; 18 } 19 for (j = i; j <= la; j++) { 20 if (a[j] == c[k]) { 21 k++; 22 } 23 if (k > lc) { 24 break; 25 } 26 } 27 if (k > lc) { 28 p.push_back(make_pair(i, j)); 29 } 30 } 31 } 32 int main() { 33 int T; 34 int ca = 1; 35 int ans; 36 int i, j; 37 int la, lb, lc; 38 scanf("%d", &T); 39 while (T--) { 40 scanf(" %s %s %s", a + 1, b + 1, c + 1); 41 la = strlen(a + 1); 42 lb = strlen(b + 1); 43 lc = strlen(c + 1); 44 cal(a, c, p1); 45 cal(b, c, p2); 46 ans = 0; 47 if (!(p1.empty() || p2.empty())) { 48 memset(f, 0, sizeof(f)); 49 memset(g, 0, sizeof(g)); 50 for (i = 1; i <= la; i++) { 51 for (j = 1; j <= lb; j++) { 52 if (a[i] == b[j]) { 53 f[i][j] = f[i - 1][j - 1] + 1; 54 } else { 55 f[i][j] = max(f[i - 1][j], f[i][j - 1]); 56 } 57 } 58 } 59 for (i = la; i > 0; i--) { 60 for (j = lb; j > 0; j--) { 61 if (a[i] == b[j]) { 62 g[i][j] = g[i + 1][j + 1] + 1; 63 } else { 64 g[i][j] = max(g[i + 1][j], g[i][j + 1]); 65 } 66 } 67 } 68 for (i = 0; i < (int) p1.size(); i++) { 69 for (j = 0; j < (int) p2.size(); j++) { 70 ans = max(ans, 71 lc + f[p1[i].first - 1][p2[j].first - 1] 72 + g[p1[i].second + 1][p2[j].second + 1]); 73 } 74 } 75 } 76 printf("Case #%d: %d\n", ca++, ans); 77 } 78 return 0; 79 } View Code

?


?

轉載于:https://www.cnblogs.com/DrunBee/p/3260363.html

總結

以上是生活随笔為你收集整理的【 2013 Multi-University Training Contest 8 】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产午夜精品一区二区理论影院 | 国产精在线 | 国产欧美日韩成人 | 日韩伦人妻无码 | 色综合99| 又大又粗又爽18禁免费看 | 91丝袜在线| 成人三级在线视频 | √天堂8资源中文在线 | 在线精品自拍 | 日本在线视频一区 | 台湾极品xxx少妇 | 一本一道av无码中文字幕 | 中文字幕av一区二区三区谷原希美 | 色图综合网 | 无人在线观看高清视频 单曲 | 男人天堂手机在线 | 亚洲欧美日韩另类在线 | 美女被叉叉的影院 | 亚洲第一淫片 | 国产精品高清无码在线观看 | 成人免费黄色小视频 | 欧美黑人精品一区二区 | 日本三级韩国三级美三级91 | 午夜精品久久久久久久91蜜桃 | 蜜臀av午夜精品 | 在线亚洲精品 | 91香蕉国产在线观看软件 | 一区二区三区四区不卡 | 色鬼综合| 久久精品观看 | 香蕉人人精品 | 91偷拍视频 | 婷婷丁香六月天 | 日出白浆视频 | 国产女人和拘做受视频免费 | 日韩插| 午夜有码| 免费麻豆国产一区二区三区四区 | 日本精品少妇 | 九九热免费 | 久久久久黄| 57pao国产成永久免费视频 | 国产精品第56页 | 绿帽h啪肉np辣文 | 国产视频你懂的 | 日韩精品二区在线观看 | 色屁屁 | 精品少妇一区二区三区免费观 | 2019日韩中文字幕mv | 亚洲毛片在线看 | 欧美伊人久久 | 自拍偷拍国产视频 | 国产日韩欧美中文字幕 | 国产天堂第一区 | 精品一区二区三区免费毛片 | 99国内揄拍国内精品人妻免费 | 91色蝌蚪| 久久精品国产亚洲av香蕉 | 久草播放 | 黑丝美女一区二区 | 午夜视频免费在线 | 在线观看欧美一区二区 | 中文字幕一区二区三区四区免费看 | 超碰人人99 | 午夜一区不卡 | 亚洲码视频 | 韩国av一区 | 日韩一区二区在线观看 | 亚洲一二三视频 | 国产精品美女高潮无套 | 国产三区视频 | 99精品成人 | 午夜影院0606 | 免费在线观看不卡av | 齐天大性床战铁扇公主 | 国产一级免费大片 | 少妇一级淫片免费放播放 | 上海毛片| 日本五十路 | 日韩黄网站 | 欧美乱大交xxxxx潮喷l头像 | 日韩中文字幕在线播放 | 欧美色精品在线 | av免费在线观看网址 | 看看黄色片 | 日日夜夜狠 | 欧美一区二区三区大屁股撅起来 | 日韩三级中文 | 欧美视频在线一区二区三区 | 久久99久 | 葵司有码中文字幕二三区 | 成人国产一区 | av影片在线 | 青青草97国产精品免费观看 | 国产亚洲欧美在线精品 | 国内三级在线 | 中国无码人妻丰满熟妇啪啪软件 | 亚洲无吗视频 |