两种做法都说一说吧。。。

题意很明确。

1.数论分块

对于一个 \(d\) 和给定的 \((l,r)\),\((l,r)\) 对其造成贡献的条件很明显是 \(\lfloor \frac {l-1} d \rfloor \ne \lfloor \frac r d \rfloor\)。

然后一个数论分块就没了。

只跑了 4s 还是挺离谱的,应该吊打了大部分数论分块。

#include<cstdio>
#include<cctype>
typedef unsigned ui;
const ui M=1e5+5;
ui n,m,s[M];double inv[M];
inline void write(ui n){
static char s[10];ui top(0);while(s[++top]=n%10^48,n/=10);while(putchar(s[top--]),top);
}
inline ui read(){
ui n(0);char s;while(!isdigit(s=getchar()));while(n=n*10+(s&15),isdigit(s=getchar()));return n;
}
inline ui min(const ui&a,const ui&b){
return a>b?b:a;
}
signed main(){
ui i,L,R,l,r,x,y;m=read();n=read();
for(i=1;i<=n;++i)inv[i]=1./i+1e-15;
while(m--){
l=read()-1;r=read();
for(L=1;L*L<=r&&L<=l;++L)if(ui(l*inv[L])^ui(r*inv[L]))++s[L],--s[L+1];
for(x=l*inv[L],y=r*inv[L];L<=l;L=R+1){
if(x*L>l)--x;if(y*L>r)--y;R=min(ui(l*inv[x]),ui(r*inv[y]));
if(x^y)++s[L],--s[R+1];
}
++s[l+1];--s[r+1];
}
for(i=1;i<=n;++i)write(s[i]+=s[i-1]),putchar(10);
}

2.树状数组

只能说这个数据分类实在是太妙了 Orz

数据分类。

  1. 区间长度不小于 \(d\)

贡献很明显是 \(1\)。

  1. 区间长度小于 \(d\)

我们直接对这些区间进行区间修改,然后直接查询 \(d\) 的倍数,每个区间只可能对答案贡献最多一次。

#include<algorithm>
#include<cstdio>
#include<cctype>
typedef unsigned ui;
const ui M=1e5+5;
ui n,m,s[M],CB[M],id[M*3],l[M*3],r[M*3],d[M*3],BIT[M*3];double inv[M];
inline void write(ui n){
static char s[10];ui top(0);while(s[++top]=n%10^48,n/=10);while(putchar(s[top--]),top);
}
inline ui read(){
ui n(0);char s;while(!isdigit(s=getchar()));while(n=n*10+(s&15),isdigit(s=getchar()));return n;
}
inline void Add(ui x,const ui&val){
while(x<=n)BIT[x]+=val,x+=x&-x;
}
inline ui Query(ui x){
ui ans(0);
while(x>=1)ans+=BIT[x],x^=x&-x;
return ans;
}
signed main(){
ui i,j,ans,now;m=read();n=read();now=m;
for(i=1;i<=m;++i)l[i]=read(),r[i]=read(),++CB[d[i]=r[i]-l[i]+1],id[i]=i;
for(i=n;i>=1;--i)CB[i]+=CB[i+1];for(i=m;i>=1;--i)id[CB[d[i]]--]=i;
for(i=1;i<=n;++i){
while(d[id[now]]<i&&now)Add(l[id[now]],1),Add(r[id[now]]+1,-1),--now;ans=now;
for(j=i;j<=n;j+=i)ans+=Query(j);write(ans);putchar(10);
}
}

成功杀到最优解。

AT2300题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 日期类 Date

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  2. iOS - TableViewCell分割线 --By吴帮雷

    千万别小看UI中得线,否则你的设计师和测试组会无休止地来找你的!!(如果是美女还好,如果是恐龙....) 在开发中运用最多的是什么,对,表格--TableView,之所以称作表格,是因为他天生带有分割 ...

  3. Docker镜像实战(ssh、systemctl、nginx、tomcat、mysql)

    Docker镜像实战 1.构建ssh镜像 2.构建systemctl 镜像 3.构建nginx镜像 4.构建tomcat镜像 5.构建mysql镜像 1.构建ssh镜像: 创建镜像目录 mkdir / ...

  4. vue/cli的目录结构说明

    node_modules:npm 加载的项目所需要的各种依赖模块. src:这里是我们开发的主要目录(源码),基本上要做的事情都在这个目录里面,里面包含了几个目录及文件: 1.assets:放置一些图 ...

  5. 面试题之java缓存总结,从单机缓存到分布式缓存架构

    1.缓存定义 高速数据存储层,提高程序性能 2.为什么要用缓存(读多写少,高并发) 1.提高读取吞吐量 2.提升应用程序性能 3.降低数据库成本 4.减少后端负载 5.消除数据库热点 6.可预测的性能 ...

  6. 从MVC到DDD的架构演进

    DDD这几年越来越火,资料也很多,大部分的资料都偏向于理论介绍,有给出的代码与传统MVC的三层架构差异较大,再加上大量的新概念很容易让初学者望而却步.本文从MVC架构角度来讲解如何演进到DDD架构. ...

  7. 3、前端--伪元素选择器、选择器优先级、字体、背景、边框、display、盒子模型

    伪元素选择器 # 首字调整>>>:也是一种文档布局的方式 p:first-letter { font-size: 48px; /*字体大小*/ color: red; } # 在文本 ...

  8. Netty源码解析一——线程池模型之线程池NioEventLoopGroup

    本文基础是需要有Netty的使用经验,如果没有编码经验,可以参考官网给的例子:https://netty.io/wiki/user-guide-for-4.x.html.另外本文也是针对的是Netty ...

  9. 巧用 CSS 把图片马赛克化

    一.image-rendering 介绍 CSS 中有一个有趣的特性叫 image-rendering,它可以通过算法来更好地显示被缩放的图片. 假设我们有一张尺寸较小的二维码截图(下方左),将其放大 ...

  10. [题解]Codeforces Round #519 - A. Elections

    [题目] A. Elections [描述] Awruk和Elodreip参加选举,n个人投票,每个人有k张票,第i个人投a[i]张票给Elodreip,投k-a[i]张票给Awruk.求最小的k,使 ...