Yveh的题解,这道题卡了好长时间,一直不明白为什么要······算了当时太naive我现在都不好意思说了

#include<cstdio>
#include<cstring>
#include<algorithm>
#define read(x) x=getint()
using namespace std;
const int N = 1E5;
int getint() {
int k = 0, fh = 1; char c = getchar();
for(; c < '0' || c > '9'; c = getchar())
if (c == '-') fh = -1;
for(; c >= '0' && c <= '9'; c = getchar())
k = k * 10 + c - '0';
return k * fh;
}
bool np[N + 3];
int prime[N + 3], mu[N + 3], f[N + 3], exmin[N + 3], bit[N + 3], up = 0;
void shai() {
mu[1] = f[1] = 1; int num = 0;
for(int i = 2; i <= N; ++i) {
if (!np[i]) {
mu[i] = -1;
prime[++num] = i;
f[i] = 1 + i;
exmin[i] = 1;
}
for(int j = 1; j <= num; ++j) {
int t = prime[j] * i; if (t > N) break;
np[t] = 1;
if (i % prime[j] == 0) {
mu[t] = 0;
f[t] = exmin[i] + prime[j] * f[i];
exmin[t] = exmin[i];
break;
}
mu[t] = -mu[i];
f[t] = f[i] * (1 + prime[j]);
exmin[t] = f[i];
}
}
}
int Qsum(int x) {
int ret = 0;
for(; x; x -= x & -x)
ret += bit[x];
return ret;
}
void add(int x, int s) {
for(; x <= up; x += x & -x)
bit[x] += s;
}
void update(int d, int s) {
for(int i = d, j = 1; i <= up; i += d, ++j)
add(i, s * mu[j]);
} struct node1 {int n, m, a, id;} Q[N + 3];
struct node2 {int f, id;} F[N + 3];
bool cmp1(node1 X, node1 Y) {return X.a < Y.a;}
bool cmp2(node2 X, node2 Y) {return X.f < Y.f;} int ans[N + 3];
int main() {
shai();
int T;
read(T);
for(int i = 1; i <= T; ++i) {
read(Q[i].n); read(Q[i].m); read(Q[i].a);
Q[i].id = i;
if (Q[i].n > Q[i].m) swap(Q[i].n, Q[i].m);
up = max(up, Q[i].m);
}
sort(Q + 1, Q + T + 1, cmp1);
for(int i = 1; i <= up; ++i)
F[i].f = f[i], F[i].id = i;
sort(F + 1, F + up + 1, cmp2); int n, m, a, tmp = 1;
for(int i = 1; i <= T; ++i) {
n = Q[i].n; m = Q[i].m; a = Q[i].a;
while (tmp <= up && F[tmp].f <= a)
update(F[tmp].id, F[tmp].f), ++tmp;
int ret = 0;
for(int j = 1, la = 1; j <= n; j = la + 1) {
la = min(n / (n / j), m / (m / j));
ret += (Qsum(la) - Qsum(j - 1)) * (n / j) * (m / j);
}
ans[Q[i].id] = ret & ((1u << 31) - 1);
}
for(int i = 1; i <= T; ++i)
printf("%d\n", ans[i]); return 0;
}

不容易啊QuQ

【BZOJ 3529】【SDOI 2014】数表的更多相关文章

  1. 【BZOJ 3529】 [Sdoi2014]数表 (莫比乌斯+分块+离线+树状数组)

    3529: [Sdoi2014]数表 Description 有一张N×m的数表,其第i行第j列(1 < =i < =礼,1 < =j < =m)的数值为能同时整除i和j的所有 ...

  2. [SDOI 2014]数表

    Description 有一张N×m的数表,其第i行第j列(1 < =i < =N,1 < =j < =m)的数值为 能同时整除i和j的所有自然数之和.给定a,计算数表中不大于 ...

  3. [BZOJ 3530][Sdoi 2014]数数

    阿拉~好像最近总是做到 AC 自动机的题目呢喵~ 题目的算法似乎马上就能猜到的样子…… AC 自动机 + 数位 dp 先暴力转移出 f[i][j] :表示从 AC 自动机上第 j 号节点走 i 步且不 ...

  4. BZOJ 3533 sdoi 2014 向量集

    设(x,y)为Q的查询点,分类讨论如下:1.y>0:  最大化a*x+b*y,维护一个上凸壳三分即可 2.y<0:最大化a*x+b*y  维护一个下凸壳三分即可 我们考虑对时间建出一棵线段 ...

  5. 解题:SDOI 2014 数表

    题面 为了好写式子,先不管$a$的限制 设$facs$为因子和,那么有 $ans=\sum\limits_{i=1}^n\sum\limits_{j=1}^mfacs(gcd(i,j))$ 再设$f( ...

  6. 【莫比乌斯反演】关于Mobius反演与gcd的一些关系与问题简化(bzoj 2301 Problem b&&bzoj 2820 YY的GCD&&BZOJ 3529 数表)

    首先我们来看一道题  BZOJ 2301 Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd( ...

  7. [BZOJ 1879][SDOI 2009]Bill的挑战 题解(状压DP)

    [BZOJ 1879][SDOI 2009]Bill的挑战 Description Solution 1.考虑状压的方式. 方案1:如果我们把每一个字符串压起来,用一个布尔数组表示与每一个字母的匹配关 ...

  8. [BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT)

    [BZOJ 3992] [SDOI 2015] 序列统计(DP+原根+NTT) 题面 小C有一个集合S,里面的元素都是小于质数M的非负整数.他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数 ...

  9. [BZOJ 3123] [SDOI 2013]森林(可持久化线段树+并查集+启发式合并)

    [BZOJ 3123] [SDOI 2013]森林(可持久化线段树+启发式合并) 题面 给出一个n个节点m条边的森林,每个节点都有一个权值.有两种操作: Q x y k查询点x到点y路径上所有的权值中 ...

  10. 「BZOJ 3529」「SDOI 2014」数表「莫比乌斯反演」

    题意 有一张 \(n\times m\) 的数表,其第\(i\)行第\(j\)列的数值为能同时整除\(i\)和\(j\)的所有自然数之和. \(T\)组数据,询问对于给定的 \(n,m,a\) , 计 ...

随机推荐

  1. hdu1251 统计难题

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=1251 题目: 统计难题 Time Limit: 4000/2000 MS (Java/Othe ...

  2. Putty文件夹蓝色太暗问题

    Putty文件夹蓝色太暗问题 用Putty通过ssh登陆Linux服务器时,有时候会发现系统默认的蓝色字体太暗,具体解决方法如下: (1)打开putty客户端,选择某登陆Session,然后load: ...

  3. Unity实现刺客信条灯光的思路探究

    灯光需求 类似刺客信条的开场CG动画,场景中打着酷炫的灯光,玩家在场景中行走可以感受到灯光很真实. 参考视频:http://www.iqiyi.com/w_19rqytbmvt.html 运行环境 安 ...

  4. oracle round 函数,replace()函数

    (1)如何使用 Oracle Round 函数 (四舍五入)描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果.SELECT ROUND( number, [ decimal_ ...

  5. CSS3边框图片属性---border-image

    #div{ border:18px solid; border-image:url("http://img.mukewang.com/52e22a1c0001406e03040221.jpg ...

  6. xhEditor用法

    xhEditor是一个基于jQuery开发的简单迷你并且高效的在线可视化HTML编辑器,而且兼容很多浏览器,所以就选它了,具体使用如下: 1 .下载xhEditor 最新版本 下载地址:http:// ...

  7. QT QToolBox类

    QToolBox类的创建 //drawer.h #ifndef DRAWER_H #define DRAWER_H #include <QToolBox> #include <QTo ...

  8. 程序开发使用docker部署

    我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...

  9. string to char* and char* to string 玩转 String 和 Char*

    char 类型是c语言中常见的一个数据类型,string是c++中的一个,它的定义为 Strings are objects that represent sequences of character ...

  10. 发布新款博客皮肤SimpleMemory

    感谢 sevennight 又为大家精心设计了一款简约风格的博客皮肤 —— SimpleMemory. 大家可以通过这篇博文感受一下实际的效果:开园子啦(浅谈移动端以及h5的发展) 如果您喜欢这款皮肤 ...