用f[i]表示前i个数,i必须被贡献的答案,考虑转移,枚举下一个被贡献的数j,那么j需要满足:1.$j<i$;2.$a[j]<a[i]$;3.$a[i]-(i-j+1)\le a[j]$,化简后即$j-a[j]\le i-a[i]$;4.$a[i]\le i$这是一个三维偏序,但发现第二个限制和第三 ...
分类:
其他好文 时间:
2019-12-21 10:05:47
阅读次数:
69
题目描述 Mary在她的生日礼物中有一些积木。那些积木都是相同大小的立方体。每个积木上面都有一个数。Mary用他的所有积木垒了一个高塔。妈妈告诉Mary游戏的目的是建一个塔,使得最多的积木在正确的位置。一个上面写有数i的积木的正确位置是这个塔从下往上数第i个位置。Mary决定从现有的高塔中移走一些, ...
分类:
编程语言 时间:
2017-07-04 09:45:50
阅读次数:
154
【BZOJ1109】[POI2007]堆积木Klo Description Mary在她的生日礼物中有一些积木。那些积木都是相同大小的立方体。每个积木上面都有一个数。Mary用他的所有积木垒了一个高塔。妈妈告诉Mary游戏的目的是建一个塔,使得最多的积木在正确的位置。一个上面写有数i的积木的正确位置 ...
分类:
其他好文 时间:
2017-06-28 18:48:39
阅读次数:
467
bzoj1109[POI2007]堆积木Klo 题意: n个数,第i个数为ai,现在要移走一些数,使得移走后有最多的数位于它对应的位置上。求移走的数。n≤100000。 题解: dp方程:f[i]=f[j]+1(i>j,a[i]>a[j],a[i]-a[j]>=i-j即a[i]-i>=a[j]-j) ...
分类:
其他好文 时间:
2016-11-07 14:17:56
阅读次数:
245
f[i]表示第i个在自己位置上的最大值则f[i]=max(f[j])+1其中j j-a[j]=0j-a[j]>=0发现后两项可以推出第一项,所以是一个LIS问题,排序后树状数组优化DP即可,时间复杂度$O(n\log n)$。#include#include#define N 100010int n...
分类:
其他好文 时间:
2015-07-02 00:52:22
阅读次数:
357
我们设f[i]为保留第i个木块最多的符合未知数显然f[i]=max(f[j])+1 满足i>j a[i]>a[j] i-j>=a[i]-a[j]我们把最后一个式子变成a[i]-ij那不就水了,排序树状数组即可 1 var f,a,b:array[0..100010] of longint; 2 .....
分类:
其他好文 时间:
2015-05-27 15:36:00
阅读次数:
110
题目大意:给定一个序列,可以多次将某个位置的数删掉并将后面所有数向左串一位,要求操作后a[i]=i的数最多
首先我们假设最后a[i]=i的数的序列为S
那么S满足随着i递增,a[i]递增(相对位置不变),i-a[i]单调不减(后面的不会比前面移动的少)
这是一个三维偏序问题
要是不看题解我就真去写CDQ分治了233
我们发现i=(i-a[i])+a[i]
也就是说如果一个序列满足i-a...
分类:
其他好文 时间:
2015-03-12 17:21:57
阅读次数:
124
第一眼看出是动态规划。然后写方程:令f[i]表示下面i个积木里面必须取第i个的情况下满足要求的最多个数。则f[i] = max(f[j] + 1)其中j满足以下三个条件(1) j 11 #include 12 #include 13 14 using namespace std;15 16 st.....
分类:
其他好文 时间:
2014-09-30 14:53:29
阅读次数:
220
1109: [POI2007]堆积木KloTime Limit:10 SecMemory Limit:162 MBSubmit:530Solved:172[Submit][Status]DescriptionMary在她的生日礼物中有一些积木。那些积木都是相同大小的立方体。每个积木上面都有一个数。M...
分类:
其他好文 时间:
2014-09-20 16:36:29
阅读次数:
212