关于三目运算符与if语句的效率与洛谷P2704题解
题目描述
司令部的将军们打算在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题解的更多相关文章
- SQLServer语句执行效率及性能测试
写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了. 通过设置STATISTICS我们可以查看执行SQL时的 ...
- mysql优化(三)–explain分析sql语句执行效率
mysql优化(三)–explain分析sql语句执行效率 mushu 发布于 11个月前 (06-04) 分类:Mysql 阅读(651) 评论(0) Explain命令在解决数据库性能上是第一推荐 ...
- 统计sql语句执行效率
--统计sql语句执行效率SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N ...
- 对于Oracle中分页排序查询语句执行效率的比较分析
转自:http://bbs.csdn.net/topics/370033478 对于Oracle中分页排序查询语句执行效率的比较分析 作者:lzgame 在工作中我们经常遇到需要在Oracle中进行分 ...
- oracle中的exists 和not exists 用法 in与exists语句的效率问题
博文来源(oracle中的exists 和not exists 用法):http://chenshuai365-163-com.iteye.com/blog/1003247 博文来源( in与exi ...
- 提高Order by语句查询效率的两个思路
提高Order by语句查询效率的两个思路 2011-03-01 13:07 水太深 ITPUB 字号:T | T 在MySQL数据库中,Order by语句的使用频率是比较高的.但是众所周知,在使用 ...
- Mysql explain分析sql语句执行效率
mysql优化–explain分析sql语句执行效率 Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 ...
- 进阶系列一【绝对干货】---SQL语句执行效率优化
1.尽量适用联接查询来取代子查询 2.如果要用子查询,用EXISTS替代IN.用NOT EXISTS替代NOT IN,因为EXISTS引入的子查询只是测试是否存在符合子查询中指定条件的行,效率较高.无 ...
- SQL语句执行效率及分析(note)
1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况p4: 2.4内存: 1 Gos: windows 2003数据库: ms sql server 2000目的: 查询性能测试, ...
随机推荐
- codevs 3290 华容道
HAHAHA BFS+SPFA. #include<iostream> #include<cstdio> #include<cstring> #include< ...
- Java [Leetcode 191]Number of 1 Bits
题目描述: Write a function that takes an unsigned integer and returns the number of ’1' bits it has (als ...
- noip2000提高组题解
事实再次向我证明了RP的重要性... 第一题:进制转换 是我最没有把握AC的一道题目却是我唯一一道AC的题目,真是讽刺.看完题目几乎完全没有往正常的解法(取余倒序)去想,直接写了搜索,因为数据范围在2 ...
- Shell中取时间格式方法
Shell中取时间格式方法2007-09-13 15:35常用date的显示格式: date +%F //2007-03-06date +%Y%m%d//20070306 date +%T //23: ...
- 如何在linux中搭建JEECMS系统
本人正在进行jeecms二次开发,但因win7系统中的Tomcat无法使用,就想起在linux下安装,但去jeecms的官方网站,没有给出在linux下安装的方法,确实苦恼,经过一天的研究,终于大功告 ...
- [Papers]NSE, $\p_3u$, Lebesgue space [Cao, DCDSA, 2010]
$$\bex \p_3\bbu\in L^p(0,T;L^q(\bbR^3)),\quad \frac{2}{p}+\frac{3}{q}=2,\quad \frac{27}{16}\leq q\le ...
- java web 学习八(HttpServletResponse对象2)
一.HttpServletResponse常见应用——生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类,
- Spring Bean基本管理--bean注入方式汇总
依赖注入方式:Spring支持两种依赖注入方式,分别是属性注入和构造函数注入.还有工厂方法注入方式. 依赖注入还分为:注入依赖对象可以采用手工装配或自动装配,在实际应用开发中建议使用手工装配,因为自动 ...
- Android ListView从网络获取图片及文字显示
上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...
- C/C++面试小知识点
1.static有什么用途. 解答: 在函数体中,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其 ...