[BZOJ3529][Sdoi2014]數表

[BZOJ3529][Sdoi2014]數表

試題描述

有一張N×m的數表,其第i行第j列(1 < =i < =n,1 < =j < =m)的數值為能同時整除i和j的所有自然數之和。給定a,計算數表中不大于a的數之和。

輸入

輸入包含多組數據。
輸入的第一行一個整數Q表示測試點內的數據組數,接下來Q行,每行三個整數n,m,a(|a| < =10^9)描述一組數據。

輸出

對每組數據,輸出一行一個整數,表示答案模2^31的值。

輸入示例

2
4 4 3
10 10 5

輸出示例

20
148

數據規模及約定

1 < =N.m < =10^5??, 1 < =Q < =2×10^4

題解

我們設 f(i) 表示 i 的所有約數和,g(i) 表示 x∈[1, n],y∈[1, m] 范圍內有多少對 (x, y) 使得 gcd(x, y) = i。

那么 f(i) 可以線性篩求出,g(i) 可以莫比烏斯反演得出。

令 T = id,并交換求和順序,得到

受到前面題的啟發,我們可以用調和級數的復雜度求得所有的 F(T)。

那么現在還要求 f(i)?≤ a,咋辦?

離線,把詢問按照 a 的大小排序,按照 f(i) 的大小順序依次插入,每次更新 F(T),然后樹狀數組更新 sum(n)。

查詢的時候,按照 [n / T][m / T] 分類計算,總復雜度 O(n log2n + n sqrt(n) logn)。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <algorithm>
using namespace std;const int BufferSize = 1 << 16;
char buffer[BufferSize], *Head, *Tail;
inline char Getchar() {if(Head == Tail) {int l = fread(buffer, 1, BufferSize, stdin);Tail = (Head = buffer) + l;}return *Head++;
}
int read() {int x = 0, f = 1; char c = Getchar();while(!isdigit(c)){ if(c == '-') f = -1; c = Getchar(); }while(isdigit(c)){ x = x * 10 + c - '0'; c = Getchar(); }return x * f;
}#define maxn 100010const int MOD = 2147483647;
int prime[maxn], cp, mu[maxn], smu[maxn], remain[maxn], f[maxn], Ord[maxn];
bool vis[maxn];
bool cmp(int a, int b) { return f[a] < f[b]; }
void init() {mu[1] = 1; f[1] = 1;for(int i = 2; i < maxn; i++) {if(!vis[i]) prime[++cp] = i, mu[i] = -1, f[i] = 1 + i, remain[i] = 1;for(int j = 1; i * prime[j] < maxn && j <= cp; j++) {vis[i*prime[j]] = 1;if(i % prime[j] == 0) {mu[i*prime[j]] = 0;f[i*prime[j]] = f[i] + f[remain[i]] * (i / remain[i] * prime[j]);remain[i*prime[j]] = remain[i];break;}mu[i*prime[j]] = -mu[i];f[i*prime[j]] = f[i] * (prime[j] + 1);remain[i*prime[j]] = i;}smu[i] = smu[i-1] + mu[i];}for(int i = 1; i < maxn; i++) Ord[i] = i;sort(Ord + 1, Ord + maxn, cmp);return ;
}struct Que {int n, m, a, id;Que() {}Que(int _1, int _2, int _3, int _4): n(_1), m(_2), a(_3), id(_4) {}bool operator < (const Que& t) const { return a < t.a; }
} qs[maxn];
int Ans[maxn];int S[maxn];
void Add(int x, int v) {for(; x < maxn; x += x & -x) S[x] += v;return ;
}
int Sum(int x) {int ans = 0;for(; x; x -= x & -x) ans += S[x];return ans;
}int main() {init();int T = read();for(int i = 1; i <= T; i++) {int n = read(), m = read(), a = read();qs[i] = Que(n, m, a, i);}sort(qs + 1, qs + T + 1);int j = 1;for(int q = 1; q <= T; q++) {while(j < maxn && f[Ord[j]] <= qs[q].a) {for(int d = 1; Ord[j] * d < maxn; d++) Add(Ord[j] * d, f[Ord[j]] * mu[d]);j++;}int n = qs[q].n, m = qs[q].m; if(n > m) swap(n, m);for(int i = 1, lst; i <= n; i = lst + 1) {lst = min(n / (n / i), m / (m / i));Ans[qs[q].id] += (n / i) * (m / i) * (Sum(lst) - Sum(i - 1));}}for(int i = 1; i <= T; i++) printf("%d\n", Ans[i] & MOD);return 0;
}

?

轉載于:https://www.cnblogs.com/xiao-ju-ruo-xjr/p/7109393.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371799.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371799.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371799.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ZK的實際應用:MVVM –表單綁定

這是我們從頭開始構建ZK應用程序的第二集。 上一篇文章涉及使用MVVM將數據加載和呈現到表中。 在本文中&#xff0c;我們將向您介紹ZK MVVM的表單綁定。 目的 我們將構建一個“添加”功能&#xff0c;使我們能夠將新條目保存到清單中。 單擊“添加”時出現表格 單擊“保存”…

群暉按裝mysql_如何連接群暉里的MYSQL數據庫

匿名用戶1級2018-08-27 回答一、連接遠程數據庫&#xff1a;1、顯示密碼如&#xff1a;MySQL 連接遠程數據庫(192.168.5.116)&#xff0c;端口“3306”&#xff0c;用戶名為“root”&#xff0c;密碼“123456”C:/>mysql -h 192.168.5.116 -P 3306 -u root -p1234562、隱藏密…

ZK的實際應用:MVVM –以編程方式更新視圖

在前兩篇文章中&#xff0c;我們使用ZK的MVVM功能來&#xff1a; 將數據加載到表中 使用表單綁定保存數據 我們已經看到&#xff0c;用注解NotifyChange&#xff08;&#xff09;裝飾方法時&#xff0c;在執行完成后&#xff0c;將向Binder通知VM屬性的更改&#xff0c;以便B…

給你一個笑臉

今日冬至&#xff0c;愿你笑靨如初 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8" /> <title>Document</title> </head> <body> <canvas id"mycanvas" width"800px&qu…

mysql安裝與配置的截圖_windows下MySQL5.6版本安裝及配置過程附有截圖和詳細說明...

隨著MYSQL版本的更新以及電腦系統的變化&#xff0c;我們給大家整理了各種電腦環境下安裝MYSQL的圖解過程&#xff0c;希望我們整理的內容能夠幫助到大家&#xff1a;mysql安裝圖解總結https://www.jb51.net/article/142398.htm編輯者&#xff1a;Vocabulary下面詳細介紹5.6版本…

mysql 更新日的數據類型_[每日更新-MySQL基礎]5.常用的數據類型-整數和字符串

1. 數據類型在學習PHP的時候我們已經講過數據類型了&#xff0c;所謂數據類型就是數據的格式。每一種數據類型在計算機中存儲的方式會有差異&#xff0c;占用的存儲容量也有區別&#xff0c;所以選擇合適的數據類型可以節約我們的存儲成本&#xff0c;也方便我們的程序運行和…

Hello World with Spring 3 MVC

在2005年&#xff0c;我對Martin Fowler的這篇文章對Spring進行了介紹。從那時起&#xff0c;我就修改了許多IoC框架&#xff0c;包括Guice &#xff0c; PicoContainer &#xff0c; NanoContainer等。雖然我很喜歡與IoC一起工作&#xff0c;但我必須說Spring在過去的5年中&am…

ansible 安裝

1、簡介 ansible是新出現的自動化運維工具&#xff0c;基于Python開發&#xff0c;集合了眾多運維工具&#xff08;puppet、cfengine、chef、func、fabric&#xff09;的優點&#xff0c;實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基于模塊工作的&#…

JS原型詳解

參考的別人家的博客http://www.cnblogs.com/ljchow/archive/2010/06/08/1753526.html ###JS原型####JS原型&#xff0c;就是原型對象&#xff0c;簡稱原型。不僅構造函數有&#xff0c;普通函數也有* 普通函數&#xff1a;javascript function puTong(){ }; alert(puTong.proto…

c# mysql 插入 和 查詢_C#對數據庫的操作(增刪改查)

1、【在web.config文件中配置】2、【連接字符串】private static readonly string StrCon ConfigurationManager.ConnectionStrings["sqlConnection"].ToString();3、【查詢數據方法】/// /// 查詢數據/// /// 查詢語句/// 參數/// public static DataTable QueryDa…

利用docker在window7下安裝TensorFlow

安裝過程下碰了不少坑&#xff0c;記錄一下安裝過程&#xff0c;方便以后有需要時復用。 1、安裝docker 下載最新版本的docker并且默認安裝即可&#xff0c;安裝后打開Docker Quickstart Terminal&#xff0c;初次進去需要一段時間。 下載網址&#xff1a;https://www.docker.c…

哈希長度擴展攻擊

在這篇文章中&#xff0c;我將盡力避免夏季的低迷&#xff0c;而將重點放在比抱怨天氣更有趣的事情上-哈希長度擴展攻擊。 散列長度擴展攻擊沒什么復雜或復雜的&#xff0c;說實話&#xff0c;這只是關于如何使用散列函數。 正如我以前的一篇文章中所討論的那樣&#xff0c;哈希…

2017年07月03號課堂筆記

2017年07月03號 星期一 多云 空氣質量&#xff1a;輕度污染~中度污染 內容&#xff1a;MySQL第四節課 in和not in&#xff1b;兩個表的內連接&#xff1b;exists和not exsits的使用&#xff1b;all,any和some&#xff1b; 使用子查詢的注意事項&#xff1b;sql優化&#xff08…

excel文件被寫保護怎么解除_u盤被寫保護怎么解除,看完你就知道了

在平常我們使用U盤存儲資料過程中&#xff0c;有時會發現U盤出現無法正常讀寫的現象&#xff0c;具備表現為U盤被寫保護&#xff0c;無法正常執行讀寫操作。對于小編給大家提供以下解決方法&#xff0c;希望對大家能有所幫助。對U盤執行重置操作01上網搜索并下載“USBOOT”程序…

新建MAVEN項目--pom.xml報錯

使用集成了maven的Eclipse版本新建maven項目后&#xff0c;配置文件pom.xml會在project以及引用的xsd文件處出現錯誤&#xff08;第一、二行報錯&#xff09; 其中一個報錯例子&#xff1a; Multiple annotations found at this line:- Plugin execution not covered by lifecy…

OSGi案例研究:模塊化vert.x

OSGi使Java代碼可以清晰地劃分為多個模塊&#xff0c;這些模塊稱為捆綁軟件 &#xff0c;可以訪問由每個捆綁軟件的類加載器控制的代碼和資源。 OSGi 服務提供了一種附加的分離機制&#xff1a;接口的用戶不需要依賴于實現類&#xff0c;工廠等。 以下案例研究旨在使OSGi捆綁包…

mysql一些常用操作_表的一些常用操作_MySQL

bitsCN.com-創建表(也就是創建表結構)&#xff1a;create table tbl_name(列結構&#xff0c;即有哪些屬性)[表選項]; 如&#xff1a;班級的信息&#xff1a;(班級編號&#xff0c;開班日期)create table java_class(class_num varchar(10),date_start date);注&#xff1a;該表…

網站appache的ab命令壓力測試性能

①&#xff1a;相關不錯的博文鏈接&#xff1a;http://johnnyhg.iteye.com/blog/523818 ②&#xff1a;首先配置好對應的環境上去&#xff0c;有對應的命令 ③&#xff1a;壓力測試的指令如下&#xff1a; 1. 最基本的關心兩個選項 -c -n例&#xff1a; ./ab -c 100 -n 10000 &…

如何調整自定義標簽樣式

用chromeF12&#xff0c;查看網頁代碼在自定義標簽上加class&#xff0c;寫樣式&#xff1a;例如&#xff1a;JSP文件&#xff1a;來自為知筆記(Wiz)轉載于:https://www.cnblogs.com/anobugworld/p/7112116.html

無需部署即可測試JPQL / HQL

您是否曾經想在不完全部署應用程序的情況下測試JPQL / HQL&#xff1f; 我們今天在這里看到的是適用于任何JPA實現的簡單解決方案&#xff1a;Hibernate&#xff0c;OpenJPA&#xff0c;EclipseLink等。 這篇文章中找到的基本源代碼來自于本書&#xff1a;“ Pro JPA 2&#xf…