2020 China Collegiate Programming Contest - Mianyang Site J. Joy of Handcraft(线段树模板)
Posted issue是fw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020 China Collegiate Programming Contest - Mianyang Site J. Joy of Handcraft(线段树模板)相关的知识,希望对你有一定的参考价值。
其实暴力一下就好了
如果 t i t_i ti相同,显然只需要最大的那个 x i x_i xi即可
那么对于每个 t i t_i ti,我们暴力去修改每一段值,区间修改使用线段树即可
最坏情况下, n = 1 0 5 , m = 1 0 5 n=10^5,m=10^5 n=105,m=105
且所有 t i t_i ti互不相同,那么有 m 2 + m 4 + m 6 . . . \\frac{m}{2}+\\frac{m}{4}+\\frac{m}{6}... 2m+4m+6m...个区间
根据调和级数的性质,区间个数一定小于 m l o g ( m ) mlog(m) mlog(m)
线段树单词修改的复杂度也是 l o g log log的
总体复杂度是 m l o g 2 ( m ) mlog^2 (m) mlog2(m),实际远远跑不满,因为大部分区间小于 m m m
#include <bits/stdc++.h>
using namespace std;
const int maxn = 4e6+10;
#define mid (l+r>>1)
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson ls,l,mid
#define rson rs,mid+1,r
int t[maxn],x[maxn],ans[maxn],mx[maxn],n,m;
int laz[maxn];
void pushdown(int rt,int l,int r)
{
if( !laz[rt] ) return;
laz[ls] = max( laz[ls],laz[rt] ), laz[rs] = max( laz[rs],laz[rt] );
laz[rt] = 0;
}
void insert(int rt,int l,int r,int L,int R,int val)
{
if( l>R || r<L ) return;
if( l>=L && r<=R ){ laz[rt] = max(laz[rt],val ); return; }
insert( lson,L,R,val ); insert( rson,L,R,val );
}
void get(int rt,int l,int r)
{
if( l==r ){ ans[l] = laz[rt]; return; }
pushdown(rt,l,r);
get( lson ); get( rson );
}
int main()
{
int T,casenum = 0; cin >> T;
while( T-- )
{
cin >> n >> m;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&t[i],&x[i]);
t[i] = min( t[i],m );
mx[t[i]] = max( mx[t[i]],x[i] );
}
for(int i=1;i<=m;i++)
{
for(int l=1,r=i; ;l+=2*i,r+=2*i)
{
if( l>m ) break;
if( r>m ) r = m;
insert(1,1,m,l,r,mx[i] );
if( r==m ) break;
}
}
get(1,1,m);
printf("Case #%d: ",++casenum);
for(int i=1;i<=m;i++) printf("%d%c",ans[i],i==m?'\\n':' ');
for(int i=1;i<=n;i++) mx[t[i]] = 0;
for(int i=1;i<=4*m;i++) laz[i] = ans[i] = 0;
}
}
以上是关于2020 China Collegiate Programming Contest - Mianyang Site J. Joy of Handcraft(线段树模板)的主要内容,如果未能解决你的问题,请参考以下文章
2020 China Collegiate Programming Contest, Weihai Site L. Clock Master(分组背包)
2020 China Collegiate Qinhuangdao Site F. Friendly Group(思维+边双连通)
2020 China Collegiate Programming Contest - Mianyang Site J. Joy of Handcraft(线段树模板)
2020 China Collegiate Programming Contest, Weihai Site C. Rencontre(lca+树形dp)
The 2019 China Collegiate Programming Contest Harbin Site
The 2019 China Collegiate Programming Contest Harbin Site F. Fixing Banners