首页 > 其他分享 >POJ 1952(最长不下降子序列的个数)

POJ 1952(最长不下降子序列的个数)

时间:2022-10-25 12:36:03浏览次数:59  
标签:do begin end ans 个数 len POJ 1952 序列


求一个序列的最长不下降子序列的长度,与个数(相同数列算1个)

关键是如何判重。

显然如果之前有一个尾数相同且长度相同的序列,哪么后一个包含前一个所有可能的序列相同的序列,故将前一个序列删除(重复)


Program P1952;
var
n,i,j,ans:longint;
a,len,f,path:array[1..5000] of longint;
begin
read(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do
begin
len[i]:=1;
f[i]:=1;
path[i]:=i;
for j:=i-1 downto 1 do
if (a[j]>a[i]) and (len[j]+1>len[i]) then
begin
len[i]:=len[j]+1;
f[i]:=f[j];
end
else if (a[j]>a[i]) and (len[j]+1=len[i]) then inc(f[i],f[j]);


for j:=1 to i-1 do
if (a[i]=a[j]) and (len[i]=len[j]) then f[j]:=0;



end;
j:=0;
for i:=1 to n do if len[i]>j then j:=len[i];
ans:=0;
for i:=1 to n do if len[i]=j then inc(ans,f[i]);

writeln(j,' ',ans);


end.



标签:do,begin,end,ans,个数,len,POJ,1952,序列
From: https://blog.51cto.com/u_15724837/5794481

相关文章

  • POJ 2588(解析几何+并查集)
    题目就是早从左到右的路注意输入的实数这题图画好就行,别像我一开始把图弄反就成从上开始找,若找到一个与下边界相邻的就无解,找到与左边相邻的记圆与左边界相交的下边的点(相当......
  • POJ 3844(同余)
    果断同余……D[j]-D[i] mod k=0D[j]=D[i]求有多少相等数对,用队列O(n)ProgramP3844;constmaxn=50000;maxd=1000000;varans,t,f,n,i,j:longint;d:array[0........
  • POJ 3122(二分答案)
    二分答案……Programpie;constlef=0.00001;vart,n,f,i,j:longint;r:array[1..10000]oflongint;s:array[1..10000]ofdouble;maxs:double;procedures......
  • POJ 3842(质数判断)
    7!=5040所以这题直接求质数比打一千万的表都快这提高诉我们阶乘其实不算大&看(算)清数据规模Programcc;varn,t,len,i,j,ans:longint;s:string;b:array[0..9]oflong......
  • POJ 1125(Floyd)
    裸FloydProgramP1125;constmaxn=100;maxedge=10;NULL=-2139062144;varn,i,j,k,m,v,t,ans:longint;f:array[1..maxn,1..maxn]oflongint;functionmax(a,b:......
  • POJ 1700(过河问题)
    玩过《雷顿》就知道这题可以贪心小等于2人:1,2->3人时:1,3->1<-1,2->1<-否则:1,2->2<-max1,max2->1<-OR:1,max1->1<-2,max2->2<-于是数据规模-2ProgramP1700;vart,n,i,j:long......
  • POJ 3264(STRMQ)
    forj:=1toln(n)/ln(2)  fori:=1ton-(1shlj)+1do    f[i,j]:=min(f[i,j-1],f[i+(1shl(j-1),j-1];f[l,r]:=min(f[l,j],f[r-(1shlj)+1,j];j=ln(r-l+1......
  • POJ 3748(C++的16进制读法 %x)
    P党写几小时的程序C++才几行……首先P的位运算有上限2^30此时即便是int64也会因为补码坑死人的到1shl31时 int64是负数故这个时候不能shr为多出好多位造成以......
  • POJ 2185(最大平铺矩阵)
    DefaultMilkingGridDescription(1<=R<=10,000) *C (1<=C<=75) 的矩阵,求它的最大平铺矩阵,不够的地方可部分平铺,但不可重叠。Input......
  • POJ 3661(贝茜晨练)
    经典Dp,果断记忆化……#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<functional>usingnamespacestd;#defineMAXN10000+10#defineM......