您的位置:首页 > 其它

Codeforces Round #292 (Div. 2)

2015-02-19 13:47 267 查看
http://codeforces.com/contest/515

ABC略= =

D:贪心,把度数为1的点去掉,然后就没了,我果弱。。。。。。。。

E:水笔线段树,没开long long结果fst了啊啊啊啊啊QAQ

C题hack掉两个啦啦啦~~~

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
#define rep(i,l,r) for(int i=(l),_=(r);i<=_;i++)
#define per(i,r,l) for(int i=(r),_=(l);i>=_;i--)
#define MS(arr,x) memset(arr,x,sizeof(arr))
#define INE(i,u) for(int i=head[u];~i;i=e[i].next)
#define LL long long
inline const int read()
{int r=0,k=1;char c=getchar();for(;c<'0'||c>'9';c=getchar())if(c=='-')k=-1;
for(;c>='0'&&c<='9';c=getchar())r=r*10+c-'0';return k*r;}
////////////////////////////////////////////////
int n,m;
int d[200010];
int h[200010];
struct data
{
LL s,sr,sl,dis;
}dat[800010];
////////////////////////////////////////////////
data unio(const data &a,const data &b,int mid)
{
data res;
res.s=max(a.s,b.s);
res.s=max(res.s,a.sr+b.sl+d[mid]);
res.sr=max(b.sr,b.dis+a.sr+d[mid]);
res.sl=max(a.sl,a.dis+b.sl+d[mid]);
res.dis=a.dis+b.dis+d[mid];
return res;
}
#define LS o<<1,L,mid
#define RS o<<1|1,mid+1,R
void build(int o,int L,int R)
{
if(L==R)
{
dat[o]=(data){2*h[L],2*h[L],2*h[L],0};
return;
}
int mid=L+R>>1;
build(LS); build(RS);
dat[o]=unio(dat[o<<1],dat[o<<1|1],mid);
}
data query(int l,int r,int o,int L,int R)
{
if(l<=L && R<=r) return dat[o];
int mid=L+R>>1;
if(r<=mid) return query(l,r,LS);
else if(l>mid) return query(l,r,RS);
else return unio(query(l,mid,LS),query(mid+1,r,RS),mid);
}
////////////////////////////////////////////////
void input()
{
n=read(); m=read();
rep(i,1,n) d[i]=d[n+i]=read();
rep(i,1,n) h[i]=h[n+i]=read();
}
void solve()
{
build(1,1,2*n);
rep(i,1,m)
{
int l=read(),r=read();
if(l<=r)
{
r++; l--;
l+=n;
swap(l,r);
}
else
{
swap(l,r);
l++; r--;
}
printf("%I64d\n",query(l,r,1,1,2*n).s);
}
}
////////////////////////////////////////////////
int main()
{
freopen("E.in","r",stdin); freopen("E.out","w",stdout);
input(),solve();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: