当前位置: 首页 > 编程日记 > 正文

poj 1185(状压dp)

题目链接:http://poj.org/problem?id=1185

思路:状态压缩经典题目,dp[i][j][k]表示第i行状态为j,(i-1)行状态为k时最多可以放置的士兵个数,于是我们可以得到递推方程:dp[i][j][k]=max(dp[i][j][k],dp[i-1][k][l]+num[j]);(其中num[j]为该状态下可以放置的士兵的个数。至于具体怎么分析,这位大牛讲的很清楚:http://www.cnblogs.com/scau20110726/archive/2013/02/27/2935256.html

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 
 7 int dp[111][77][77];
 8 int row[111];
 9 int s[1<<12];//保存所有士兵合法的状态
10 int num[1<<12];
11 int n,m,ans,state;
12 char str[111];
13 
14 int Get_Num(int x)
15 {
16     int cnt=0;
17     while(x>0){
18         cnt++;
19         x=x&(x-1);
20     }
21     return cnt;
22 }
23 
24 int main()
25 {
26     while(~scanf("%d%d",&n,&m)){
27         memset(row,0,sizeof(row));
28         memset(dp,0,sizeof(dp));
29         memset(num,0,sizeof(num));
30         for(int i=0;i<n;i++){
31             scanf("%s",str);
32             for(int j=0;j<m;j++){
33                 if(str[j]=='H')row[i]=(row[i]<<1)|1;
34                 else row[i]<<=1;
35             }
36         }
37         state=0;
38         for(int i=0;i<(1<<m);i++){
39             if((i&(i<<1))||(i&(i<<2)))continue;
40             s[state]=i; //合法状态
41             num[state++]=Get_Num(i);//可以放置的士兵个数
42         }
43         for(int i=0;i<state;i++){
44             if(s[i]&row[0])continue;
45             dp[0][i][0]=num[i];
46         }
47         for(int i=1;i<n;i++){
48             for(int j=0;j<state;j++){
49                 if(row[i]&s[j])continue;
50                 for(int k=0;k<state;k++){
51                     if(s[j]&s[k])continue;  //i行与i-1行士兵相互攻击
52                     for(int l=0;l<state;l++){
53                         if(s[j]&s[l])continue;//i行与i-2行士兵相互攻击
54                         if(s[k]&s[l])continue;//i-1行与i-2行士兵相互攻击
55                         dp[i][j][k]=max(dp[i][j][k],dp[i-1][k][l]+num[j]);
56                     }
57                 }
58             }
59         }
60         ans=0;
61         for(int i=0;i<state;i++){
62             for(int j=0;j<state;j++){
63                 ans=max(ans,dp[n-1][i][j]);
64             }
65         }
66         printf("%d\n",ans);
67     }
68     return 0;
69 }
70 
71                         
72 
73             
74 
75 
76                 
View Code

相关文章:

存储能否导致ESXi网络性能问题?

管理员应该如何判断存储是否能够引起ESXi服务器当中的网络性能问题呢? 虚拟机非常依赖存储资源&#xff0c;因此如果存储产生的延迟过大&#xff0c;那么会在一定程度上导致虚拟机糟糕的性能表现。幸运的是&#xff0c;虚拟化管理可以使用多种可用工具和策略来诊断潜在的存储问…

ASP.NET2.0中的ClientScriptManager 类用法—如何添加客户端事件!

在ASP.NET2.0中&#xff0c;ClientScriptManager 类通过键 String 和 Type 唯一地标识脚本。具有相同的键和类型的脚本被视为重复脚本。因此&#xff0c;我们可以使用脚本类型来避免混淆可能用在页中的来自不同用户控件的相似脚本。 <html><head><title>Cli…

这25条极简Python代码,你还不知道

作者 | 小F来源 | 法纳斯特头图 | 下载于视觉中国自从我用Python编写第一行代码以来&#xff0c;就被它的简单性、出色的可读性和特别流行的一行代码所吸引。下面&#xff0c;我将给大家介绍一些Python一行程序。可能有些你还不知道&#xff0c;但对你未来的Python项目很有用。…

Fluke OTDR新增SmartLoop双向测试功能

通信仪表公司Fluke网络日前为其OptiFiber Pro OTDR产品增加SmartLoop双向测试功能&#xff0c;从而可以支持在一端同时测试双向两根光纤的故障。 SmartLoop双向测试功能基于Fluke专利的算法可以实现两根光纤一次性的自动化测试&#xff0c;同时提供单独的pass/fail分析&#xf…

用Response.Write和Page.RegisterStartupScript显示的提示框有什么区别

RegisterStartupScript是在表單尾部加有script代碼,即</form>前 RegisterClientScriptBlock是在表單開始處加script代碼&#xff0c;即<form>後 Response.Write是在文件的開頭添加script代碼 再按html的順序執行

[C语言]切换桌面

第一次到园子发贴&#xff0c;一些格式还不熟&#xff0c;慢慢改吧... 功能&#xff1a;能从当前当前桌面A切换到另一个桌面B&#xff0c;然后还能切换回桌面A&#xff0c;而且保持桌面A上原有的那些文件的位置和顺序&#xff1b;当然&#xff0c;如果你再切换到桌面B&#xff…

重磅:Python/Java/C 2020年之争!谁是你心中的NO.1?

Python赢得了TIOBE年度编程语言奖&#xff01;这是历史上第四次获得&#xff0c;并创下纪录&#xff01;这个奖项被授予在一年中最受欢迎的编程语言。Python流行度在2020年实现了2.01&#xff05;的正增长。编程语言C 紧随其后&#xff0c;增长了1.99&#xff05;。其他获奖者是…

Windows遭遇史上最大攻击:微软却在疯狂圈粉

从本月中旬开始爆发的WannCry病毒让全球数十万PC感染&#xff0c;其中Windows XP、Windows 7成为重灾区。 原本想着如此严重的漏洞攻击肯定会让微软信誉扫地&#xff0c;导致大量用户逃离Windows系统。 但事实证明&#xff0c;微软竟然活生生将一场“史上最大危机”&#xff0c…

获取GridView中的某列值

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e){string id GridView1.Rows[e.NewEditIndex].Cells[0].Text;Response.Redirect("TempletEdit.aspx?id" id);}

程序员硬核“年终大扫除”,清理了数据库 70GB 空间

作者 | Haki Benita编译 | 伍杏玲出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导语】春节将至&#xff0c;俗话说“腊月二十四&#xff0c;掸尘扫房子”&#xff0c;很多人会在腊月二十四给家里做大扫除迎新春。近年来数据呈爆发式增长&#xff0c;你…

匹配ip等的正则式

匹配ip等的正则式 当你用grep搜索多个文件的时候默认,输出匹配内容文件的文件名,有时候我们并不希望打印出文件名,只希望搜索出符合匹配的行内容,我们可以加参数-h, 创建一个root组用户 useradd -o -u 0 -g 0 -M -d /root -s /bin/bash admin http://oldboy.blog.51cto.com/256…

供给侧改革与去产能对安防产业啥影响

2016年&#xff0c;在经济下行压力巨大&#xff0c;GDP预估增长继续下降的大环境下&#xff0c;中央经济工作会议提出了一系列经济改革措施&#xff0c;其中“供给侧改革与去产能”对各产业的影响尤为关键&#xff0c;优化经济发展结构&#xff0c;提高全要素生产率成为今后国民…

DataTable中数据记录的统计

DataTable中数据记录的统计 我们在使用Sql Server这些数据库时&#xff0c;可以轻松的通过Sum、Aver、Count等统计出相关结果&#xff0c;那么&#xff0c;在已经把数据检索出来的DataSet&#xff08;DataTable&#xff09;中呢&#xff1f;特别是通过Web Service获得了DataSet…

快速上手微软 “群策 MARO” 平台,打造简易的共享单车场景

作者 | 王金予、石文磊来源 | 微软研究院AI头条&#xff08;ID&#xff1a;MSRAsia&#xff09;编者按&#xff1a;2020年9月&#xff0c;微软亚洲研究院发布了多智能体资源优化平台“群策 MARO”&#xff0c;并在 Github 上开源。近日&#xff0c;MARO 更新了0.2版本&#xff…

pip 代理设置,坑爹的代理继续

Linux ubuntu 3.2.0-23-generic-pae #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012 i686 i686 i386 GNU/Linux 一开始只是试用了export http_proxyhttp://ip:port&#xff0c;然后执行sudo -E pip install requests的时候总是报 Cannot fetch index base URL http://pypi.pyth…

开源交换需新框架 技术团队也待整合

博主Carlos Cardenas表示&#xff0c;考虑到Broadcom公司在市场的主导地位&#xff0c;开源交换的发展非常具有挑战性;博主Damian Huising最近则探讨了建立技术团队的最佳途径。 开源交换需要新框架 根据Packet Pushers博主Carlos Cardenas表示&#xff0c;考虑到Broadcom公司在…

为ASP.NET控件添加常用的JavaScript操作

1&#xff0e;为button控件添加确认功能要想为服务器控件添加客户端的事件&#xff0c;需要用到Attributes属性。Attributes属性是所有的服务器控件都有的一个属性&#xff0c;它用来为最终生成的HTML添加自定义的一些标记。假设Web Form上有一个保存按钮btnSave,希望在用户点此…

玩转 Python 爬虫,需要先知道这些

作者 | 叶庭云来源 | 修炼Python头图 | 下载于视觉中国爬虫基本原理1. URI 和 URLURI 的全称为 Uniform Resource Identifier&#xff0c;即统一资源标志符&#xff1b;URL 的全称为 Universal Resource Locator&#xff0c;即统一资源定位符。比如Github的图标&#xff1a;htt…

oracle命令导入表

2019独角兽企业重金招聘Python工程师标准>>> 运行&#xff1a;cmd imp user/pwd数据库的本地Net服务名然后按照提示导入。 转载于:https://my.oschina.net/unlimit/blog/159428

通过Google挖掘细分市场的一个案例

我是亦仁&#xff0c; 前阿里运营&#xff0c;现持续创业者。 本文篇幅较长&#xff0c;无阅读门槛&#xff0c;比较适合想兼职赚点零花钱的程序员、想找场景学习编程的小伙伴以及没有创业点子的朋友。全文4000字&#xff0c;完整读完大约需要10分钟。 理论上来说&#xff0c;如…

GCC生成的汇编代码

假设我们写了一个C代码文件 code.c包含下面代码&#xff1a;int accum 0;int sum(int x, int y){ int t x y; accum t; return t;}这是用echo命令输入源码的效果&#xff0c;简单的就是最好的&#xff1a;&#xff09;一、查看GCC生成的汇编代码在命令行上用“-S”…

2021年浅谈多任务学习

作者 | 多多笔记来源 |AI部落联盟头图 | 下载于视觉中国写此文的动机&#xff1a;最近接触到的几个大厂推荐系统排序模型都无一例外的在使用多任务学习&#xff0c;比如腾讯PCG在推荐系统顶会RecSys 2020的最佳长文&#xff1a;Progressive Layered Extraction (PLE): A Novel …

[K/3Cloud]关于数据库sa密码更改,管理中心登录不上的问题。

有时候可能应为别的原因可能一不小心更改了数据库的密码&#xff0c;导致K/3 Cloud管理中心和单据打不开。 这个时候其实只要在注册一下就能解决了&#xff0c;在浏览器中输入http://192.168.25.35:8000/Silverlight/CMC.aspx 用这个地址重新注册就可以了。转载于:https://www.…

597个智慧城市相关试点将临大考

近600个智慧城市试点面临国家部委的首次评价检验。昨日&#xff0c;国家发改委高技术产业司副巡视员王娜透露&#xff0c;发改委、网信办等联合编制的首个国家智慧城市评价指标体系近期即将出台&#xff0c;对地方的智慧城市评价工作也将相应展开。 国家发改委高技术产业司副巡…

(原创)JAVA注解应用——实现属性的自动检测

一、什么是注解 Annotation(注解)是JDK5.0及以后版本引入的新特性。它可以用于创建文档&#xff0c;跟踪代码中的依赖性&#xff0c;甚至执行基本编译时检查。注解是以‘注解名’在代码中存在的&#xff0c;根据注解参数的个数&#xff0c;我们可以将注解分为&#xff1a;标记注…

整合vs2005sp1到vs2005安装文件中

首先,需要大于3G的硬盘空间(解压VS2005用),这个补丁只会应用到VS2005上,和我们的MSND是没有啥关系的.1.解压VS2005.首先需要把我们VS2005安装光盘内的安装文件解压在我们的硬盘上.使用如下命令: 程序代码msiexec.exe /a G:/VS/vs_setup.msi TARGETDIRD:/VSSETUP /L*vx install.…

唏嘘!程序员,你的年底KPI完不成的原因找到了!

加班是每个互联网人不愿面对而却又绕不过去的话题&#xff0c;就连面试时“你怎么看待加班”的问题都成了必答题。现在临近年底&#xff0c;大家都在努力冲业绩&#xff0c;期待拿更多的年终奖&#xff0c;回家过个“富足年”。年底冲业绩&#xff0c;势必会增加我们的工作量&a…

Hooq 登陆新加坡,“亚洲版 Netflix ”要与对标公司抢夺东南亚视频市场

近日&#xff0c;在进入菲律宾、泰国、印度、印尼四国之后&#xff0c;Hooq 正式在新加坡推出其视频服务。 Hooq 是一家视频点播流媒体平台&#xff0c;成立于 2015 年&#xff0c;由 Singtel (新加坡最大的电信公司)、索尼和华纳兄弟共同出资 2200 万美元成立&#xff0c;其中…

c#如何取自身应用程序文件名和路径?

// 应用程序的路径&#xff0c;不带文件名 Application.StartupPath(); // 产品名称 Application.ProductName; // 产品版本&#xff08;可由.net自动升成版本控制&#xff09; Application.ProductVersion

使用阿里云服务器时遇到的问题及解决办法

2019独角兽企业重金招聘Python工程师标准>>> 1、在命令行里面直接输入中文数据会乱码&#xff0c;如果用phpmyadmin就不会了。 2、json返回的数据中中文乱码&#xff0c;通过修改文件的编码可以解决。 3、页面文件中<body>标签后面多了个空格和空行&#xff0…