【ContestHunter】【弱省胡策】【Round7】
Prufer序列+高精度+组合数学/DP+可持久化线段树
Magic
利用Prufer序列,我们考虑序列中每个点是第几个插进去的,再考虑环的连接方式,我们有$$ans=\sum_{K=3}^n N^{N-K-1}*K*\frac{(K-1)!}{2} * \binom{N}{K}$$
然而直接高精算会爆……
注意到每一项与前一项相差不大,有$now=last*N/(N-K+1)$,所以我们算出来第一项以后不用每次重算后面的了……
//Round7 A
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
typedef long long LL;
const int N=;
/*******************template********************/ int n;
struct bint{
LL v[];
int l;
LL& operator [] (int x){return v[x];}
bint(){l=; memset(v,,sizeof v);}
}ans;
const LL Limit=100000000000000LL;
void print(bint& a){
printf("%lld",a[a.l]);
D(i,a.l-,) printf("%014lld",a[i]);
puts("");
}
void mul(bint& a,const int &b){
LL tmp=;
F(i,,a.l){
a[i]=a[i]*b+tmp;
tmp=a[i]/Limit;
a[i]%=Limit;
}
if (tmp) a[++a.l]=tmp;
}
void del(bint& a,const int &b){
LL tmp=,last=;
D(i,a.l,){
tmp=(a[i]+last*Limit)%b;
a[i]=(a[i]+last*Limit)/b;
last=tmp;
}
while(a[a.l]== && a.l) a.l--;
}
bint operator + (bint a,bint b){
int l=max(a.l,b.l);
F(i,,l){
a[i]+=b[i];
if (a[i]>=Limit) a[i]-=Limit,a[i+]++;
}
if (a[l+]>) a.l=l+; else a.l=l;
return a;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("A.in","r",stdin);
freopen("A.out","w",stdout);
#endif
scanf("%d",&n);
bint p,ans;
p[p.l=]=;
F(i,,n-) mul(p,n);
mul(p,n-);
del(p,);
F(k,,n){
mul(p,n-k+);
del(p,n);
ans=ans+p;
// ans+=Pow(n,n-k-1)*k*fac[k-1]/2*C(n,k);
}
print(ans);
return ;
}
Rectangle
QwQ真是一道好题!
先考虑所有的a[i]=1的情况,这时候我们的做法是线段树维护最大连续区间。
然后我们推广一下,用可持久化线段树,对每一个高度都维护一个最大连续区间。
同时再用一个priority_queue来维护一下当前的答案!(官方题解这里说是set……然而我用set给MLE了!什么鬼!!)
//Round7 B
#include<cstdio>
#include<queue>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
typedef long long LL;
inline LL getint(){
LL r=,v=; char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if (ch=='-') r=-;
for(; isdigit(ch);ch=getchar()) v=v*-''+ch;
return r*v;
}
const int N=,M=;
/*******************template********************/ int n,m,Max,a[N],b[N],rt[M],cnt; struct node{
int l,r,maxl,maxr,max;
}t[];
#define L t[o].l
#define R t[o].r
#define mid (l+r>>1)
#define lch L,l,mid
#define rch R,mid+1,r
void build(int &o,int l,int r){
o=++cnt;
t[o].maxl=t[o].maxr=t[o].max=r-l+;
if (l==r) return;
build(lch);
build(rch);
}
inline void maintain(int o,int l,int r){
t[o].maxl=t[L].maxl; t[o].maxr=t[R].maxr;
if (t[L].maxl==mid-l+) t[o].maxl+=t[R].maxl;
if (t[R].maxr==r-mid) t[o].maxr+=t[L].maxr;
t[o].max=max(t[L].maxr+t[R].maxl,max(t[L].max,t[R].max));
}
void update(int &o,int l,int r,int pos){
t[++cnt]=t[o], o=cnt;
if (l==r){t[o].maxl=t[o].maxr=t[o].max=;return;}
if (pos<=mid) update(lch,pos);
else update(rch,pos);
maintain(o,l,r);
}
bool cmp(int x,int y){return a[x]<a[y];}
struct data{
LL v;
int id;
data(LL x=,int id=):v(x),id(id){}
bool operator < (const data &b)const{
return v<b.v || (v==b.v && id>b.id);
}
};
priority_queue<data>Q;
int main(){
#ifndef ONLINE_JUDGE
freopen("B.in","r",stdin);
freopen("B.out","w",stdout);
#endif
n=getint(); m=getint();
Max=;
F(i,,n){
a[i]=getint();
Max=max(Max,a[i]);
b[i]=i;
}
sort(b+,b+n+,cmp);
build(rt[],,n); LL ans=;
for(int i=,j=;i<=Max;i++){
rt[i]=rt[i-];
for(;a[b[j]]==i- && j<=n;j++)
update(rt[i],,n,b[j]);
Q.push(data((LL)t[rt[i]].max*i,i));
// printf("height=%d val=%lld\n",i,(LL)t[rt[i]].max*i);
} data x=Q.top();
printf("%lld\n",ans=x.v);
LL pos;
while(m--){
pos=getint()^ans;
update(rt[a[pos]],,n,pos);
Q.push(data((LL)t[rt[a[pos]]].max*a[pos],a[pos]));
a[pos]--;
for(x=Q.top(); (LL)x.id*t[rt[x.id]].max!=x.v;Q.pop(),x=Q.top());
ans=Q.top().v;
printf("%lld\n",ans);
}
return ;
}
【ContestHunter】【弱省胡策】【Round7】的更多相关文章
- 弱省胡策 Magic
弱省胡策 Magic 求\(n\)个点\(n\)的条边的简单联通图的个数. 毒瘤,还要写高精. 我们枚举环的大小\(k\),\(\displaystyle ans=\sum_{k=3}^nC_n^k ...
- 【弱省胡策】Round #5 Count
[弱省胡策]Round #5 Count 太神仙了. \(DP\)做法 设\(f_{n,m,d,k}\)表示\(n*m\)的矩阵,填入第\(k\)个颜色,并且第\(k\)个颜色最少的一列上有\(d\) ...
- luoguP3769 [CH弱省胡策R2]TATT
luoguP3769 [CH弱省胡策R2]TATT PS:做这题前先切掉 P4148简单题,对于本人这样的juruo更助于理解,当然dalao就当练练手吧 题目大意: 现在有n个四维空间中的点,请求出 ...
- 【ContestHunter】【弱省胡策】【Round0】(A)&【Round1】(B)
DP+容斥原理or补集转化?/KD-Tree 唔……突然发现最早打的两场(打的最烂的两场)没有写记录……(太烂所以不忍记录了吗... 还是把搞出来了的两道题记录一下吧= =勉强算弥补一下缺憾…… Ro ...
- 【ContestHunter】【弱省胡策】【Round3】(C)
容斥原理+Fib Orz HE的神犇们 蒟蒻只能改出来第三题……实在太弱 官方题解:http://pan.baidu.com/s/1o6MdtQq fib的神奇性质……还有解密a[i]的过程……这里就 ...
- 【ContestHunter】【弱省胡策】【Round2】
官方题解:http://wyfcyx.is-programmer.com/posts/95490.html A 目前只会30分的暴力……DP好像很神的样子0.0(听说可以多次随机强行算? //Roun ...
- 【ContestHunter】【弱省胡策】【Round8】
平衡树维护凸壳/三角函数+递推+线段树 官方题解:http://pan.baidu.com/s/1sjQbY8H 洛阳城里春光好 题目大意:(其实出题人已经写的很简短了……直接copy的-_-.sor ...
- 【ContestHunter】【弱省胡策】【Round6】
KMP/DP+树链剖分+线段树/暴力 今天考的真是……大起大落…… String QwQ题意理解又出错了……(还是说一开始理解了,后来自己又忘了为什么是这样了?) 反正最后的结果就是……我当成:后面每 ...
- 【ContestHunter】【弱省胡策】【Round5】
反演+FFT+构造+DP 写了这么多tag,其实我一个也不会 A 第一题是反演……数据范围10W,看着就有种要用FFT等神奇算法的感觉……然而蒟蒻并不会推公式,只好写了20+10分的暴力,然而特判30 ...
随机推荐
- java文件压缩与解压
感谢“zlex.dongliang@gmail.com”.主要代码如下: import java.io.BufferedInputStream; import java.io.File; import ...
- 010.MySQL-Keepalived搭配脚本04
vim /etc/keepalived/check_MySQL.sh #!/bin/bash pkill keepalived
- canvas版《俄罗斯方块》
试玩(没有考虑兼容低版本浏览器): See the Pen Canvas俄罗斯方块 by 王美建 (@wangmeijian) on CodePen. ************************ ...
- jquery 点击页面流畅弹出预定文字
js代码: <script src="https://cdn.bootcss.com/jquery/2.2.1/jquery.min.js"></script&g ...
- BZOJ.1031.[JSOI2007]字符加密(后缀数组)
题目链接 环可以拆成链:对字符串排序能想到后缀数组. 完了.输出时忽略长度不足n的串,输出s[sa[i]+n-1],即排名为i的字符串的末尾. //4140kb 744ms #include < ...
- FireDAC 下的 Sqlite [2] - 第一个例子
为了方便测试, 我把官方提供的 C:\Users\Public\Documents\Embarcadero\Studio\14.0\Samples\data\FDDemo.sdb 复制了一份到 C:\ ...
- Struts2 高危漏洞修复方案 (S2-016/S2-017)
近期Struts2被曝重要漏洞,此漏洞影响struts2.0-struts2.3所有版本,可直接导致服务器被远程控制从而引起数据泄漏,影响巨大,受影响站点以电商.银行.门户.政府居多. 官方描述:S2 ...
- LPC43xx State Configurable Timer : SCT
- 百度地图api---实现新建地图
调用这个函数 function refresh() { history.go(0); } 实现了地图新建
- 华为正在力挺的NB-IoT是什么鬼! - 全文
NB-IoT,Niubility Internet of Thing,即牛掰的物联网技术. 关于物联网,小编想从2款很有趣的应用说起. 这不是在播限制级.这是Nake Labs推出的3D健身镜,这款智 ...