题目大意 给定一个长度为n的整数序列,求个最长子序列(不一定连续),使得该序列的长度为奇数2k+1,前k+1个数严格递增,后k+1个数严格递减.注意,严格递增意味着该序列中的两个相邻数不能相同.n<=10000 题解 这个题目和POJ1836有点相似,都是从左往右搞一遍LIS,然后从右到左也搞一遍LIS,然后枚举中间点,然后选取两者的较小者*2-1就是答案了 代码: #include <iostream> #include <algorithm> #include <c…
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68553#problem/B 题目要求: Wavio是一个整数序列,具有以下特性: 1.Wavio序列的长度是奇数, 即 L = 2 * n + 1; 2.Wavio序列前 n+1 个整数是递增序列 3.Wavio序列后 n+1 个整数是递减序列 如示例 1 2 3 4 5 4 3 2 1 10 最长的 Wavio序列 为 1 2 3 4 5 4 3 2 1 ,所以答案为9 题…
题目传送门 题意:找对称的,形如:123454321 子序列的最长长度 分析:LIS的nlogn的做法,首先从前扫到尾,记录每个位置的最长上升子序列,从后扫到头同理.因为是对称的,所以取较小值*2-1再取最大值 代码: /************************************************ * Author :Running_Time * Created Time :2015-8-5 21:38:32 * File Name :UVA_10534.cpp ******…
// uva 10534 Wavio Sequence // // 能够将题目转化为经典的LIS. // 从左往右LIS记作d[i],从右往左LIS记作p[i]; // 则最后当中的min(d[i],p[i])就是这个波动序列的一半 // 在这最后的min(d[i],p[i]) * 2 + 1 的最大值就是我们所要求的答案 // // 这题開始想的最后的答案是d[i]==p[i]的时候求最大. // 可是这样是不正确的,比如n=4, // 1,3,1,0 // 最长的应该是3,可是我的答案是1,…
Wavio Sequence  Wavio is a sequence of integers. It has some interesting properties. ·  Wavio is of odd length i.e. L = 2*n + 1. ·  The first (n+1) integers of Wavio sequence makes a strictly increasing sequence. ·  The last (n+1) integers of Wavio s…
Wavio Sequence Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice UVA 10534 #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int inf=0x3f3f3f3f; int mai…
Wavio Sequence My Tags (Edit) Source : UVA Time limit : 1 sec Memory limit : 32 M Submitted : 296, Accepted : 123 Wavio is a sequence of integers. It has some interesting properties. Wavio is of odd length i.e. L = 2 * n + 1. The first (n+1) integers…
Wavio Sequence Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on UVA. Original ID: 1053464-bit integer IO format: %lld      Java class name: Main   Wavio is a sequence of integers. It has some interesting properties. Wavio is o…
题意:给定一个序列,求一个最长子序列,使得序列长度为奇数,并且前一半严格递增,后一半严格递减. 析:先正向和逆向分别求一次LIS,然后再枚举中间的那个数,找得最长的那个序列. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath>…
两边算一下LIS就出来了,因为数据比较大,所以需要二分优化一下. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; + ; int n; int a[maxn], l[maxn], r[maxn]; int g[maxn]; void LIS(int d[]) { memset(g, 0x3f, sizeof(g…
Longest Ordered Subsequence Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 42914 Accepted: 18914 Description A numeric sequence of ai is ordered if a1 < a2 < - < aN. Let the subsequence of the given numeric sequence (a1, a2, -, aN) be…
E - LIS Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Description The world financial crisis is quite a subject. Some people are more relaxed while others are quite anxious. John is one of them. He is very…
对于1D/1D动态规划来说,理论时间复杂度都是O(n^2)的,这种动态规划一般都可以进行优化,贴一篇文章 https://wenku.baidu.com/view/e317b1020740be1e650e9a12.html 这里介绍最简单的一种,LIS的求法 其实就是二分,找单调性来二分 HDU1950是一道裸题 #include <iostream> #include<cstring> #include <algorithm> #define INF 0x3f3f3f…
题目链接:Codeforces 486E LIS of Sequence 题目大意:给定一个数组.如今要确定每一个位置上的数属于哪一种类型. 解题思路:先求出每一个位置选的情况下的最长LIS,由于開始的想法,所以求LIS直接用线段树写了,没有改,能够用 log(n)的算法直接求也是能够的.然后在从后向前做一次类似LIS.每次推断A[i]是否小于f[dp[i]+1],这样就能够确定该位 置是否属于LIS序列. 然后为第三类的则说明dp[i] = k的仅仅有一个满足. #include <cstdi…
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1475 正反一次lis然后去min{左,右}*2-1即可 #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream&…
题意:用最少的括号将给定的字符串匹配,输出最优解.可能有空行. 思路:dp. dp[i][j]表示将区间i,j之间的字符串匹配需要的最少括号数,那么 如果区间左边是(或[,表示可以和右边的字符串匹配,枚举中间断点k,如果str[i]==str[k]则dp[i][j]=min(dp[i][j],dp[i+1][k-1]+dp[k+1][j])表示不需要加入新的括号,也可以插入新的括号则dp[i][j]=min(dp[i][j],dp[i+1][k]+dp[k+1][j]+1). 如果区间最左边字符…
原文链接www.cnblogs.com/zhouzhendong/p/UOJ104.html 题解 首先证明一个结论:对于一种分割方案,分割的顺序不影响最终结果. 证明:对于树 a[x] 和 a[y] ,如果 x 与 y 之间有分割,那么它们对答案的贡献就是 a[x] * a[y] ,否则无贡献. 于是问题转化成 DP: 设 dp[i][j] 表示把前 j 个数分成 i 段的最大收益,那么: 设 $$s[k] = \sum_{i=1}^{k} a[i]$$ $$dp[i][j] = \max_{…
原文链接http://www.cnblogs.com/zhouzhendong/p/8848990.html 题目传送门 - CodeForces 623E 题意 给定$n,k$. 让你构造序列$a(0<a_i<2^k)$,满足$b_i(b_i=a_1\ or\ a_2\ or\ \cdots\ or\ a_i)$严格单调递增.($or$为按位或) 问你方案总数.对$10^9+7$取模. $n\leq 10^{18},k\leq 30000$ 题解 毛爷爷论文题. 我怀疑我看到的是假论文.里面…
题目大意:求一个序列中 先严格递增后严格递减的子序列的数目(要求这个子序列对称). 题目思路:正一遍DP,反一遍DP,因为n<=1e5,dp要把时间压缩到nlogn #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #define MAXSIZE 100005 using namespace std; int dp[MAXSIZE],a[MAXSIZE…
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=17&page=show_problem&problem=1475 Dynamic Programming. 最长增长子序列.推荐一个链接:http://www.cnblogs.com/liyukuneed/archive/2013/05/26/3090402.html.按照链接里的方法三(其他的会有TLE…
题目中的严格二字,表示的意思是不允许≥或者是≤的情况出现,只允许>的情况以及<的情况 经典问题是NOIP合唱队形,在这个题目中,既求了最长上升子序列,也求了最长下降子序列 其最终的结果由两个子序列的结果共同得来 我们给出实现方法: //最长上升子序列 ;i<=n;i++) ;j>=;j--) if(t[j]<t[i]) f1[i]=max(f1[i],f1[j]+); //最长下降子序列 ;i--) ;j<=n+;j++) if(t[j]<t[i]) f2[i]=…
本文出自   http://blog.csdn.net/shuangde800 刘汝佳<算法竞赛入门经典-训练指南>的动态规划部分的习题Beginner  打开 这个专题一共有25题,刷完后对dp的感觉提升了不少. 现把解题报告整理了一下,希望对大家能有帮助. 入门习题 (Exercises: Beginner) UVa11584 Partitioning by Palindromes 入门题目 LA4256 Salesman 入门题目 UVa10534 Wavio Sequence 可以转化…
题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics 10300 - Ecological Premium 458 - The Decoder 494 - Kindergarten Counting Game 414 - Machined Surfaces 490 - Rotating Sentences 445 - Marvelous Mazes…
各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1019 Grandpa's Other Estate 1034 Simple Arithmetics 1036 Complete the sequence! 1043 Maya Calendar 1054 Game Prediction 1057 Mileage Bank 1067 Rails 10…
111 - History Grading LCS 103 - Stacking Boxes 最多能叠多少个box DAG最长路 10405 - Longest Common Subsequence LCS 674 - Coin Change 全然背包求方案数 10003  - Cutting Sticks 区间DP dp[l][r]代表分割l到r的最小费用 116 - Unidirectional TSP 简单递推 输出字典序最小解 从后往前推 10131 - Is Bigger Smarte…
免费做一样新 1004 - Monkey Banana Problem 号码塔 1005 - Rooks 排列 1013 - Love Calculator LCS变形 dp[i][j][k]对于第一个字符串i 到jLCS为k的方案数 1068 - Investigation 数位dp 能被K整数且各位数字之和也能被K整除的数 dp[i][j][k] 到第i位每位数字之和的余数为j 当前数字余数为k 1079 - Just another Robbery 01背包 全部钱之和为背包体积 不被抓的…
1.UVa 11584 Partitioning by Palindromes(字符串区间dp) 题意:给出一个字符串,划分为若干字串,保证每个字串都是回文串,同时划分数目最小. 思路:dp[i]表示以第i位结尾时最小的划分数目(初始均为0) 状态转移方程1:(初始均为0)当[j:i]是回文串(0≤j≤i,0≤i<n):dp[i]=1(j==0);dp[i]=(dp[i]==0?dp[j-1]+1:min(dp[i],dp[j-1]+1)) 状态转移方程2:(初始:dp[i]=i+1)当[j:i…
发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) ACM总结(fennec) 其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受.郭老师有句话:你们这样做也是对的,不成功就成仁.让我的心也能安慰了不少. 我是从大一下学期开始接触ACM的,那时候我们学校才刚刚起步,siyee,wjiang师兄可以说是我的领路人了…
目录 max()/min() filter() 过滤 map() 映射 sorted筛选 reduce()减少 max()/min() 传入一个参数 (可迭代对象), 返回这个可迭代对象中最大的元素 可以设置default关键字参数, 当这个可迭代对象为空时, 返回default的值 传入多个参数, 返回这些参数中最大的参数 多个参数必须是同类型的 两种方法都可以设置key关键字参数(传入函数) """ max(iterable, *[, default=obj, key=f…
C. 结果填空:U型数字 最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212 就是一个U型数字,但是 333, 98, 567, 3131,就是不是U型数字. 现在蒜头君问你,[1,100000] 有多少U型数字? 提示:请不要输出多余的符号. 8193 D. 代码填空:LIS LIS是最长上升子序列.什么是最长上升子序列? 就是给你一个序列,请你在其中求出一段最长严格上升的部分,它不一定要连续. 就像这样:2, 3, 4, 7 和 2,…