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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ 3208: 花神的秒题计划Ⅰ

發(fā)布時(shí)間:2024/4/17 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 3208: 花神的秒题计划Ⅰ 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

3208: 花神的秒題計(jì)劃Ⅰ

Time Limit:?16 Sec??Memory Limit:?128 MB
Submit:?695??Solved:?474
[Submit][Status][Discuss]

Description

背景【backboard】: Memphis等一群蒟蒻出題中,花神湊過(guò)來(lái)秒題…… 描述【discribe】: 花花山峰巒起伏,峰頂常年被雪,Memphis打算幫花花山風(fēng)景區(qū)的人員開(kāi)發(fā)一個(gè)滑雪項(xiàng)目。 我們可以把風(fēng)景區(qū)看作一個(gè)n*n的地圖,每個(gè)點(diǎn)有它的初始高度,滑雪只能從高處往低處滑【嚴(yán)格大于】。但是由于地勢(shì)經(jīng)常變動(dòng)【比如雪崩、滑坡】,高度經(jīng)常變化;同時(shí),政府政策規(guī)定對(duì)于每個(gè)區(qū)域都要間歇地進(jìn)行保護(hù),防止環(huán)境破壞。現(xiàn)在,滑雪項(xiàng)目的要求是給出每個(gè)n*n個(gè)點(diǎn)的初始高度,并給出m個(gè)命令,C a b c表示坐標(biāo)為a,b的點(diǎn)的高度改為c;S a b c d表示左上角為a,b右下角為c,d的矩形地區(qū)開(kāi)始進(jìn)行保護(hù),即不能繼續(xù)滑雪;B a b c d表示左上角為a b,右下角為c d的矩形地區(qū)取消保護(hù),即可以開(kāi)始滑雪;Q表示詢(xún)問(wèn)現(xiàn)在該風(fēng)景區(qū)可以滑雪的最長(zhǎng)路徑為多少。對(duì)于每個(gè)Q要作一次回答。 花神一看,這不是超簡(jiǎn)單!立刻秒出了標(biāo)算~

?

Input

第一行n,第二行開(kāi)始n*n的地圖,意義如上;接下來(lái)一個(gè)m,然后是m個(gè)命令,如上

?

Output

對(duì)于每一個(gè)Q輸出單獨(dú)一行的回答

Sample Input

5
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
5
C 1 1 3
Q
S 1 3 5 5
S 3 1 5 5
Q

Sample Output

24
3

樣例解釋:
第一個(gè)Q路線為:25->24->23->22….->3->2
第二個(gè)Q的路線為:10->9->2

HINT

?

100%的數(shù)據(jù):1<=n<=700;1<=m<=1000000;其中Q、S、B操作總和<=100;

題中所有數(shù)據(jù)不超過(guò)2*10^9

?

Source

原創(chuàng) Memphis

[Submit][Status][Discuss]

?

看到數(shù)據(jù)范圍都不相信自己眼睛,額,花神系列什么時(shí)候出了這么一道水題?

完完全全的暴力,每次暴力修改高度,暴力標(biāo)記保護(hù),詢(xún)問(wèn)就BFS一遍算答案。

?

1 #include <cstdio> 2 #include <cstring> 3 4 const int siz = 705; 5 6 int n, m; 7 int h[siz][siz]; 8 int v[siz][siz]; 9 int c[siz][siz]; 10 int f[siz][siz]; 11 12 const int mv[4][2] = 13 { 14 {0, +1}, 15 {0, -1}, 16 {-1, 0}, 17 {+1, 0} 18 }; 19 20 inline int path(void) 21 { 22 static int que[siz * siz][2], hd, tl; 23 24 memset(f, 0, sizeof(f)); 25 memset(c, 0, sizeof(c)); 26 27 hd = 0, tl = 0; 28 29 int ans = 0; 30 31 for (int i = 1; i <= n; ++i) 32 for (int j = 1; j <= n; ++j) 33 if (!v[i][j]) 34 { 35 for (int k = 0; k < 4; ++k) 36 { 37 int x = i + mv[k][0]; 38 int y = j + mv[k][1]; 39 40 if (x < 1 || x > n)continue; 41 if (y < 1 || y > n)continue; 42 43 if (!v[x][y] && h[x][y] > h[i][j]) 44 ++c[i][j]; 45 } 46 47 if (!c[i][j]) 48 { 49 que[tl][0] = i; 50 que[tl][1] = j; 51 f[i][j] = 1; 52 ++tl; 53 } 54 } 55 56 while (hd != tl) 57 { 58 int x = que[hd][0]; 59 int y = que[hd][1]; 60 ++hd; 61 62 if (ans < f[x][y]) 63 ans = f[x][y]; 64 65 for (int k = 0; k < 4; ++k) 66 { 67 int i = x + mv[k][0]; 68 int j = y + mv[k][1]; 69 70 if (i < 1 || i > n)continue; 71 if (j < 1 || j > n)continue; 72 73 if (!v[i][j] && h[x][y] > h[i][j]) 74 { 75 if (f[i][j] < f[x][y] + 1) 76 f[i][j] = f[x][y] + 1; 77 78 if (--c[i][j] == 0) 79 { 80 que[tl][0] = i; 81 que[tl][1] = j; 82 ++tl; 83 } 84 } 85 } 86 } 87 88 return ans; 89 } 90 91 signed main(void) 92 { 93 scanf("%d", &n); 94 95 for (int i = 1; i <= n; ++i) 96 for (int j = 1; j <= n; ++j) 97 scanf("%d", &h[i][j]); 98 99 scanf("%d", &m); 100 101 while (m--) 102 { 103 static int a, b, c, d; 104 105 static char s[5]; 106 107 scanf("%s", s); 108 109 switch(s[0]) 110 { 111 case 'Q': 112 printf("%d\n", path()); 113 break; 114 case 'C': 115 scanf("%d%d%d", &a, &b, &c); 116 h[a][b] = c; 117 break; 118 case 'S': 119 scanf("%d%d%d%d", &a, &b, &c, &d); 120 for (int i = a; i <= c; ++i) 121 for (int j = b; j <= d; ++j) 122 v[i][j] = true; 123 break; 124 case 'B': 125 scanf("%d%d%d%d", &a, &b, &c, &d); 126 for (int i = a; i <= c; ++i) 127 for (int j = b; j <= d; ++j) 128 v[i][j] = false; 129 break; 130 } 131 } 132 }

?

@Author: YouSiki

?

轉(zhuǎn)載于:https://www.cnblogs.com/yousiki/p/6297460.html

總結(jié)

以上是生活随笔為你收集整理的BZOJ 3208: 花神的秒题计划Ⅰ的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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