HDU 6357 Hills And Valleys】的更多相关文章

Hills And Valleys 题意:给你一个序列, 可以翻转一次区间 [l, r] 求最大 非递减的 序列长度. 题解:枚举翻转区间,然后匹配. 如果不翻转区间, 那么就相当于用b[] = {0,1,2,3,...,7,8,9} 来匹配原序列, 可以重复匹配, 求最长的长度. 现在我们假设翻转b的 [3,5] 那么 新的b的序列就为 b[] = {0,1,2,3,5,4,3,5,6,7,8,9} 来匹配a序列,求最长的长度. 新的bn的序列最多就是C(10,2)次. dp[n][m] 代表…
http://acm.hdu.edu.cn/showproblem.php?pid=6357 题意 给一个数值范围为0-9的a数组,可以选择翻转一个区间,问非严格最长上升子序列,以及翻转的区间. 分析 官方题解的做法: 它把最长不下降子序列映射成两个序列的最长公共子序列问题 a序列就是给出的原序列 b序列是值域的序列 需要注意的是:b序列可以重复匹配 一般的最长不下降子序列中,b序列就是:0,1,2,3,4,5,6,7,8,9 这样a和b的最长公共子序列就是一个最长不下降子序列. 然后这题它说可…
6357. Hills And Valleys 自己感觉这是个好题,应该是经典题目,所以半路选手补了这道字符串的动态规划题目. 题意就是给你一个串,翻转任意区间一次,求最长的非下降子序列. 一看题面写的0≤Ai≤9 (i=1,2,⋯,n).就知道肯定有点东西,只要这么写,肯定就是有某个神奇的操作可以解决这道题目. 比赛的时候脑壳都要炸了也没想出来,补题的时候懂了,我可以定义一个b串为0123456789,这肯定是递增的,所以我翻转b的某个区间,然后去和a匹配,因为我把b再翻转回来,还是递增的.…
题意:给一串由n个数字组成的字符串,选择其中一个区间进行翻转,要求翻转后该字符串的最长非降子序列长度最长,输出这个最长非降子序列的长度以及翻转的区间的左右端点 #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ; int n, a[maxn], dp[maxn][maxm], b[maxm]; int ans, ansl, ansr, l, r, cnt; int al[maxn][maxm], ar[ma…
传送门 题目大意 给定一个序列A,求翻转A中一个区间之后的最长不降子序列的长度即翻转的区间 分析 发现直接枚举翻转的区间的话是无论如何都不行的,于是有一个非常神奇的做法.我们再设一个序列B = {0,1,2,3,4,5,6,7,8,9},然后我们枚举翻转B中的哪一段,假设我们翻转[5,8]z这一段,则得到B' = {0,1,2,3,4,5,8,7,6,5,8,9},然后设dp[i][j]表示A考虑到第i个,B'考虑到第j个,直接dp转移即可.最终输出的翻转区间单独设数组然后一起转移就行了. 代码…
题目传送门 题意: 给你0~9的字符串,问你翻转哪个区间后使得其最长不下降子序列长度最长 思路: 因为字符是0~9,所以我们可以定义一个b数组来枚举L,R, 去和原来的字符串去求最长公共子序列长度,不断更新求最大值 然后在其中记录路径,不断回缩去求此时的L,R 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; #define N 100005 ]; char str[N]; ],pre[N][]; in…
题意:长度为n的序列,有一次翻转区间的机会,问最长不减序列 题解:如果没有翻转区间的机会,有两个做法. 一是dp[i]表示以i结尾的最长序列 dp[i]=max(dp[i],dp[j]+1)  (j<=i). 二是那个抽牌替换的解法. 这道题可以翻转但是值域很小,所以考虑最长子序列和值域的关系. 选择第一种解法改进. 显然不翻转的话是序列A与 序列B ={0123456789} 来匹配,B中的元素可以被匹配到多次. 现在要求翻转一次后的最长子序列,直接翻转A的复杂度是C(n,2)*n*10. 考…
Solved:3 rank:71 E. Everything Has Changed #include <bits/stdc++.h> using namespace std; const double PI = acos(-1.0); int main() { int T; scanf("%d", &T); while(T--) { int m; double R; scanf("%d%lf", &m, &R); double…
hdu2020多校-1 J Math is Simple 给定 \(n\) ,求 \[\sum\limits_{1\le a<b\le n \\ gcd(a,b)=1 \\ a+b\ge n} \frac{1}{ab} \] 的值,答案对 \(998244353\) 取模. Solution 令 \(f_n = \sum\limits_{1\le a<b\le n \\ gcd(a,b)=1 \\ a+b\ge n} \frac{1}{ab}\), \(g_n = \sum\limits_{1…
POJ2279 Mr. Young's Picture Permutations 题意 Language:Default Mr. Young's Picture Permutations Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2513 Accepted: 960 Description Mr. Young wishes to take a picture of his class. The students will…