传送门 :洛谷 P1020 导弹拦截

思路 : 第一问为求一段序列 的最长不下降子序列的长度

第二问求得是 不下降子序列的个数

对于第一问,跑一边 最长不下降子序列即可

对于第二问, 依旧是跑一边第一问即可 (雾)

其实还要加一点神奇的位运算。。

#include <iostream>
#include <cstdio>
#include <cstring>
#define Max 1000
using namespace std;
int N, M;
int heigh [Max], dp_1[Max], dp_2 [Max];
int dp [Max];
int Max_Answer , Total = 1;
int Make (int dp [], bool flag)
{for (int i = 2; i < Total; i++)for (int j = 1; j < i; j++)if (flag ^ (heigh [j] >= heigh [i]))  //在这里运用了神奇的位运算,相当于一个开关, 去掉后是一个裸的跑最长不下降子序列
                dp [i] = max (dp [i], dp [j] + 1); int Maxn = 1;for (int i = 1; i <= Total; i++)Maxn = max (Maxn, dp [i]);  // 找出最大值 return Maxn;
}
int main()
{ios :: sync_with_stdio (false);int x;while (cin >> heigh [Total++]){dp_1 [Total - 1] = 1;       // 初始化为 每个数 之前最长不下降序列的最大长度 和 它之前 不下降序列的个数为 1 dp_2 [Total - 1] = 1;}Total--;cout << Make (dp_1, 0) << endl; cout << Make (dp_2, 1) << endl;return 0;
}

转载于:https://www.cnblogs.com/ZlycerQan/p/6069760.html

拦截导弹 (加了神奇的位运算)相关推荐

  1. 神奇的位运算——进制转换问题(16转8)

    说道位运算符,应该都了解,但是很少有人会用,在网上看别人的代码,我至今只见过一道题用到了位运算符,并被它深深的搞晕了(当然,他搞晕我是要负责的,我现在已经深深的迷上了他,真的是太神奇了),位运算符的原 ...

  2. C/C++ __builtin 超实用位运算函数总结

    众所周知,以 __builtin 开头的函数,是一种相当神奇的位运算函数,下面本人盘点了一下这些以 __builtin 开头的函数,希望可以帮到大家. 注:所有带 ll 的名字,均为 long lon ...

  3. java游戏将相_(Java)算法——位运算基础及基本应用

    位运算基础及基本应用 在处理整形数值时,可以直接对组成整形数值的各个位进行操作.这意味着可以使用屏蔽技术获得整数中的各个位(??) 位运算是针对整数的二进制进行的位移操作 整数 32位 , 正数符号为 ...

  4. 位运算以及位运算的应用

    位运算 什么是位运算 在计算机系统中,所有数据都是以二进制的形式进行存储,位运算就是对二进制中进行操作.所有的计算都是通过位运算进行实现的. 整数在计算机中 原码 原码是最简单的表示法,对于一个整数而 ...

  5. HDU 4738 Caocao‘s Bridges(桥、任何位运算一定都要加括号、因为有重边所以用前向星)

    HDU 4738 Caocao's Bridges(桥.任何位运算一定都要加括号.因为有重边所以用前向星) Caocao was defeated by Zhuge Liang and Zhou Yu ...

  6. java加减_Java位运算实现加减乘除

    一.加法 a+b 举例实现:13+9=22 13+9不考虑进位结果为12 只考虑进位结果为10 和刚好是22. 13二进制为1101,9二进制为1001. 不考虑进位结果为0100.算式为a^b 只考 ...

  7. 位运算---加、减、乘、除

    //位运算 增加乘除// ^ 无进位的相加@Testvoid contextLoads(){int a=22,b=32;int result=a+b;System.out.println(result ...

  8. 位运算在一类数组题中的用法 只出现一次的数字I

    文章目录 前言 复习 一:只出现一次的数字I 二:只出现一次的数字II 二:只出现一次的数字III 前言 LeetCode上有几道题特别相似,分别是leetcode 136只出现一次的数(简单),13 ...

  9. 位运算简介及实用技巧(二):进阶篇(1)

    =====   真正强的东西来了!   ===== 二进制中的1有奇数个还是偶数个     我 们可以用下面的代码来计算一个32位整数的二进制中1的个数的奇偶性,当输入数据的二进制表示里有偶数个数字1 ...

最新文章

  1. confluence7安全补丁_centos7安装confluence遇到的问题
  2. 张磊香港理工大学计算机,香港理工大学张磊博士赴深圳先进院交流
  3. python爬取b站用户_用Python爬取bilibili全站用户信息
  4. Metasploit Framework(MSF)的使用
  5. 关于setTimeout
  6. InstallShield For .Net制作.Net项目安装包之完整代码
  7. 修改mysql表的存储引擎
  8. python3下使用cv2.imwrite存储带有中文路径图片或者绝对路径图片
  9. XSS、CSRF与验证码等等
  10. [转] openssl dgst命令完成SHA256哈希校验和RSA数字签名
  11. Julia:提高性能的N个点
  12. IBM 人工智能黑科技
  13. C#——初识Console
  14. 人生苦短python作伴_人生苦短,我用python
  15. Firewalld的区域(zone)
  16. 输出菱形(C语言,萌新向)
  17. JSP中把动态页面转换为静态页面
  18. [4月24日] 苦练基本功,事半功倍!
  19. Java 帝国之Java bean上
  20. 打车软件盛行,如何判断是否拒载

热门文章

  1. 运行Angular项目后自动打开网页
  2. npm install --save和npm install --save-dev的区别
  3. 7年半老程序员,被现实击垮……
  4. 中国SaaS死或生之二:ERP两大邪术,尽出歪门邪路
  5. Spring Cloud Kubernetes容器化实践
  6. Spring Cloud构建微服务架构(五)服务网关
  7. Javascript面向对象编程(二):构造函数的继承
  8. 数据库的七种传播方式
  9. 魅族升级鸿蒙,魅族要“弯道超车”?率先升级鸿蒙OS,挥别安卓系统
  10. java数组删除数据_Java 数组 之 一维数组 删除 元素