Codeforces755D (segment tree,implementation)
来源:互联网 发布:单片机电源插口 编辑:程序博客网 时间:2024/05/16 07:24
凸多边形切割问题:线段树模拟可以做
- 优弧与劣弧分两种情况考虑
- 最后结束点一定是起始点
- 线段树tree_add需要四个参数,tree_sum需要五个参数
- 线段树所用空间不超maxn*4
#include <cstdio>#include <cstring>using namespace std;#define maxn 1000005int node[maxn];long long tree[maxn*4];void tree_add(int now,int l,int r,int key){ tree[now]++; if(l==r) return ; int mid = (l+r)/2; if(key>mid) tree_add(now*2+2,mid+1,r,key); else tree_add(now*2+1,l,mid,key);}long long tree_sum(int now,int l,int r,int keyl,int keyr){ if(l==keyl&&r==keyr) return tree[now]; int mid = (l+r)/2; if(keyl>mid) return tree_sum(now*2+2,mid+1,r,keyl,keyr); else if(keyr<=mid) return tree_sum(now*2+1,l,mid,keyl,keyr); else return tree_sum(now*2+1,l,mid,keyl,mid)+tree_sum(now*2+2,mid+1,r,mid+1,keyr);}int main(){ memset(node,0,sizeof(node)); memset(tree,0,sizeof(tree)); int N,k; scanf("%d%d",&N,&k); long long ans = 1; int loc = 0; int nloc = loc+k; node[loc] = 1; while(node[nloc]==0) { node[nloc] = 1; tree_add(0,0,N-1,loc); tree_add(0,0,N-1,nloc); ans++; if(nloc<loc) { if(k>N/2) ans+=tree_sum(0,0,N-1,nloc+1,loc-1); else { ans+=tree_sum(0,0,N-1,0,nloc-1); if(loc!=N-1) ans+=tree_sum(0,0,N-1,loc+1,N-1); } }else if(k>N/2){ if(loc!=0) ans += tree_sum(0,0,N-1,0,loc-1); if(nloc!=N-1) ans+=tree_sum(0,0,N-1,nloc+1,N-1); }else ans+=tree_sum(0,0,N-1,loc+1,nloc-1); loc = nloc; nloc = (nloc+k)%N; printf("%I64d ",ans); } ans++; if(k>N/2) ans+=tree_sum(0,0,N-1,1,loc-1); else ans+=tree_sum(0,0,N-1,loc+1,N-1); printf("%I64d\n",ans); return 0;}
0 0
- Codeforces755D (segment tree,implementation)
- 线段树(segment tree)
- 线段树(Segment Tree)
- 线段树(segment tree)
- 区间树(segment tree)
- segment tree(线段树)
- Segment Tree(线段树)
- 线段树(segment tree)
- Segment tree
- Segment Tree
- Segment Tree
- segment Tree
- Segment Tree
- Segment Tree
- 【poj2828】Buy Tickets (segment tree+贪心)
- 线段树(Segment Tree)简介
- Binary Search Tree implementation
- 线段树(segment tree)
- web开发_虚拟路径
- 屏幕适配和Android单位总结
- webpack使用--loader和插件
- 点击table的td单元格出现dialog弹窗,获取值后将值放回td单元格
- 怎样获取apk的package 和 activity
- Codeforces755D (segment tree,implementation)
- STM32L431之SPI时钟过高导致无法通信
- windows 拨号和linux拨号
- 【POJ】3281 Dining
- 投简历的事情~
- Get传值乱码
- Python爬虫实战之使用Scrapy爬起点网的完本小说
- Python 常用库与框架
- jsp + servlet + jdbc标配web项目,内含日志,防止sql注入,与XSS