博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【ZJOI2016】线段树
阅读量:6991 次
发布时间:2019-06-27

本文共 1855 字,大约阅读时间需要 6 分钟。

【ZJOI2016】线段树

img

img
img

ZJOI的题神啊。

我们考虑计算每个位置\(p\),它在操作过后变成第\(x\)个数的操作序列数。

我们枚举\(x\)。我们先得到了\(L_x,R_x\)表示最左边比\(x\)小的数以及最右边比\(x\)小的数(权值相同编号小的更小)。设\(f_{i,l,r}\)表示前\(i\)个操作结束后,恰好\([l,r]\)的权值\(\leq a_x\)\([L_x,l-1],[r+1,R_x]\)的权值\(> a_x\)的方案数。初始\(f_{0,L_x,R_x}=1\)

考虑转移。我们新的状态\(l',r'\)一定是有\(l',t\)或者\(t,r'\)转移过来的。

以第一种为例:

\[ \displaystyle f_{i,l',r'}=\sum_{t=r'+1}^{R_x}f_{i-1,l',t*(n-t)} \]
然后这个可以前缀和优化。

还有就是第\(i\)个操作区间为\([1,l-1],[l,r],[r+1,n]\)的子区间,这样的话\(l'=l,r'=r\)

开始想的状态是\(f_{i,l,r}\)表示\([l,r]\)的权值\(>a_x\)的,怎么都转移不了。

代码:

#include
#define ll long long#define N 405#define int llusing namespace std;inline int Get() {int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();}while('0'<=ch&&ch<='9') {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;}const ll mod=1e9+7;int f[2][N][N];int n,q;int w[N];int L[N],R[N];int sum[N];int g[N][N];void solve(int L,int R,int id) { for(int i=L;i<=R;i++) for(int j=i;j<=R;j++) f[0][i][j]=0; f[0][L][R]=1; int now=0; for(int i=0;i
=l;r--) { (f[now^1][l][r]=tem); (tem+=1ll*f[now][l][r]*(n-r))%=mod; } } for(int r=L;r<=R;r++) { ll tem=0; for(int l=L;l<=r;l++) { (f[now^1][l][r]+=tem)%=mod; (tem+=1ll*f[now][l][r]*(l-1))%=mod; } } for(int l=L;l<=R;l++) { for(int r=l;r<=R;r++) { (f[now^1][l][r]+=1ll*f[now][l][r]*(sum[r-l+1]+sum[l-1]+sum[n-r]))%=mod; } } now^=1; } for(int i=L;i<=R;i++) { int tem=0; for(int j=R;j>=i;j--) { (tem+=f[now][i][j])%=mod; (g[j][id]+=tem)%=mod; } }}bool cmp(int a,int b) { if(w[a]!=w[b]) return w[a]
=1&&w[j]

转载于:https://www.cnblogs.com/hchhch233/p/10553900.html

你可能感兴趣的文章
bzoj 2259 [Oibh]新型计算机 ——最短路(建图)
查看>>
洛谷2575高手过招
查看>>
自己动手实现线性映射,哈希映射
查看>>
依然莫名其妙的内容查询Web部件(Content Query Web Part)
查看>>
删除专家账号,要注意删干净
查看>>
抗投诉空间
查看>>
python代码 构建验证码
查看>>
Linux动态库和静态库
查看>>
js基础--高阶函数(map,reduce,filter,sort)
查看>>
结合数据结构来看看Java的String类
查看>>
全排列——DFS实现
查看>>
go 语言与循环
查看>>
iOS版 hello,world版本2
查看>>
重构遗留代码(1):金牌大师
查看>>
go:数组
查看>>
网站重构的理解
查看>>
PAT L1-043. 阅览室
查看>>
linux 命令与文件的查询
查看>>
MYSQL数据库引擎 MYISAM和 INNODB区别
查看>>
设计模式之原型模式
查看>>