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

产生的部分就是新加对角线与原有对角线相交条数+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. 【rabbitmq】Queueingconsumer被废止后老代码如何做的解决方案

    amqp-client 3.x之前的rabbitmq版本有个消费者的写法是借助于Queueingconsumer的: QueueingConsumer consumer = new QueueingC ...

  2. angularJS 获取数据及 排序

  3. 第1节 网站点击流项目(上):4、网站的数据采集,使用flume的taildir实现多个文件的监控采集

    一. 模块开发----数据采集 1. 需求 在网站web流量日志分析这种场景中,对数据采集部分的可靠性.容错能力要求通常不会非常严苛,因此使用通用的flume日志采集框架完全可以满足需求. 2. Fl ...

  4. js - 获取当前年月日

    var date = new Date(); date .getYear(); //获取当前年份(2位) date .getFullYear(); //获取完整的年份(4位) date .getMon ...

  5. 微信小程序自定义组件-下拉框

    这个是网址https://www.cnblogs.com/zjjDaily/p/9548433.html 微信小程序之自定义select下拉选项框组件 知识点:组件,animation,获取当前点击元 ...

  6. 0203 生成mysql的数据库的数据字典

    原理 项目的数据库字典表是一个很重要的文档.通过此文档可以清晰的了解数据表结构及开发者的设计意图. 通常为了方便我都是直接在数据库中建表,然后通过工具导出数据字典. 在Mysql数据库中有一个info ...

  7. 051、Java中使用while循环实现1~100的累加

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  8. PHP: isset与empty的区别

    PHP的isset()函数 一般用来检测变量是否设置 功能:检测变量是否设置 返回值: 若变量不存在则返回 FALSE 若变量存在且其值为NULL,也返回 FALSE 若变量存在且值不为NULL,则返 ...

  9. delphi http请求用到的编码方式

    uses HttpEncode: HttpEncode(AnsiToUtf8('***'))

  10. LeetCode559 N叉树的最大深度

    题目: 思路: 直接递归求解最大深度就可以,这里主要记录一下Java中比较获得两个数中最大值的方法. import java.math.*; class Solution { public int m ...