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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BZOJ 1207 打鼹鼠

發布時間:2025/3/13 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 1207 打鼹鼠 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

鼴鼠是一種很喜歡挖洞的動物,但每過一定的時間,它還是喜歡把頭探出到地面上來透透氣的。根據這個特點阿Q編寫了一個打鼴鼠的游戲:在一個n*n的網格中,在某些時刻鼴鼠會在某一個網格探出頭來透透氣。你可以控制一個機器人來打鼴鼠,如果i時刻鼴鼠在某個網格中出現,而機器人也處于同一網格的話,那么這個鼴鼠就會被機器人打死。而機器人每一時刻只能夠移動一格或停留在原地不動。機器人的移動是指從當前所處的網格移向相鄰的網格,即從坐標為(i,j)的網格移向(i-1, j),(i+1, j),(i,j-1),(i,j+1)四個網格,機器人不能走出整個n*n的網格。游戲開始時,你可以自由選定機器人的初始位置。現在你知道在一段時間內,鼴鼠出現的時間和地點,希望你編寫一個程序使機器人在這一段時間內打死盡可能多的鼴鼠。

Input

第一行為n(n<=1000), m(m<=10000),其中m表示在這一段時間內出現的鼴鼠的個數,接下來的m行每行有三個數據time,x,y表示有一只鼴鼠在游戲開始后time個時刻,在第x行第y個網格里出現了一只鼴鼠。Time按遞增的順序給出。注意同一時刻可能出現多只鼴鼠,但同一時刻同一地點只可能出現一只鼴鼠。

Output

僅包含一個正整數,表示被打死鼴鼠的最大數目

Sample Input

2 2
1 1 1
2 2 2

Sample Output

1

HINT

最長不下降序列,定義>=為abs(a.x-b.x)+abs(a.y-b.y) <= a.t-b.t,O(n^2)求出最長不下降序列即可(常數小,所以能夠跑過去)。

1 #include<cmath> 2 #include<cstdio> 3 #include<cstdlib> 4 using namespace std; 5 6 #define inf (1<<30) 7 #define maxn 1010 8 #define maxm 10010 9 int n,m,ans,f[maxm]; 10 struct node 11 { 12 int t,x,y; 13 friend inline bool operator >=(const node &a,const node &b) 14 { 15 return abs(a.x-b.x)+abs(a.y-b.y) <= a.t-b.t; 16 } 17 inline void read() { scanf("%d %d %d",&t,&x,&y); } 18 }seq[maxm]; 19 20 int main() 21 { 22 freopen("1207.in","r",stdin); 23 freopen("1207.out","w",stdout); 24 scanf("%d %d",&n,&m); 25 for (int i = 1;i <= m;++i) seq[i].read(); 26 for (int i = 1;i <= m;++i) 27 { 28 int best = 0; 29 for (int j = 1;j < i;++j) 30 if (f[j] > f[best]&&seq[i] >= seq[j]) best = j; 31 f[i] = f[best]+1; 32 if (f[i] > ans) ans = f[i]; 33 } 34 printf("%d",ans); 35 fclose(stdin); fclose(stdout); 36 return 0; 37 } View Code

?

轉載于:https://www.cnblogs.com/mmlz/p/4280159.html

總結

以上是生活随笔為你收集整理的BZOJ 1207 打鼹鼠的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。