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

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

  1. #include<bits/stdc++.h>
  2. #define LL long long
  3. #define N 100005
  4. #define lowbit(x) x&(-x)
  5. using namespace std;
  6. inline LL ra()
  7. {
  8. LL x=,f=; char ch=getchar();
  9. while (ch<'' || ch>'') {if (ch=='-') f=-; ch=getchar();}
  10. while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
  11. return x*f;
  12. }
  13. LL n,k;
  14. struct node{
  15. LL tag,sum,l,r;
  16. }t[N<<];
  17. LL T,ans=;
  18. void build(LL k, LL l, LL r)
  19. {
  20. t[k].l=l; t[k].r=r;
  21. if (l==r) return;
  22. LL mid=l+r>>;
  23. build(k<<,l,mid); build(k<<|,mid+,r);
  24. }
  25. void update(LL k)
  26. {
  27. t[k].sum=t[k<<].sum+t[k<<|].sum;
  28. }
  29. void pushdown(LL k)
  30. {
  31. LL tmp=t[k].tag; t[k].tag=;
  32. t[k<<].tag+=tmp; t[k<<|].tag+=tmp;
  33. t[k<<].sum+=(t[k<<].r-t[k<<].l+)*tmp;
  34. t[k<<|].sum+=(t[k<<|].r-t[k<<|].l+)*tmp;
  35. }
  36. void change(LL k, LL x, LL y, LL val)
  37. {
  38. if (x>y || y>n) return;
  39. LL l=t[k].l,r=t[k].r;
  40. if (l==x && y==r)
  41. {
  42. t[k].tag+=val;
  43. t[k].sum+=(r-l+)*val;
  44. return;
  45. }
  46. if (t[k].tag) pushdown(k);
  47. LL mid=l+r>>;
  48. if (y<=mid) change(k<<,x,y,val);
  49. else if (x>mid) change(k<<|,x,y,val);
  50. else{
  51. change(k<<,x,mid,val);
  52. change(k<<|,mid+,y,val);
  53. }
  54. update(k);
  55. }
  56. LL ask(LL k, LL x, LL y)
  57. {
  58. if (x>y || y>n) return ;
  59. LL l=t[k].l,r=t[k].r;
  60. if (x==l && y==r) return t[k].sum;
  61. if (t[k].tag) pushdown(k);
  62. LL mid=l+r>>;
  63. if (y<=mid) return ask(k<<,x,y);
  64. else if (x>mid) return ask(k<<|,x,y);
  65. else return ask(k<<,x,mid)+ask(k<<|,mid+,y);
  66. }
  67. int main()
  68. {
  69. LL last=,aim;
  70. T=n=ra(); k=ra();
  71. if (k>n/) k=n-k;
  72. build(,,n);
  73. while (T--)
  74. {
  75. LL aim=(last+k-)%n+;
  76. if (aim>last)
  77. {
  78. ans+=ask(,last+,aim-)+;
  79. change(,last,last,);
  80. change(,aim,aim,);
  81. }
  82. else
  83. {
  84. ans+=ask(,last+,n)+ask(,,aim-)+;
  85. change(,last,last,); change(,aim,aim,);
  86. }
  87. last=aim;
  88. printf("%I64d ",ans);
  89. // cout<<ask(2); system("pause");
  90. }
  91. return ;
  92. }

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. 解决modelsim破解在win10下无法生成license

    显示没有找到mgls.dll,此时,这个教程能够帮助你. 1.右击搜索结果cmd,选择以管理员身份运行 2. 打开win64(进入安装目录的win64),也就是两个破解文件所在的路径,输入cd win ...

  2. Centos7 下vmware NAT模式配置网络连接与DNS

    NAT模式配置网络 1.首先查看NAT模式下的网络 从这边可以知道我的vmware下的nat模式的网络是192.168.109.*网段 上图这个网段也可以修改为别的网段 2.NAT模式下的网关 3.配 ...

  3. 整合Spring时Service层为什么不做全局包扫描详解

    合Spring时Service层为什么不做全局包扫描详解 一.Spring和SpringMVC的父子容器关系 1.讲问题之前要先明白一个关系 一般来说,我们在整合Spring和SpringMVC这两个 ...

  4. JuJu团队12月27号工作汇报

    JuJu团队12月27号工作汇报 JuJu   Scrum 团队成员 今日工作 剩余任务 困难 飞飞 完成data processing 待安排 无 婷婷 调试代码 提升acc 无 恩升 修正eval ...

  5. 【转】R语言主成分分析(PCA)

    https://www.cnblogs.com/jin-liang/p/9064020.html 数据的导入 > data=read.csv('F:/R语言工作空间/pca/data.csv') ...

  6. Java虚拟机05.1(各种环境下jvm的参数如何调整?)

    cmd下 eclipse下 tomcat下 cmd下指定jvm参数 在cmd下执行Java程序可以通过如下方式之地需要配置的Java 虚拟机参数: 这里只是指定了对初始为2M,新生代为1M,堆最大值为 ...

  7. vue :is 属性

    为什么使用 :is ?DOM模板解析说明: 当使用DOM作为模板时(例如,将el选项挂载到一个已知的元素上),你会受到HTML的一些限制,因为Vue只有在浏览器解析和标准化HTML后才能获取模板内容. ...

  8. JDK8中的HashMap实现原理及源码分析

    大纲 一.什么是Hash?什么是HashMap? 二.HashMap的内部实现机制 1.HashMap基本元素 ①DEFAULT_INITIAL_CAPACITY&MAXIMUM_CAPACI ...

  9. 031、Java中偶数偶数的判断方法

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

  10. SpringBoot-属性文件properties形式

    SpringBoot-属性文件properties形式 上述使用JavaBean的配置可以实现数据源的配置,但是如果配置文件中的内容需要被多次调用就没那么方便了,所以我们学习新的方法,将Propert ...