HDU 5773 The All-purpose Zero (DP)
The All-purpose Zero
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 112 Accepted Submission(s): 44
For each case,the first line contains an interger n,which is the length of the array s.
The next line contains n intergers separated by a single space, denote each number in S.
In the first case,you can change the second 0 to 3.So the longest increasing subsequence is 0 1 2 3 5.
题目大意:
输入一个整数序列,其中0可以替换成 任意一个整数。求最大严格上升子序列。
解题思路:
如果0不可以换,那么就是一个LIS问题,可是如果0可以替换那么就不能直接dp了。因为0可以换成任意一个数,所以我们可以先把0取出,对剩下的进行LIS,最后再把0的个数加上,不过这样不能保证严格递增。所以,我们需要将每一个非0点数字减去它前面0的个数,再进行LIS就可以保证加入0后也是严格递增的了。
附AC代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector>
using namespace std;
#define INF 0x3f3f3f3fconst int maxn=100000+5;
int a[maxn],dp[maxn];int main()
{int T;scanf("%d",&T);for(int tt=1;tt<=T;++tt){int n,num=0;scanf("%d",&n);for(int i=0;i<n;++i){scanf("%d",&a[i]);if(a[i]==0)//去掉0{++num;--n;--i;}else a[i]-=num;//减去前面0的个数}memset(dp,0x3f,sizeof dp);for(int i=0;i<n;++i)//O(n * log n)的LIS*lower_bound(dp, dp+n, a[i])=a[i];printf("Case #%d: %d\n",tt,(int)(lower_bound(dp, dp+n, INF)-dp)+num);}return 0;
}
HDU 5773 The All-purpose Zero (DP)相关推荐
- 【 HDU - 5459】Jesus Is Here(dp)
题干: I've sent Fang Fang around 201314 text messages in almost 5 years. Why can't she make sense of w ...
- HDU6578 2019HDU多校训练赛第一场 1001 (dp)
HDU6578 2019HDU多校训练赛第一场 1001 (dp) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题意: 你有n个空需要去填,有 ...
- HDU-1284:钱币兑换问题 推理+动态规划(dp)
文章目录 题目大意: 题目链接HDU 1284(点击可进入网页提交) 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. 输入: 每行只有一个正整数N, ...
- 求三角形最大面积(DP)
求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...
- LeetCode 编辑距离 II(DP)
1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...
- LeetCode 1220. 统计元音字母序列的数目(DP)
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: - 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i ...
- LeetCode 265. 粉刷房子 II(DP)
文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油 ...
- LeetCode 256. 粉刷房子(DP)
文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...
- LeetCode 1223. 掷骰子模拟(DP)
1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...
- LeetCode 1155. 掷骰子的N种方法(DP)
1. 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, -, f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数为 target,请你 ...
最新文章
- 卸载虚拟机出现用户已存在的错误_极限 JVM (1) 虚拟机规范
- R语言:如何快速生成许多差异明显的颜色?
- 谭浩强课后题之----输出10个数中最大的
- ClickOnce 部署概述
- JS 获取随机颜色值
- php iis日志分析,星外系统IIS日志分析常用的几个命令小结
- 问题四十九:怎么用ray tracing画supertoroid(超级圆环)
- Flutter - 底部导航详解与案例示范
- DeepStream不支持多 RTSP源(多个摄像头)
- python和java那个更难_python难还是java难
- 本地与服务器文件同步软件哪个好,同步软件哪个好,亲身体验的3款免费同步软件介绍...
- cpp-http 库的使用
- 程序人生 | 记一次裸辞,裸辞需三思而后行!
- 仰望星空不如脚踏实地
- 「CF1154F」Shovels Shop【背包DP】
- Windows11 无法显示office图标
- 4个小方法,让你的抖音发出来的视频更清楚
- 2021年PHP最新面试题(一)
- 均方误差(mean-square error, MSE)
- python爬b站评论_一个简单的爬取b站up下所有视频的所有评论信息的爬虫
热门文章
- java语言如何将小写字母转化为大写_java中如何把大写字母转换成小写字母,小写字母转换成大写字母...
- java读取服务器上文件,java 读取linux服务器上文件
- 惠普笔记本电脑重装系统后找不到引导设备
- 阈值Java_阈值处理(深入学习)
- cdr 表格自动填充文字_CDR插件表格安装教程
- ubuntu16.04 独立显卡驱动安装
- Linux查看Nvidia显卡型号
- c语言点阵输出字母,单片机C语言程序设计:8X8LED 点阵显示数字
- 医院管理系统数据库,课程设计,SQLserver,纯代码设计
- 兜兜转转,华为与李一男终于在汽车行业重逢,两者将展开决战?