BZOJ1049: [HAOI2006]数字序列
2015-01-24 23:38
316 查看
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1049
题解:
ydc的题解:http://pan.baidu.com/share/link?uk=2651016602&shareid=1490516411
第二问比较神?考场上敢去猜结论?
代码:
View Code
题解:
ydc的题解:http://pan.baidu.com/share/link?uk=2651016602&shareid=1490516411
第二问比较神?考场上敢去猜结论?
代码:
#include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<algorithm> #include<iostream> #include<vector> #include<map> #include<set> #include<queue> #include<string> #define inf 1000000000 #define maxn 50000+5 #define maxm 100000+5 #define eps 1e-10 #define ll long long #define pa pair<int,int> #define for0(i,n) for(int i=0;i<=(n);i++) #define for1(i,n) for(int i=1;i<=(n);i++) #define for2(i,x,y) for(int i=(x);i<=(y);i++) #define for3(i,x,y) for(int i=(x);i>=(y);i--) #define for4(i,x) for(int i=head[x],y=e[i].go;i;i=e[i].next,y=e[i].go) #define mod 1000000007 using namespace std; inline int read() { int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();} return x*f; } int n,a[maxn],b[maxn],f[maxn],next[maxn],last[maxn]; ll g[maxn],t[maxn]; int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); n=read(); for1(i,n+2)b[i]=inf; for2(i,2,n+1)a[i]=read()-i; a[1]=-inf;a[n+2]=inf-1; n+=2; for1(i,n) { f[i]=upper_bound(b+1,b+n+1,a[i])-b; b[f[i]]=a[i]; } cout<<n-f <<endl; for3(i,n,1)next[i]=last[f[i]],last[f[i]]=i; memset(g,127,sizeof(g)); for1(i,n) { if(f[i]==1){g[i]=0;continue;} t[i]=0; for3(j,i-1,last[f[i]-1])t[j]=t[j+1]+abs(a[j]-a[i]); for(int j=last[f[i]-1];j;j=next[j])if(a[j]<=a[i]) { if(j+1==i){g[i]=min(g[i],g[j]);continue;} ll tot=0; for2(k,j,i-1) { tot+=abs(a[j]-a[k]); g[i]=min(g[i],g[j]+tot+t[k+1]); } } } cout<<g <<endl; return 0; }
View Code
相关文章推荐
- bzoj 1049: [HAOI2006]数字序列【dp+二分+瞎搞】
- 【bzoj1049】[HAOI2006]数字序列
- bzoj1049 [HAOI2006]数字序列 ( LIS + 区间DP)
- bzoj1049[HAOI2006]数字序列
- BZOJ 1049 [HAOI2006]数字序列 DP
- bzoj 1049: [HAOI2006]数字序列(DP+DP)
- 【bzoj1049】【HAOI2006】【数字序列】【dp+暴力】
- [bzoj] 1049: [HAOI2006]数字序列
- 【BZOJ】1049: [HAOI2006]数字序列(lis+特殊的技巧)
- [bzoj 1049] HAOI2006数字序列
- 【BZOJ】【1049】【HAOI2006】数字序列
- bzoj1049: [HAOI2006]数字序列
- bzoj1049: [HAOI2006]数字序列
- 【BZOJ 1049】 1049: [HAOI2006]数字序列 (LIS+动态规划)
- BZOJ 1049([HAOI2006]数字序列-数字序列LIS与分块)
- [bzoj1049][HAOI2006]数字序列
- 【bzoj1049】【HAOI2006】【数字序列】
- 1049: [HAOI2006]数字序列 - BZOJ
- [BZOJ1049][HAOI2006]数字序列(dp)
- BZOJ1049: [HAOI2006]数字序列