Liers 树状数组+中国剩余定理
Liers
Problem Description
Input
多组数据,每组数据:
第一行,N(1 <= N <= 10^6),总人数
从2到N + 1行,每行两个正整数,L,R,表示第i个人说的,舞会总人数为[L,R]中的一个数 -2^31 <= L,R <= 2^31 - 1(int)
Output
Sample Input
3
1 1
1 1
1 1
3
0 2
0 2
0 2
Sample Output
3
6
Hint
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define mod 20140717LL
#define ll long long
typedef struct people
{
int l,r;
} people;
people p[];
int b[],n;
short int a1[][]= {},a2[][]= {},a3[][]= {};
void init()
{
int i,j;
a1[][]=a2[][]=a3[][]=;
for(i=; i<; i++)
{
a3[i][i]=a3[i][]=;
for(j=; j<i; j++)
a3[i][j]=a3[i-][j-]+a3[i-][j],a3[i][j]%=;
}
for(i=; i<; i++)
{
a2[i][i]=a2[i][]=;
for(j=; j<i; j++)
a2[i][j]=a2[i-][j-]+a2[i-][j],a2[i][j]%=;
}
for(i=; i<; i++)
{
a1[i][i]=a1[i][]=;
for(j=; j<i; j++)
a1[i][j]=a1[i-][j-]+a1[i-][j],a1[i][j]%=;
}
}
int lowbit(int x)
{
return x&(-x);
}
void update(int x,int z)
{
while(x>)
{
b[x]+=z;
x-=lowbit(x);
}
}
int query(int x)
{
int sum=;
while(x<=n)
{
sum+=b[x];
x+=lowbit(x);
}
return sum;
}
int fun1(int m,int x,int y)
{
int ans=;
while(x)
{
if(y==)
ans*=a1[m%y][x%y];
else if(y==)
ans*=a2[m%y][x%y];
else ans*=a3[m%y][x%y];
m/=y,x/=y;
}
return ans;
}
int fun(int m,int x)
{
ll m1,m2,m3;
m1=fun1(m,x,);
m2=fun1(m,x,);
m3=fun1(m,x,);
int ans=((m1*8842266LL)%mod+(m2*1129386LL)%mod+(m3*10169066LL)%mod)%mod;
return ans;
}
int main()
{
// freopen("in.txt","r",stdin);
init();
int i,j,ans,m;
while(scanf("%d",&n)!=EOF)
{
for(i=; i<n; i++)
{
scanf("%d%d",&p[i].l,&p[i].r);
if(p[i].l<=)p[i].l=;
if(p[i].l>n)p[i].r=n;
if(p[i].r<=)p[i].r=;
if(p[i].r>n)p[i].r=n;
}
memset(b,,sizeof(b));
for(i=; i<n; i++)
{
update(p[i].r,);
update(p[i].l-,-);
}
ans=;
for(i=; i<=n; i++)
{
m=query(i);
if(m>=i)
ans+=fun(m,i),ans%=mod;
}
printf("%d\n",ans%mod);
} }
Liers 树状数组+中国剩余定理的更多相关文章
- 【XSY2727】Remove Dilworth定理 堆 树状数组 DP
题目描述 一个二维平面上有\(n\)个梯形,满足: 所有梯形的下底边在直线\(y=0\)上. 所有梯形的上底边在直线\(y=1\)上. 没有两个点的坐标相同. 你一次可以选择任意多个梯形,必须满足这些 ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1010 YJJ's Salesman 【离散化+树状数组维护区间最大值】
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6447 YJJ's Salesman Time Limit: 4000/2000 MS (Java/O ...
- BZOJ2924 [Poi1998]Flat broken lines 【Dilworth定理 + 树状数组】
题目链接 BZOJ2924 题解 题面有误..是\(45°\) 如果两个点间连线与\(x\)轴夹角在\(45°\)以内,那么它们之间连边 求最小路径覆盖 = 最长反链 由于\(45°\)比较难搞,我们 ...
- HDU 4911 (树状数组+逆序数)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4911 题目大意:最多可以交换K次,就最小逆序对数 解题思路: 逆序数定理,当逆序对数大于0时,若ak ...
- POJ 2464 Brownie Points II (树状数组,难题)
题意:在平面直角坐标系中给你N个点,stan和ollie玩一个游戏,首先stan在竖直方向上画一条直线,该直线必须要过其中的某个点,然后ollie在水平方向上画一条直线,该直线的要求是要经过一个sta ...
- Bzoj 3339: Rmq Problem && Bzoj 3585: mex 莫队,树状数组,二分
3339: Rmq Problem Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 833 Solved: 397[Submit][Status][D ...
- 求逆序对常用的两种算法 ----归并排 & 树状数组
网上看了一些归并排求逆序对的文章,又看了一些树状数组的,觉得自己也写一篇试试看吧,然后本文大体也就讲个思路(没有例题),但是还是会有个程序框架的 好了下面是正文 归并排求逆序对 树状数组求逆序对 一. ...
- 求逆序对 ----归并排 & 树状数组
网上看了一些归并排求逆序对的文章,又看了一些树状数组的,觉得自己也写一篇试试看吧,然后本文大体也就讲个思路(没有例题),但是还是会有个程序框架的 好了下面是正文 归并排求逆序对 树状数组求逆序对 一. ...
- 用归并排序或树状数组求逆序对数量 poj2299
题目链接:https://vjudge.net/problem/POJ-2299 推荐讲解树状数组的博客:https://blog.csdn.net/int64ago/article/details/ ...
随机推荐
- Retrofit2.0源码解析
欢迎访问我的个人博客 ,原文链接:http://wensibo.net/2017/09/05/retrofit/ ,未经允许不得转载! 今天是九月的第四天了,学校也正式开学,趁着大学最后一年的这大好时 ...
- 关于样式选择器:hover出现忽闪现象
有时候在做项目的时候会想给一个元素添加一个遮罩效果,然后鼠标划过去的时候,遮罩消失,一般最简单的方法就是使用样式选择器:hover,但是经历过才知道恶心,有种灯泡快要坏的感觉,闪瞎自己的眼睛,于是诞生 ...
- Linux学习之路 -- 简单日常使用命令
tail -f catalina.out #在 logs 下面查看日志( -f 实时查看) rm -rf /var/log/httpd/access #删除文件(-r删除文件 并删除文件夹下的内容 - ...
- 【C#多线程编程实战笔记】二、 线程同步
使用Mutex类-互斥锁 owned为true,互斥锁的初始状态就是被主线程所获取,否则处于未获取状态 name为定义的互斥锁名称,在整个操作系统只有一个命名未CSharpThreadingCookb ...
- 定时调度框架:Quartz.net
Quartz.net相关概念 经常出现场景:定时轮询数据库同步,定时邮件通知,定时处理数据等 Scheduler (计划者或调度器) Job (工作对象):将要定时执行的任务代码写到实现Ijob接口的 ...
- makefile中":=","=","?=","+=" 之间的区别
区别: := 有关位置的等于,值取决于当时位置的值 = 无关位置的等于,值永远等于最后的值 ?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值 '=':无关位置的等于 比如: x = ...
- Python终端输出打印彩色字体的方法
一 实现过程 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是0 ...
- 201521123079《java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 这题主要是对函 ...
- 201521123032 《Java程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1. clone方法 1.1 Object ...
- VBScript中InStr函数的用法
InStr([start, ]str1, str2[, compare]) [用途]:返回str2在str1中的位置.匹配成功时,返回值最小值为1,未匹配到时返回0. [参数说明]: start:在s ...