$Poj1952\ $洛谷$1687\ Buy\ Low,Buy\ Lower$ 线性$DP+$方案计数
Description
求一个长度为n的序列a的最长下降子序列的长度,以及这个长度的子序列种数,注意相同的几个子序列只能算作一个子序列.
n<=5000,a[i]不超过long范围
Sol
求最长下降子序列的长度: 1.f[i]表示以a[i]结尾的最长下降子序列长度
2.f[i]表示以i结尾的最长下降子序列长度
第一种适用于n比较小的,第二种则适用于n大而a[i]小的,这题显然用第一种吧,而且第一种更方便计数
用num[i]表示以a[i]结尾的长度为f[i]的子序列个数
还需注意的是,这题要去重.
所以更新num[i]数组,j从1循环到i-1时,遇到a[i]==a[j]&&f[i]==f[j]的情况num[i]-=num[j]就好了
因为,在这样的情况中,num[j]所记录的子序列一定也被包含在num[i]中
Code
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #define Rg register
- #define il inline
- #define db double
- #define ll long long
- #define mem(a,b) memset(a,b,sizeof(a));
- #define go(i,a,b) for(Rg int i=a;i<=b;++i)
- #define yes(i,a,b) for(Rg int i=a;i>=b;--i)
- using namespace std;
- il int read()
- {
- int x=,y=;char c=getchar();
- while(c<''||c>''){if(c=='-')y=-;c=getchar();}
- while(c>=''&&c<=''){x=(x<<)+(x<<)+c-'';c=getchar();}
- return x*y;
- }
- const int N=;
- int n,ans1,p[N],l[N];//price length
- db ans2,nm[N];//number
- int main()
- {
- n=read();
- go(i,,n)p[i]=read(),l[i]=;
- go(i,,n)
- {
- go(j,,i-)if(p[j]>p[i])l[i]=max(l[i],l[j]+);
- if(l[i]==)nm[i]=;
- go(j,,i-)
- {
- if(p[i]==p[j]&&l[i]==l[j])nm[i]-=nm[j];
- if(p[j]>p[i]&&l[j]+==l[i])nm[i]+=nm[j];
- }
- }
- go(i,,n)if(l[i]>ans1)ans1=l[i];
- go(i,,n)if(l[i]==ans1)ans2+=nm[i];
- printf("%d %.0lf\n",ans1,ans2);
- return ;
- }
随机推荐
- 模板—v-dcc缩点
int dfn[MAXN],low[MAXN],num,root; int stack[MAXN],top,cnt; bool iscut[MAXN]; int new_id[MAXN],c[MAXN ...
- 网站的域名带www的和不带www的有什么区别呀
国内用户习惯用www,不过默认的不带www的域名要好过带www的,带Www的是二级域名,不带的是顶级域名,默认的在搜索引擎中得权重会比较高 区别就在于一个带www一个不带www 其他都一样.www的域 ...
- 中国剩余定理(SCAUOJ 1077)
1077 韩信点兵 时间限制:500MS 内存限制:65536K提交次数:1103 通过次数:99 题型: 编程题 语言: 无限制 Description 相传汉高祖刘邦问大将军韩信统御兵士多少 ...
- DECLARE
-- 修正用プログラム DECLARE CURSOR c_adv_fee_detail IS SELECT adv_fee.fee_mgmt_num, ...
- 提高github下载速度的方法【100%有效】可达到2MB/s
因为大家都知道的原因,在国内从github上面下载代码的速度峰值通常都是20kB/s.这种速度对于那些小项目还好,而对于大一些的并且带有很多子模块的项目来讲就跟耽误时间.而常见的的方法无非就是修改HO ...
- HTML5的5个的新特性
特性1:正则表达式 无须使用服务端的检测,使用浏览器的本地功能,就可以帮助你判断邮箱的格式,URL,电话,防止用户输入错误的信息,通过H5的pattern属性,很方便的整合这个功能. <inpu ...
- 洛谷P1809 过河问题 经典贪心问题
作者:zifeiy 标签:贪心 题目链接:https://www.luogu.org/problem/P1809 我们假设第 \(i\) 个人过河的耗时是 \(t[i]\) ,并且 \(t[i]\) ...
- H3C 不适当的VLAN间路由方式
- 【js】vue 2.5.1 源码学习 (九) 响应数组对象的变
大体思路(八) 本节内容: 1.Observe 如何响应数组的变化 代理原型 数组变异方法 shell cacheArrProto methods 新添加的数组需要加到显示系统里面,拦截 push等的 ...
- P1092 电子表格
题目描述 在流行的电子表格系统中(例如,在Excel中),使用如下计算方式来对列号进行计算. 第1列对应A,第2列对应B,--,第26列对应Z.然后使用两个大写英文字母来表示列:第27列对应AA,第2 ...