题意:把一个多边形往里面连对角线,然后问每次添加多边形被划分为几个部分

产生的部分就是新加对角线与原有对角线相交条数+1,用线段树(大雾)维护一下。

 #include<bits/stdc++.h>
#define LL long long
#define N 100005
#define lowbit(x) x&(-x)
using namespace std;
inline LL ra()
{
LL x=,f=; char ch=getchar();
while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
return x*f;
}
LL n,k;
struct node{
LL tag,sum,l,r;
}t[N<<];
LL T,ans=;
void build(LL k, LL l, LL r)
{
t[k].l=l; t[k].r=r;
if (l==r) return;
LL mid=l+r>>;
build(k<<,l,mid); build(k<<|,mid+,r);
}
void update(LL k)
{
t[k].sum=t[k<<].sum+t[k<<|].sum;
}
void pushdown(LL k)
{
LL tmp=t[k].tag; t[k].tag=;
t[k<<].tag+=tmp; t[k<<|].tag+=tmp;
t[k<<].sum+=(t[k<<].r-t[k<<].l+)*tmp;
t[k<<|].sum+=(t[k<<|].r-t[k<<|].l+)*tmp;
}
void change(LL k, LL x, LL y, LL val)
{
if (x>y || y>n) return;
LL l=t[k].l,r=t[k].r;
if (l==x && y==r)
{
t[k].tag+=val;
t[k].sum+=(r-l+)*val;
return;
}
if (t[k].tag) pushdown(k);
LL mid=l+r>>;
if (y<=mid) change(k<<,x,y,val);
else if (x>mid) change(k<<|,x,y,val);
else{
change(k<<,x,mid,val);
change(k<<|,mid+,y,val);
}
update(k);
}
LL ask(LL k, LL x, LL y)
{
if (x>y || y>n) return ;
LL l=t[k].l,r=t[k].r;
if (x==l && y==r) return t[k].sum;
if (t[k].tag) pushdown(k);
LL mid=l+r>>;
if (y<=mid) return ask(k<<,x,y);
else if (x>mid) return ask(k<<|,x,y);
else return ask(k<<,x,mid)+ask(k<<|,mid+,y);
}
int main()
{
LL last=,aim;
T=n=ra(); k=ra();
if (k>n/) k=n-k;
build(,,n);
while (T--)
{
LL aim=(last+k-)%n+;
if (aim>last)
{
ans+=ask(,last+,aim-)+;
change(,last,last,);
change(,aim,aim,);
}
else
{
ans+=ask(,last+,n)+ask(,,aim-)+;
change(,last,last,); change(,aim,aim,);
}
last=aim;
printf("%I64d ",ans);
// cout<<ask(2); system("pause");
}
return ;
}

cf 755D. PolandBall and Polygon的更多相关文章

  1. codeforces 755D. PolandBall and Polygon

    D. PolandBall and Polygon time limit per test 4 seconds memory limit per test 256 megabytes input st ...

  2. codeforces 755D. PolandBall and Polygon(线段树+思维)

    题目链接:http://codeforces.com/contest/755/problem/D 题意:一个n边形,从1号点开始,每次走到x+k的位置如果x+k>n则到x+k-n的位置,问每次留 ...

  3. CodeForces 755D PolandBall and Polygon ——(xjbg)

    每次连线,起点和终点之间,每一个被点亮的点,这些点都能连出去两条线,因此可以增加的块数+2(1这个点除外,因为只有连出的点没有连进的点),计算起点和终点之间有几个点被点亮即可,然后1这个点特判一下.感 ...

  4. 【codeforces 755D】PolandBall and Polygon

    time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  5. Codeforces 755D:PolandBall and Polygon(思维+线段树)

    http://codeforces.com/problemset/problem/755/D 题意:给出一个n正多边形,还有k,一开始从1出发,向第 1 + k 个点连一条边,然后以此类推,直到走完 ...

  6. D. PolandBall and Polygon BIT + 欧拉公式

    http://codeforces.com/contest/755/problem/D // 我也觉得非平面图不能用欧拉公式,但是也能过,不知道为什么.求大佬留言. 这题其实就是平面图,因为它有很多个 ...

  7. 【树状数组】Codeforces Round #755 D. PolandBall and Polygon

    http://codeforces.com/problemset/problem/755/D 每次新画一条对角线的时候,考虑其跨越了几条原有的对角线. 可以用树状数组区间修改点查询来维护多边形的顶点. ...

  8. CF EC 87 div2 1354 C2 Not So Simple Polygon Embedding 计算几何 结论

    LINK:Not So Simple Polygon Embedding 搞了好久终于搞会了. 错误原因 没找到合适算边长的方法 要么就是边长算的时候算错了. 几何学的太差了 最后虽然把十边形的和六边 ...

  9. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

随机推荐

  1. ABC154 E - Almost Everywhere Zero

    数位DP模板,记忆化+限制即可 #include<bits/stdc++.h> using namespace std; #define lowbit(x) ((x)&(-x)) ...

  2. 「NOIP2011」聪明的质监员

    传送门 Luogu 解题思路 第一眼肯定是没什么思路的 dalao勿喷,但我们仔细看一看式子就会发现 \(Y\) 是随着 \(W\) 的变大而变小的. 所以 \(Y\) 随 \(W\) 的变化是单调的 ...

  3. php注册与登录

    一.注册 1.注册界面 <!DOCTYPE html><html lang="en"><head> <meta charset=" ...

  4. Arm-Linux 移植 Ubuntu

    前言: 这篇文章介绍如何构建一个完整基于ARM的Ubuntu系统. 由于改文章当初写的时候是发表在国外产品论坛上面,故保留了原文内容. 使用到的硬件平台:Geekbox 补充说明: 虽然Geekbox ...

  5. POJ 3579:Median 差值的中位数

    Median Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4680   Accepted: 1452 Descriptio ...

  6. XmlBeanDefinitionReader

  7. docker学习笔记-04:docker容器数据卷

    一.容器数据卷是什么 1.为了保存docker容器运行时产生的数据,做数据的持久化,我们需要用到容器数据卷.因为如果不通过docker commit 生成新的镜像,那么当容器被删除时,数据自然就没有了 ...

  8. prepareBeanFactory方法源码跟踪

    看这篇文章之前可以先了解之前的跟踪流程,https://www.jianshu.com/p/4934233f0ead 代码过宽,可以shift + 鼠标滚轮 左右滑动查看 AbstractApplic ...

  9. java.io.IOException: Error: JSP Buffer overflow

    错误 jsp页面报错如下: Stacktrace: org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java ...

  10. apk安装失败的25中原因

    名称 Value 描述 INSTALL_FAILED_ALREADY_EXISTS -1 已经安装 INSTALL_FAILED_INVALID_APK -2 APK文件是无效的 INSTALL_FA ...