首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
P2501 [HAOI2006]数字序列
2024-08-29
【BZOJ1049】【Luogu P2501】 [HAOI2006]数字序列 DP,结论,LIS
很有(\(bu\))质(\(hui\))量(\(xie\))的一个题目. 第一问:求最少改变几个数能把一个随机序列变成单调上升序列. \(Solution:\)似乎是一个结论?如果两个数\(A_i\)和\(A_j\)可以保留(\(i > j, A_i > A_j\)),即中间其他数都可以通过修改成为\([A_i, A_j]\)区间内的一个数,那么一定有\(i - j <= A_i - A_j\),即\(A_i - i >= A_j - j\).这个东西我们可以设为数列\(B\),求
洛谷 P2501 [HAOI2006]数字序列 解题报告
P2501 [HAOI2006]数字序列 题目描述 现在我们有一个长度为n的整数序列A.但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列.但是不希望改变过多的数,也不希望改变的幅度太大. 输入输出格式 输入格式: 第一行包含一个数n,接下来n个整数按顺序描述每一项的键值. 输出格式: 第一行一个整数表示最少需要改变多少个数. 第二行一个整数,表示在改变的数最少的情况下,每个数改变的绝对值之和的最小值. 说明 90%的数据n<=6000. 100%的数据n<=35000. 保证所有数
2021.12.06 P2501 [HAOI2006]数字序列(动态规划+LIS)
2021.12.06 P2501 [HAOI2006]数字序列(动态规划+LIS) https://www.luogu.com.cn/problem/P2501 题意: 现在我们有一个长度为 n 的整数序列 a.但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列.但是不希望改变过多的数,也不希望改变的幅度太大. 求最小的改变次数和此时每个数改变的绝对值之和. 分析: 对于 \(a_i\) ,\(a_j\) , \(i<j\) ,当 \(j-i<=a_j-a_i\) 时 \(i\) 与
Luogu P2501 [HAOI2006]数字序列
题目 首先把\(a\)改成严格单调上升等于把\(a_i-i\)改成单调不降. 那么第一问可以直接做LIS,答案就是\(n-\)LIS的长度. 同时我们记录一下序列中每个位置结尾的LIS长度. 第二问我们考虑这样一个事实: 对于LIS中相邻的两个数\(a_i,a_j\),这两个数中间的数一定要么\(<a_i\)要么\(>a_j\). 考虑一种修改方案,显然修改后中间的数会呈现阶梯状. 对于任意一个阶梯\((l,r,x)\),如果它上面的数(\([l,r]\)中\(>x\)的数)的个数大于下
p2501 [HAOI2006]数字序列
传送门 分析 https://www.luogu.org/blog/FlierKing/solution-p2501 对于第二问的感性理解就是有上下两条线,一些点在上面的线的上面或者下面的线的下面,然后看它们变成哪个线的位置更优 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<ccty
P2501 [HAOI2006]数字序列 (LIS,DP)(未完成)
第二问好迷... #include "Head.cpp" #include <vector> const int N = 35007; vector<int> V[N]; int a[N], b[N], f[N]; int sum1[N], sum2[N], dp[N]; int main(){ int n; io >> n; R(i,1,n){ io >> a[i]; a[i] -= i; } a[++n] = 0x3f3f3f3f;
【BZOJ1049】 [HAOI2006]数字序列
BZOJ1049 [HAOI2006]数字序列 dp好题? 第一问 第一问我会做!令\(b_i=a_i-i\),求一个最长不下降子序列. \(n-ans\)就是最终的答案. 第二问 好难啊.不会.挖坑待补. 考虑一下对于一个i~j的可能符合情况,定然存在一个\(k\)在i~k之中为\(a_i\),k~j之中为\(a_j\). 然后就可以dp了. 这个转移比较玄学.如果不随机就GG了. 代码实现 #include<stdio.h> #include<stdlib.h> #includ
【BZOJ 1049】 1049: [HAOI2006]数字序列 (LIS+动态规划)
1049: [HAOI2006]数字序列 Description 现在我们有一个长度为n的整数序列A.但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列.但是不希望改变过多的数,也不希望改变的幅度太大. Input 第一行包含一个数n,接下来n个整数按顺序描述每一项的键值.n<=35000,保证所有数列是随机的 Output 第一行一个整数表示最少需要改变多少个数. 第二行一个整数,表示在改变的数最少的情况下,每个数改变的绝对值之和的最小值. Sample Input 4 5 2 3
bzoj 1049 [HAOI2006]数字序列
[bzoj1049][HAOI2006]数字序列 Description 现在我们有一个长度为n的整数序列A.但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列.但是不希望改变过多的数,也不希望改变的幅度太大. Input 第一行包含一个数n,接下来n个整数按顺序描述每一项的键值. Output 第一行一个整数表示最少需要改变多少个数. 第二行一个整数,表示在改变的数最少的情况下,每个数改变的绝对值之和的最小值. Sample Input 4 5 2 3 5 Sample Output
洛谷P2501 bzoj1049 [HAOI2006]数字序列
题目链接 bzoj 洛谷 题解 第一问: 假如 \(i < j\) 如果 \(j\)能从\(i\)转移过来 显然中间空隙必须足够 例如:\(50\) \(53\) \(53\) \(52\) 就不能留下\(50\) 和 \(52\) 那么可以得到如果\(j\)能从\(i\)转移过来 满足 \(a[j]-a[i] >= j-i\) \(=>\) \(a[j]-j >= a[i]-i\) 那么可以对于以上数列跑一边最长不下降子序列 第二问: 将原序列变为上升序列,就等于将新的序列(\(
热门专题
python获取当前文件父目录
quicksupport插件下载不了
ndk编译 lua 第三方库
NIFI 常用组件列表
BouncyCastle产生内存溢出问题解决
asp.net webapi web服务
无法从ftp服务器中复制文件
jupyter 安装golang内核
HTMLTESTRunner模块不可调用
win 定时运行 脚本
openlayers 点击feature
android 矢量动画 变形
ios已经手动交互过 还不能自动播放
如何用framebuffer做一个界面
belowcaptionskip 需要加什么命令
typescript和javasscript的关系
sqlserver查询指定表使用了触发器
unixbech如何配置
java反射获取当前类的类型
java 查看当前系统CPU数