cf 755D. PolandBall and Polygon
题意:把一个多边形往里面连对角线,然后问每次添加多边形被划分为几个部分
产生的部分就是新加对角线与原有对角线相交条数+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的更多相关文章
- codeforces 755D. PolandBall and Polygon
D. PolandBall and Polygon time limit per test 4 seconds memory limit per test 256 megabytes input st ...
- codeforces 755D. PolandBall and Polygon(线段树+思维)
题目链接:http://codeforces.com/contest/755/problem/D 题意:一个n边形,从1号点开始,每次走到x+k的位置如果x+k>n则到x+k-n的位置,问每次留 ...
- CodeForces 755D PolandBall and Polygon ——(xjbg)
每次连线,起点和终点之间,每一个被点亮的点,这些点都能连出去两条线,因此可以增加的块数+2(1这个点除外,因为只有连出的点没有连进的点),计算起点和终点之间有几个点被点亮即可,然后1这个点特判一下.感 ...
- 【codeforces 755D】PolandBall and Polygon
time limit per test4 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- Codeforces 755D:PolandBall and Polygon(思维+线段树)
http://codeforces.com/problemset/problem/755/D 题意:给出一个n正多边形,还有k,一开始从1出发,向第 1 + k 个点连一条边,然后以此类推,直到走完 ...
- D. PolandBall and Polygon BIT + 欧拉公式
http://codeforces.com/contest/755/problem/D // 我也觉得非平面图不能用欧拉公式,但是也能过,不知道为什么.求大佬留言. 这题其实就是平面图,因为它有很多个 ...
- 【树状数组】Codeforces Round #755 D. PolandBall and Polygon
http://codeforces.com/problemset/problem/755/D 每次新画一条对角线的时候,考虑其跨越了几条原有的对角线. 可以用树状数组区间修改点查询来维护多边形的顶点. ...
- CF EC 87 div2 1354 C2 Not So Simple Polygon Embedding 计算几何 结论
LINK:Not So Simple Polygon Embedding 搞了好久终于搞会了. 错误原因 没找到合适算边长的方法 要么就是边长算的时候算错了. 几何学的太差了 最后虽然把十边形的和六边 ...
- 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 ...
随机推荐
- 解决modelsim破解在win10下无法生成license
显示没有找到mgls.dll,此时,这个教程能够帮助你. 1.右击搜索结果cmd,选择以管理员身份运行 2. 打开win64(进入安装目录的win64),也就是两个破解文件所在的路径,输入cd win ...
- Centos7 下vmware NAT模式配置网络连接与DNS
NAT模式配置网络 1.首先查看NAT模式下的网络 从这边可以知道我的vmware下的nat模式的网络是192.168.109.*网段 上图这个网段也可以修改为别的网段 2.NAT模式下的网关 3.配 ...
- 整合Spring时Service层为什么不做全局包扫描详解
合Spring时Service层为什么不做全局包扫描详解 一.Spring和SpringMVC的父子容器关系 1.讲问题之前要先明白一个关系 一般来说,我们在整合Spring和SpringMVC这两个 ...
- JuJu团队12月27号工作汇报
JuJu团队12月27号工作汇报 JuJu Scrum 团队成员 今日工作 剩余任务 困难 飞飞 完成data processing 待安排 无 婷婷 调试代码 提升acc 无 恩升 修正eval ...
- 【转】R语言主成分分析(PCA)
https://www.cnblogs.com/jin-liang/p/9064020.html 数据的导入 > data=read.csv('F:/R语言工作空间/pca/data.csv') ...
- Java虚拟机05.1(各种环境下jvm的参数如何调整?)
cmd下 eclipse下 tomcat下 cmd下指定jvm参数 在cmd下执行Java程序可以通过如下方式之地需要配置的Java 虚拟机参数: 这里只是指定了对初始为2M,新生代为1M,堆最大值为 ...
- vue :is 属性
为什么使用 :is ?DOM模板解析说明: 当使用DOM作为模板时(例如,将el选项挂载到一个已知的元素上),你会受到HTML的一些限制,因为Vue只有在浏览器解析和标准化HTML后才能获取模板内容. ...
- JDK8中的HashMap实现原理及源码分析
大纲 一.什么是Hash?什么是HashMap? 二.HashMap的内部实现机制 1.HashMap基本元素 ①DEFAULT_INITIAL_CAPACITY&MAXIMUM_CAPACI ...
- 031、Java中偶数偶数的判断方法
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- SpringBoot-属性文件properties形式
SpringBoot-属性文件properties形式 上述使用JavaBean的配置可以实现数据源的配置,但是如果配置文件中的内容需要被多次调用就没那么方便了,所以我们学习新的方法,将Propert ...