炮兵阵地 柔光的暖阳◎ 2022-01-05 15:43 227阅读 0赞 [![Banner][]][Banner 1] **[Home Page][]** **[Web Contests][]** **[Problems][]** **[Ranklist][]** **[Status][]** **[Statistics][]** ![ContractedBlock.gif][] ![ExpandedBlockStart.gif][] 1 #include<iostream> 2 #include<string> 3 #include<cstring> 4 #include<cmath> 5 #include<cctype> 6 #include<cstdio> 7 using namespace std; 8 int c[100]; 9 int s[100]; 10 int ans; 11 int bitmap[100]; 12 int f[100][70][70],h; 13 char str[100]; 14 int n,m,i,j,k; 15 void init() 16 { 17 cin>>n>>m; 18 memset(bitmap,0,sizeof(bitmap)); 19 for(i=0;i<n;i++) 20 { 21 cin>>str; 22 for(j=0;j<m;j++) 23 if(str[j]=='H')bitmap[i]+=(1<<(m-j-1));//存贮数组 24 getchar(); 25 } 26 } 27 void solve() 28 { 29 30 memset(f,0,sizeof(f)); 31 for(i=0;i<n;i++) 32 { 33 if(i==0) 34 { 35 for(j=0;j<ans;j++) 36 { 37 if(bitmap[i]&c[j])continue; 38 f[i][j][0]=s[j]; 39 } 40 41 } 42 else if(i==1) 43 { 44 for(j=0;j<ans;j++) 45 { 46 if(bitmap[i]&c[j])continue; 47 for(k=0;k<ans;k++) 48 { 49 if(bitmap[i-1]&c[k])continue; 50 if(c[j]&c[k])continue; 51 if(f[i][j][k]<f[i-1][k][0]+s[j]) 52 f[i][j][k]=f[i-1][k][0]+s[j]; 53 } 54 } 55 } 56 else 57 { 58 for(j=0;j<ans;j++) 59 { 60 if(bitmap[i]&c[j])continue; 61 for(k=0;k<ans;k++) 62 { 63 if(bitmap[i-1]&c[k])continue; 64 if(c[j]&c[k])continue; 65 for(h=0;h<ans;h++) 66 { 67 if(bitmap[i-2]&c[h])continue; 68 if(c[j]&c[h]||c[k]&c[h])continue; 69 if(f[i][j][k]<f[i-1][k][h]+s[j]) 70 f[i][j][k]=f[i-1][k][h]+s[j]; 71 } 72 } 73 } 74 } 75 } 76 int max1=-1; 77 for(i=0;i<ans;i++) 78 for(j=0;j<ans;j++) 79 if(max1<f[n-1][i][j]) 80 max1=f[n-1][i][j]; 81 cout<<max1<<endl; 82 } 83 int main() 84 { 85 init(); 86 ans=0; 87 for(i=0;i<(1<<m);i++)//状态压缩好像64个 88 { 89 int t=i; 90 if(i&(t<<1)||i&(t<<2))continue; 91 s[ans]=t%2; 92 while(t=(t>>1))s[ans]+=t%2; 93 c[ans++]=i; 94 } 95 solve(); 96 return 0; 97 } # 炮兵阵地 # ##### Time Limit : 4000/2000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) ##### ##### Total Submission(s) : 16 Accepted Submission(s) : 2 ##### Problem Description 司令部的将军们打算在N\*M的网格地图上部署他们的炮兵部队。一个N\*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示: ![1185_1.jpg][] 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻击范围不受地形的影响。 现在,将军们规划如何部署炮兵部队,在防止误伤的前提下(保证任何两支炮兵部队之间不能互相攻击,即任何一支炮兵部队都不在其他支炮兵部队的攻击范围内),在整个地图区域内最多能够摆放多少我军的炮兵部队。 Input 第一行包含两个由空格分割开的正整数,分别表示N和M; 接下来的N行,每一行含有连续的M个字符('P'或者'H'),中间没有空格。按顺序表示地图中每一行的数据。N <= 100;M <= 10。 Output 仅一行,包含一个整数K,表示最多能摆放的炮兵部队的数量。 Sample Input 5 4 PHPP PPHH PPPP PHPP PHHP Sample Output 6 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* 这个题wa了n次,个人认为主要是状态的压缩和dp方程的建立,和dp数组的初始化 \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* 转载于:https://www.cnblogs.com/sdau--codeants/p/3235047.html [Banner]: /images/20211228/c0e9dd95d0de4d7da1c482194a5ef83a.png [Banner 1]: http://www.cnblogs.com/ [Home Page]: http://www.cnblogs.com/sdau--codeants/ [Web Contests]: http://www.cnblogs.com/webcontest/contest_list.php [Problems]: http://www.cnblogs.com/webcontest/contest_show.php?cid=4091 [Ranklist]: http://www.cnblogs.com/webcontest/contest_ranklist.php?cid=4091&page=1 [Status]: http://www.cnblogs.com/webcontest/contest_status.php?cid=4091 [Statistics]: http://www.cnblogs.com/webcontest/contest_statistic.php?cid=4091 [ContractedBlock.gif]: https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif [ExpandedBlockStart.gif]: /images/20211228/fa2d8bbee8274af88d018fba84b779b1.png [1185_1.jpg]: /images/20211228/6d1182a28a69414898b8fa7aa8979728.png
相关 POJ 1185-炮兵阵地【状压DP】 Description 司令部的将军们打算在N\M的网格地图上部署他们的炮兵部队。一个N\M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用" àì夳堔傛蜴生んèń/ 2023年10月11日 10:24/ 0 赞/ 21 阅读
相关 POJ 1185 炮兵阵地 dp三维和二维的区别 状压dp 参考: [https://www.cnblogs.com/scau20110726/archive/2013/02/27/2935256.html][https_www.c 偏执的太偏执、/ 2023年06月16日 10:34/ 0 赞/ 16 阅读
相关 292 炮兵阵地(状态压缩dp) 1. 问题描述: 司令部的将军们打算在 N×M 的网格地图上部署他们的炮兵部队。一个 N×M 的地图由 N 行 M 列组成,地图的每一格可能是山地(用 H 表示),也可能是平 梦里梦外;/ 2022年09月12日 08:59/ 0 赞/ 208 阅读
相关 POJ 1185 炮兵阵地(状压dp) <table style="background-image:url("http://poj.org/images/table_back.jpg");fon 短命女/ 2022年05月28日 09:27/ 0 赞/ 198 阅读
相关 【滚动数组】【状压DP】NOI2001炮兵阵地 ![ContractedBlock.gif][] ![ExpandedBlockStart.gif][] 题目描述 司令部的将军们打算在NM的网格地 比眉伴天荒/ 2022年01月09日 05:41/ 0 赞/ 249 阅读
相关 炮兵阵地 [![Banner][]][Banner 1] [Home Page][] [Web Contests][] [Problems][] [Ranklist][] [Sta 柔光的暖阳◎/ 2022年01月05日 15:43/ 0 赞/ 228 阅读
相关 【洛谷 2704】炮兵阵地 题目描述 司令部的将军们打算在N\M的网格地图上部署他们的炮兵部队。一个N\M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示) 朴灿烈づ我的快乐病毒、/ 2021年10月19日 11:26/ 0 赞/ 253 阅读
还没有评论,来说两句吧...