题目描述

司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示(我就不贴图)

如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻击范围不受地形的影响。 现在,将军们规划如何部署炮兵部队,在防止误伤的前提下(保证任何两支炮兵部队之间不能互相攻击,即任何一支炮兵部队都不在其他支炮兵部队的攻击范围内),在整个地图区域内最多能够摆放多少我军的炮兵部队。

——by洛谷

https://daniu.luogu.org/problem/show?pid=2704



棋盘模型的状压DP;

f[i][j][k]表示前i行,本行状态为j号,上行为k号,j,k是初始化出来的存状态的数组的编号;

转移时按题意考虑冲突状态排除;

其实本篇的要点是比较三目运算符与if语句的效率:

(因为今天旁边有人A了这个题效率竟然比我高!!)

这是代码一的ans汇总:

这是代码二的:

然后代码一的效率:

这是代码二的:

。。。。。。

我的效率啊!!!

事实证明,三目运算符比if语句的效率(无else)差;

不是第一次见了,记得上次写了线段树的比赛题,有关区间最值的,竟被卡的常,改成if才A了,幸亏IOI赛制。。。

事实证明搞OI啊,任何细节都决定成败啊。。。

附代码:

#include<cstdio>
using namespace std;
int m,n;
int ph[];
int s[],nu[],man;
int f[][][];
void dfs(int ,int ,int ,int ,int );
int main()
{
int i,j,l,k,ans=;
char c;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++)
{
c=getchar();
while(c!='P'&&c!='H')
c=getchar();
j=;
while(c=='P'||c=='H')
{
if(c=='H')
ph[i]+=j;
j=j<<;
c=getchar();
}
}
dfs(,,,,);
for(i=;i<=n;i++)
{
for(j=;j<=man;j++)
if(!(s[j]&ph[i]))
for(k=;k<=man;k++)
if(!(s[j]&s[k])&&!(s[k]&ph[i-]))
for(l=;l<=man;l++)
if(!(s[j]&s[l])&&!(s[l]&ph[i-]))
f[i][j][k]=f[i][j][k]>(f[(i-)][k][l]+nu[j])?f[i][j][k]:(f[(i-)][k][l]+nu[j]);
}
for(i=;i<=man;i++)
for(j=;j<=man;j++)
if(f[n][i][j]>ans)
ans=f[n][i][j];
printf("%d",ans);
return ;
}
void dfs(int now,int num,int ma,int l1,int l2)
{
int i;
if(now>m)
{
s[++man]=num;
nu[man]=ma;
return ;
}
for(i=;i<=;i++)
if(i<=-l1&&i<=-l2)
dfs(now+,num+i*(<<now-),ma+i,l2,i);
}

祝AC哟;

关于三目运算符与if语句的效率与洛谷P2704题解的更多相关文章

  1. SQLServer语句执行效率及性能测试

    写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了. 通过设置STATISTICS我们可以查看执行SQL时的 ...

  2. mysql优化(三)–explain分析sql语句执行效率

    mysql优化(三)–explain分析sql语句执行效率 mushu 发布于 11个月前 (06-04) 分类:Mysql 阅读(651) 评论(0) Explain命令在解决数据库性能上是第一推荐 ...

  3. 统计sql语句执行效率

    --统计sql语句执行效率SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N ...

  4. 对于Oracle中分页排序查询语句执行效率的比较分析

    转自:http://bbs.csdn.net/topics/370033478 对于Oracle中分页排序查询语句执行效率的比较分析 作者:lzgame 在工作中我们经常遇到需要在Oracle中进行分 ...

  5. oracle中的exists 和not exists 用法 in与exists语句的效率问题

    博文来源(oracle中的exists 和not exists 用法):http://chenshuai365-163-com.iteye.com/blog/1003247 博文来源(  in与exi ...

  6. 提高Order by语句查询效率的两个思路

    提高Order by语句查询效率的两个思路 2011-03-01 13:07 水太深 ITPUB 字号:T | T 在MySQL数据库中,Order by语句的使用频率是比较高的.但是众所周知,在使用 ...

  7. Mysql explain分析sql语句执行效率

    mysql优化–explain分析sql语句执行效率 Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 ...

  8. 进阶系列一【绝对干货】---SQL语句执行效率优化

    1.尽量适用联接查询来取代子查询 2.如果要用子查询,用EXISTS替代IN.用NOT EXISTS替代NOT IN,因为EXISTS引入的子查询只是测试是否存在符合子查询中指定条件的行,效率较高.无 ...

  9. SQL语句执行效率及分析(note)

    1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况p4: 2.4内存: 1 Gos: windows 2003数据库: ms sql server 2000目的: 查询性能测试, ...

随机推荐

  1. Ural1076(km算法)

    题目大意 给出n*n表格,第a[i,j]表示i到j的权值,现在我们要将每个a[i,j]=sum[j]-a[i,j], 求出当前二分图a[][]最小匹配 最小匹配只需将权值取负后,求二分图最大匹配,使用 ...

  2. Java应用调优指南之-工具篇

    1. 土法调优两大件 先忆苦思甜,一般人在没有Profile工具的时候,调优的两大件,无非Heap Dump 与 Thread Dump. 1.1 Heap Dump jmap -dump:live, ...

  3. Please ensure that adb is correctly located at……问题解决方案

    启动android模拟器时.有时会报The connection to adb is down, and a severe error has occured.的错误.在网友说在任务管理器上把所有ad ...

  4. TeamViewer

    TeamViewer远程连接非常好用

  5. Kafka 设计与原理详解

    一.Kafka简介 本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料. 转载请注明出处 : 本文链接 1.1 背景历史 当今社会各种应用系统诸如商业.社交.搜索. ...

  6. Storm入门教程 第二章 构建Topology[转]

    2.1 Storm基本概念 在运行一个Storm任务之前,需要了解一些概念: Topologies Streams Spouts Bolts Stream groupings Reliability ...

  7. android studio SDK版本的调节

    android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 17 ...

  8. SDUT 3571 Password 暴力搜索

    这个题如果裸搜肯定超时了 但是我们可以枚举,用初始串的哪一位数字去填目标串的那一位数字 这样就是暴力6!,复杂度很低,然后需要解决过程中经过的点的问题, 因为是从左向右走,所以记录当前光标, 和当前达 ...

  9. SQL 语句记录

    1.创建一个table @"create table rockTB(myId integer primary key autoincrement not null, time varchar ...

  10. 【LeetCode 169】Majority Element

    Given an array of size n, find the majority element. The majority element is the element that appear ...