今天做了一套奇奇怪怪的题。
T1
【题目大意】
规定将一个序列的权值为将其进行冒泡排序的最少交换次数,给定一个序列P,求字典序不大于P的序列的权值之和。
【吐槽】
我在场上写了一个和标算时间复杂度同阶的数位dp+线段树做法,然后。。。就爆栈空间了,50分gg
修改之后是70,后三组丧心病狂卡线段树的常数,蒟蒻只好去膜拜松爷的卡常技巧,硬是从3700ms卡到了1082ms,然而还是超时。。。
正解:把线段树换成树状数组。。。
出题人真是丧心病狂,先卡空间,再卡线段树常数,蒟蒻只能默默地念两句诗“苟......苟富贵,无相忘”
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
const int mod=998244353;
#define FILE "read"
#define MAXN 1000010
#define up(i,j,n) for(int i=j;i<=n;++i)
#define dn(i,j,n) for(int i=j;i>=n;--i)
namespace INIT{
char buf[1<<15],*fs,*ft;
inline char getc(){return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;}
inline int read(){
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) {x=(x<<3)+(x<<1)+ch-'0'; ch=getchar();}
return x*f;
}
}using namespace INIT;
ll ans,f[MAXN],p[MAXN],sum[MAXN];
int n,m,tr[MAXN*8],tag[MAXN*8],a[MAXN];
ll add(ll x,ll v){x+=v;return x>=mod?x-mod:x;}
ll dec(ll x,ll v){x-=v;return x<0?x+mod:x;}
ll mul(ll x,ll y) {return x*y%mod;}
void pre(){
p[0]=1; up(i,1,n) p[i]=mul(p[i-1],i);
up(i,1,n) sum[i]=add(sum[i-1],i);
f[1]=0; up(i,2,n) f[i]=add(mul(f[i-1],i),mul(p[i-1],sum[i-1]));
//up(i,1,n) printf("%lld\n",f[i]);
}
void pushdown(int p,int l,int r){
if(!tag[p]) return;
int temp=tag[p],mid=(l+r)>>1; tag[p]=0;
tag[p<<1]+=temp; tag[p<<1|1]+=temp;
tr[p<<1]+=temp*(mid-l+1); tr[p<<1|1]+=temp*(r-mid);
}
/*void updata(int p,int l,int r,int x,int y,int v){
pushdown(p,l,r);
if(x>r||y<l) return;
if(x<=l&&y>=r) {tag[p]+=v;tr[p]+=(r-l+1)*v;return;}
int mid=(l+r)>>1;
updata(p<<1,l,mid,x,y,v); updata(p<<1|1,mid+1,r,x,y,v);
tr[p]=tr[p<<1]+tr[p<<1|1];
}*/
void updata(int p,int l,int r,int x,int y,int v){
pushdown(p,l,r);
if(l==x&&r==y) {tag[p]+=v;tr[p]+=(r-l+1)*v;return;}
int mid=(l+r)>>1;
if(mid>=y) updata(p<<1,l,mid,x,y,v);
else if(mid<x)updata(p<<1|1,mid+1,r,x,y,v);
else updata(p<<1,l,mid,x,mid,v),updata(p<<1|1,mid+1,r,mid+1,y,v);
}
/*ll find(ll p,ll l,ll r,ll x){
pushdown(p,l,r);
if(x>r||x<l) return 0;
if(l==r) return tr[p];
ll mid=(l+r)>>1;
return find(p<<1,l,mid,x)+find(p<<1|1,mid+1,r,x);
}*/
int find(int p,int l,int r,int x){
pushdown(p,l,r);
if(l==r) return tr[p];
int mid=(l+r)>>1;
if(x<=mid) return find(p<<1,l,mid,x);
else return find(p<<1|1,mid+1,r,x);
}
void build(int p,int l,int r){
if(l>r) return;
if(l==r) {tr[p]=l; return;}
int mid=(l+r)>>1;
build(p<<1,l,mid); build(p<<1|1,mid+1,r);
}
ll dfs(int i){
if(i==1) return 0;
updata(1,1,n,a[i],n,-1);
ll t=dfs(i-1);
updata(1,1,n,a[i],n,1);
ll x=find(1,1,n,a[i]);
ans=add(ans,add(mul(f[i-1],(x-1)),mul(p[i-1],sum[x>2?x-2:0])));
ans=add(ans,mul((t+1),(x-1)));
t=add(t,mul((x-1),p[i-1]));
return t;
}
int main(){
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
int __size__=80<<20;//20MB
char *__p__=(char*)malloc(__size__)+__size__;
__asm__("movl %0, %%esp\n"::"r"(__p__));
n=read(); pre();
up(i,1,n) a[i]=read();
for(int l=1,r=n;l<r;++l,--r) swap(a[l],a[r]);
build(1,1,n); dfs(n);
printf("%lld\n",ans);
printf("%d\n",clock());
return 0;
}
T2、T3
由于写第一题的线段树花了3个小时,卡常数花了剩下的1个小时,然后。。。。。。就没有然后了
虽然最近在学了LCT和主席树后实力有所上涨,但是仍然智商堪忧。如何提高智商,这是一个永恒的问题。
一句话总结:
/*
:Zu
iB@B@i iGM;
i@@B@@@B2 7B@B@B@.
@@@@B@B@B@u iM@B@B@B@BL
B@B@N OB@@@BY F@@@B@BMM@B@O
E@B@B .O@B@B@: :BB@@@B@0U7FB@B@
:@B@B. .@B@B@O YB@B@B@OSYJjuU@B@B
@B@B5 rB@B@B7 u@B@B@BNuYj1UFuuB@B@i
2@@@@ N@@@@M 5B@B@BBkjYU252511JMB@B1
@@B@i :@@@B@ J@B@@@MFLju515151FUJE@B@M
F@B@B @@@B@, iB@B@@B1YJ12F152F1511JPB@B@
@B@B: EB@@@. . .::::.... O@@B@BSLuU51F151F15152u2@B@B
L@@B@ 0B@B@ .:rLuk8MB@B@B@B@B@B@@@B@B@B@B@@@@@B@B@G@@@B@PuY2251F1F151F1F1Fu2B@B@.
B@@@Y @B@BB2MB@B@@@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@B@BMujU52F1F151525151511Y@@@Bi
@B@B @B@@@B@@@B@@@B@@@BBZNuu7ri:,,.. B@B@0kN88MB@BEYu252525151F252F1F15UJM@B@J
JB@B@ 0@B@@BE17i,. @B@BUvJYJLJjUj125151F152525151F1F55YO@@BX
B@B@v .B@B@jUU5252221212F2515251F15252F1F2JE@B@O
@B@B. @B@BFJF1F2F2F2F2515151F152F251F5515YEB@B@
.B@@@ B@B@ELU52F152F251525151515252F1F2F2JX@B@B
v@B@B vB@B@uj255F15151F2F15252515151F1S15JNB@B@
PB@BX @B@BBYu2F1F1F2F15152F2515151F152F1jP@B@B
B@B@v @B@BBjJu5251S25151F15251515151F15JNB@@B
BB@@: @B@B@XYL2UF151F15151F2F251F2F251j0@B@B
B@B@i @B@B@BPJJJU251111152525152121Uuv1B@B@B.
FB@B@B vB@B@B@ZSjjLujUu1U1u2u2uuJJLj2XZ@@@B@@:
@B@B@u v@@@B@B@MOXkuujuJjJuu55qEMB@@@B@B@B@Bi
:@B@B@ :P@B@B@@@B@B@B@B@B@B@@@B@B@B@U L@B@Bi
r@B@BE .vO@@B@B@B@B@B@B@B@B@MU: Y@B@B,
r@B@Bu ,rL52F15Uv;: k@B@B
,@@@BJ :BB1 B@B@M
. @B@BP .5X, @B@B@Bv B@B@:
r@B@@@@Mu: BB@B@ .B@B@ .8B@B@B@BF, uB@B@
7B@B@B@@@B@B8B@@@ 7B@B@M iMB@B@@@B@Xr. @B@B:
.:iJZ@B@B@B@@@k :5@B@B@X ,SB@B@B@B@B@BPYi.. P@B@Z
.rB@B@B@BMi r@BONE0EM@B@B@B@B@: i5@B@@@B@B@B@@@B@ :B@B@
@B@B@B@B@O @B@B@B@@@@@B@@@5. :LEB@B@B@B@B: @B@B
iB@B@ iB@B7 :ZM@B@B@BO57, .:i B@B@ii2OOk
M@B@2 @B@B@B@B@@@
@B@B. .jOM07 .UB@B@B@B@@@B@r
.B@B@ MB@B@@@B7 M@B@B@B@Bi
r@B@B 7O@@BJ SB@B@B@B@B. PB@BP@@B@
uB@BO @@@B@B@Br 8@@@B@B@B@: @B@B
S@@@F @B@B@B@B@@ .B@B@B@B@B ZB@Bk
SB@B1 B@B@B@B@@@ 5@B@B@7 B@B@.
v@B@k .B@@@@@B@r 2@B@B
vB@B@:r7; vBB@BF @B@B:
:71Z@B@B@B@B@B@B@BM 8B@BE
v@B@B@B@@@B@B@@@B@B@B@r @B@B@B@@@:
@B@B@B@BMFJi: MB@BJ .B@B@B@B@@@B@Ov
.7: :@B@@ ;@@B@B@B@B@@@@2
B@B@v Z@@@B ,LMB@B@B@r
rB@B@ B@B@B .EB@B@
@B@BM .B@B@B .M@j
@B@B1 rB@@@M
:@B@Bj i8B@B@B@B@B@Bu GB@B@F
i@B@BX M@@@B@@@B@B@B@B@ :@@@B@i
i@B@B@ 7B@BFri:,:ivOB@X ,B@B@BM
.@B@B@L ,BB@@@Bi
qB@B@@7 jB@B@B@L
:B@B@B@2. JB@@@B@Bv
:@B@B@B@u. ,FB@B@B@BP,
.S@B@B@B@0r :jBB@B@B@@@B.
:P@B@B@B@BOv, .:7kO@B@B@B@@@B@B@@@
.vBB@B@B@@@B@ONjr:, ,:rYXE@B@@@@@@@B@@@B@MEuri@@@B.
J@B@B@B@B@B@@@@@B@B@B@@BM8ENFPFUuUuuuU5XFP0GOMB@B@B@B@B@@@B@B@B@B@B@BMX2vr::::,iB@B@
rB@BM71NMB@B@B@@@B@@@@@B@B@B@B@B@@@B@@@B@@@B@B@B@B@@@B@@@B@BBZqULri:::::::;;rr:r@B@B.
u@B@E.,::::iirvLJFFN0OOMM@B@BMO@B@B@@@B@B@@@@@B@MuL2JY77ii:::::::ii;irrrr7r7rr:iB@B@.
1B@BZ,;rr;;ii:i::::::::::::,.:Z@@B@B@quLYJqB@B@B@q: ::::ii;;rrrr7rrr7r7rrii::::u@B@B.
F@@@P.::i;rrrrrrrrrr;r;r;ri,7@@@@@u. L@@B@BL,rr7r7r7r7rrrrrrii::::iLSBB@B@B@:
OB@B@EF7;::,::ii;ir;rrrrr;:7@B@BO ..... N@@@BL:rrrrri;ii:::::irLF8B@B@B@B@B@Bv
Z@B@@@B@B@MZ5J7ri:::,:::::,@B@@E .,,:,,.. N@B@B,.:::::i;7j2NO@B@B@B@B@B@E:F@B@P
@B@BBB@@@B@B@B@@@B@MOqX1u7UB@B@ .:,,,,.. ,. B@B@k1NOM@B@B@@@B@B@B@B@BSi iB@B@
iB@B@ iYG@@@@B@@@B@B@@@B@B@B@M ,,:,,., rB@B@5. ZB@B@B@B@@@B@@@B@BBF7, @B@B
B@B@u :rjSO@@B@B@B@B@B@ .,,,.,. r@@@@@B8M@B@B@B@BOFu;:. B@B@i
S@B@B @B@@r ....... :5@B@B@B@B 5B@BB
L@@@B, 7@B@Bi . . . .B@B@Bu @B@@.
G@B@B; q@B@Bk 7@B@BM G@B@@
B@B@B: L@B@B@O7. .rOB@B@Bu B@B@B
qB@M ZB@B@@@B@@@B@B@B@Z .B@@@B
7MB@B@B@B@B@Mv S@8.
,:7ri.
... . .. ..
:7FB2 B@B r. :@B. L@@ @B ,.,.,..
.@@@@B@B@B@@@B OB@ L@BO j@@ B@B@B@B@B@B@@@B@ 0PXSXSSJMB@L5FXSSuNB@u5SXSXXZi ,,,,., iB@B@@@@ B@B@B@B@@@B@M
@BOurE@B F@B M@@M: O@i :::,:,,.. :@B@O @@@@B@@@B@B@B@B@B@@@B@B@@@B@B2 @B@B@B .@E .B@ .,,.... @BL..
rBB rB@ B@Y vEFL@BNuF2uj u@BX .B5 F5 B@ B@ BE O@. q@
v@B :@@ E@B@B@B@B@@@ XB@P k1jujjSMG0qPqMB@BBB@B@B@v @B B@ @0 @B iLUUuY. ZB,
@B@B@B@B@B@B@@@B@B@B@B@B@B@B@B L@u .@B @@@ @B@B@BBOMOM@E2PXqkLi:vi,. @@ B@ Bq 0B, B@@@@@Y N@:
ii::,.S@B .:,:,.:@@i.::,. ,i @B. JBq 0@1 iJ r@Y @@ @B @B @1 B@ MB .B7 NB:
7B@ @@ :@7 :@@ B@i.:::::: MBO ,::::i MB@ B@O E@B7 B@ B@ Bk @B: O@ ,@r k@,
r@M r5 @Bu 5@Bk M@v @B B@B@B@B@B@@@B@B@B@: 5B@. BE r@@F @B @B @E @B OB. :B7 PB:
,:MB@B@B@B@. U@B .@@@. .@B PB8 E@q ;i .O; J B@ B@ B8 :@q E@ .@r k@,
B@B@@@B@BPu7, B@ uB@5 v@@S B@ E@E UEkk5277J1YvrBB@r7LYrLUFFkkqE: @B MB @Z B@ PBi YBv NB:
0Mui. LBB MB@BB 7B@B@: OBO @B@B@B@B@O@B@B@B@B@O@B@B@@@B@; @@ @@ .@0 @B P@B@B@v N@:
v@B qB@Br iXi B@BP 8@O 7@@ iBX @Bi @B@B@B @B7v@BG @B: OB:
JB@ JB@B51@B M@@ LB@:rB@Bi GBM ,B@BL r@8 vB@8, .@@ 5@ .@Gq@Bv , Z@:
L@B PB@B@J M@B. @@7 i@B@ 0@7 B@M iO@@@r YBB r@B@BY. :. :@q MB:
G@N5S@BB Z@S. P@BZ.uB@ ,B@B7 UB@B@@@B: OB@@@5 j@B L@B@B@, iBB FMq1OB@
2B@B@MJ :@B@B@: Sj NFXF5i ,@u qB@ .Y. i@O Y@B@BZ.
.. :Ur
k :..,, r ii v: ir .L E ..,,:,iivv :.. ,F : u .:iu1
.u5BjL:i@@rB@ @k :Bi 7@Bu. uMiNBuL ,@SSuEB5qZUO8 :qN1uM@7777: :v@B i2X@vS@ Bv @ 7B7v7i:
.@ ,B UB v@: BX Li O O7u 2 O. 28 .Br,S :B. r7vvrE@7vjLL :B Yiv@:7@j BqiB 7B
:LuB27i8 uG .B@r..:ii,,F@: JO1@ 0;F B7@: Lr rOui k. M1::2@:ii@ ,BqF i7@,78 ON.. rB@Y7Z@
2 @r NY55E: r:@B77rBr :2@.v1ik .@., uM ,OG:Bq Br @5::2@,:iB, ,, @ :;vBiii @8ir vJY7 Mu
B 8E7 B 0O .@ @i :@B7 Mi 5B5: .P: i,BF j i2 5Yi:F@:ii8 .B7G 77J@rvJ: B7 @ P7 BPG
:@k@. @v7rO7 2B B B, i@ @ iJujLr@G77uJU .7r7iNBi;7rr uBL :.:B .. .@ B B BBJ
@i 1ZXqkEq0X0 7@P qk0B5 BE 7@ B B7 ZXF2U8@j11k0r YB.rSuuuGjUkX 1P @PXv@i X@:
.,. .
*/