【AtCoder - 2300】Snuke Line(树状数组)
BUPT2017 wintertraining(15) #9A
题意
有n个纪念品,购买区间是\([l_i,r_i]\)。求每i(1~m)站停一次,可以买到多少纪念品。
题解
每隔d站停一次的列车,一定能买到购买区间的长度≥d的纪念品。
长度比d小但包含了d的倍数的纪念品也可以买到。
所以,如果按长度给纪念品排序,用树状数组维护长度小于当前d的购买区间,那么就可以很快求出每个停靠点(d的倍数)有多少个长度不超过d的纪念品了。
代码
#include <cstdio>
#include <algorithm>
#define N 100001
using namespace std;
int n,m;
struct souvenir{
int l,r,len;
bool operator <(const souvenir &b){
return len<b.len;
}
}s[N*3];
int c[N];
int get(int i){
int ans=0;
for(;i;i-=i&(-i))ans+=c[i];
return ans;
}
void add(int i,int v){
for(;i<=m;i+=i&(-i))c[i]+=v;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1,l,r;i<=n;++i){
scanf("%d%d",&l,&r);
s[i]=(souvenir){l,r,r-l+1};
}
sort(s+1,s+1+n);
for(int i=1,j=1;i<=m;++i){
while(j<=n&&s[j].len<i){
add(s[j].l,1);
add(s[j].r+1,-1);
++j;
}
int ans=n-j+1;
for(int k=i;k<=m;k+=i)
ans+=get(k);
printf("%d\n",ans);
}
return 0;
}
树状数组的英文名叫 Fenwick Tree
【AtCoder - 2300】Snuke Line(树状数组)的更多相关文章
- HDU3465--Life is a Line(树状数组求逆序数,离散化)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s ...
- AtCoder Beginner Contest 261 F // 树状数组
题目链接:F - Sorting Color Balls (atcoder.jp) 题意: 有n个球,球有颜色和数字.对相邻的两球进行交换时,若颜色不同,需要花费1的代价.求将球排成数字不降的顺序,所 ...
- AtCoder Beginner Contest 253 F - Operations on a Matrix // 树状数组
题目传送门:F - Operations on a Matrix (atcoder.jp) 题意: 给一个N*M大小的零矩阵,以及Q次操作.操作1(l,r,x):对于 [l,r] 区间内的每列都加上x ...
- AtCoder Regular Contest 101 (ARC101) D - Median of Medians 二分答案 树状数组
原文链接https://www.cnblogs.com/zhouzhendong/p/ARC101D.html 题目传送门 - ARC101D 题意 给定一个序列 A . 定义一个序列 A 的中位数为 ...
- AtCoder Regular Contest 088 E - Papple Sort(树状数组+结论)
结论:每次把字符丢到最外面最优,用树状数组统计答案,把字符放到最外边后可以当成消失了,直接在树状数组上删掉就好. 感性理解是把字符丢到中间会增加其他字符的移动次数,但是丢到外面不会,所以是正确的. # ...
- AtCoder - 2581 树状数组
You are given an integer sequence of length N, a= {a1,a2,…,aN}, and an integer K. a has N(N+1)⁄2 non ...
- codeforces 597C C. Subsequences(dp+树状数组)
题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...
- 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组
E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...
- HDU 2227 Find the nondecreasing subsequences (DP+树状数组+离散化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2227 Find the nondecreasing subsequences ...
随机推荐
- uva11300 分金币(中位数)
来源:https://vjudge.net/problem/UVA-11300 题意: 有n个人围成一圈,每个人有一定数量的金币,每次只能挪动一个位置,求挪动的最少金币使他们平分金币 题解: 蓝书p6 ...
- 安装配置JDK和Eclipse的步骤
导读 作为Java程序员,需要在Linux系统上安装Eclipse,很多人不知要如何安装,在安装Eclipse前,还需安装JDK,Linux下如何安装JDK和Eclipse呢?下面跟朋友们介绍下Lin ...
- 如何让vba与java的TripleDES算法通用
本文链接:http://www.cnblogs.com/Charltsing/p/TripleDES.html 众所周知,java默认采用的TripleDES算法是ECB+PKCS#5填充方式.网上可 ...
- Vue基础(ES6)
起步 1.扎实的HTML/CSS/Javascript基本功,这是前置条件. 2.不要用任何的构建项目工具,只用最简单的<script>,把教程里的例子模仿一遍,理解用法.不推荐上来就 ...
- Docker存储驱动Device Mapper,Overlay,AUFS
Docker存储驱动之Device Mapper简介 - BookShu - 博客园https://www.cnblogs.com/styshoo/p/6528762.html Docker存储驱动之 ...
- 练习MD5加密jar包编写
简介 参数签名可以保证开发的者的信息被冒用后,信息不会被泄露和受损.原因在于接入者和提供者都会对每一次的接口访问进行签名和验证. 签名sign的方式是目前比较常用的方式. 第1步:接入者把需求访问的接 ...
- Day 5-<补充> 类的的继承和查找顺序
类的继承于查找顺序: 在py2中,不继承object的类为经典类,经典类继承查找:深度优先. 在py3中,默认继承object,所以python3中都是新式类,新式类的继承查找:广度优先. 类的特殊属 ...
- spring boot session error
Error starting ApplicationContext. To display the conditions report re-run your application with 'de ...
- python学习笔记(5-1)-基本数据类型-字符串类型及操作
五.字符串处理函数 len(x):字符串x的长度.如len("12345")结果为5 str(x):任意类型x所对应的字符串形式. >>> str(123) ...
- AI算法第三天【矩阵分析与应用】