博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nssl1459-空间简单度【扫描线,线段树】
阅读量:2022 次
发布时间:2019-04-28

本文共 1596 字,大约阅读时间需要 5 分钟。

正题


题目大意

n n n个点的一颗树,合法路径定义为一条路径上每个点的编号相差大于 K K K。求合法路径数


解题思路

首先我们可以求不合法的路径数,这样我们就有了 K ∗ n K*n Kn个不合法(即不能在同一个路径上)的点对。

然后这题就和之前一题一样了

大概就是用矩形表示不合法的路径,之后用扫面线求矩形的面积并即可。


c o d e code code

#pragma GCC optimize(2)%:pragma GCC optimize(3)%:pragma GCC optimize("Ofast")%:pragma GCC optimize("inline")#include
#include
#include
#include
using namespace std;const int N=3e5+10;struct node{
int to,next;}a[N*2];struct line{
int x,l,r,w;}l[N*40];bool operator<(line x,line y){
return x.x
=0;i--) if(dep[f[y][i]]>dep[x]) y=f[y][i]; return y;}void addc(int x1,int x2,int y1,int y2){
if(x1>x2)swap(x1,x2); if(y1>y1)swap(y1,y2); l[++num]=(line){
x1,y1,y2,1}; l[++num]=(line){
x2+1,y1,y2,-1};}void Ban(int x,int y){
if(rfn[x]>rfn[y])swap(x,y); if(rfn[x]<=rfn[y]&&rfn[y]<=ed[x]){
int top=LCA(x,y); if(rfn[top]!=1)addc(1,rfn[top]-1,rfn[y],ed[y]); if(ed[top]!=n)addc(rfn[y],ed[y],ed[top]+1,n); } else addc(rfn[x],ed[x],rfn[y],ed[y]); return;}void Change(int x,int L,int R,int l,int r,int val){
if(L==l&&R==r){
mark[x]+=val; if(mark[x])w[x]=r-l+1; else if(l==r)w[x]=0; else w[x]=w[x*2]+w[x*2+1]; return; } int mid=(L+R)>>1; if(r<=mid)Change(x*2,L,mid,l,r,val); else if(l>mid)Change(x*2+1,mid+1,R,l,r,val); else Change(x*2,L,mid,l,mid,val),Change(x*2+1,mid+1,R,mid+1,r,val); if(mark[x])w[x]=R-L+1; else w[x]=w[x*2]+w[x*2+1]; return;}int main(){
freopen("data.in","r",stdin); int size = 256 << 20; //250M char*p=(char*)malloc(size) + size; __asm__("movl %0, %%esp\n" :: "r"(p) ); n=read();K=read(); for(int i=1;i

转载地址:http://cdwaf.baihongyu.com/

你可能感兴趣的文章
Ubuntu下安装Golang并测试HelloWorld
查看>>
VirtualBox上的Ubuntu附加功能
查看>>
Spring boot教程mybatis访问MySQL的尝试
查看>>
虚拟机Ubuntu 18.04安装RabbitMQ 3.7.9
查看>>
Ubuntu 18.04安装docker
查看>>
Ubungu 18.04安装MySQL 5.7.24
查看>>
现象:SpringApplication.run后面的语句未执行
查看>>
191002一些岗位数量统计
查看>>
MySQL权限操作:Grant、Revoke
查看>>
CSP考试 2014年03月第1题 相反数 C语言实现
查看>>
CSP考试 2014年09月第1题 相邻数对 C语言实现
查看>>
CSP考试 2014年12月第1题 门禁系统 C语言实现
查看>>
CSP考试 2015年3月第1题 图像旋转 C语言实现
查看>>
CSP考试 2015年9月第1题 数列分段 C语言实现
查看>>
CSP考试 2015年12月第1题 数位之和 C语言实现
查看>>
CSP考试 2016年4月第1题 折点计数 C语言实现
查看>>
CSP考试 2016年9月第1题 最大波动 C语言实现
查看>>
新手玩转GitHub
查看>>
【zookeeper】zookeeper的常用配置
查看>>
mysql实现for循环
查看>>