bzoj - 2038: [2009國家集訓隊]小Z的襪子(hose)

 題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id=2038

 莫隊算法可以解決一類不修改、離線查詢問題。而這題可以用莫隊來做。

 *我是看這個論文學會的:(鏈接~)

 其實莫隊就是一種優化的暴力,只是把查詢都離線預先按照規則去排序,然后依次暴力處理這些詢問。

 有兩種做法,目前只會寫分段解決。先把1~n分成sqrt(n) ,?u = sqrt(n) ,?m個查詢先按照第幾個塊排序,再按照 R排序。

 代碼如下:

 

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 #include <cmath>
 6 
 7 using namespace std;
 8 const int MAXN = 5e4 + 5;
 9 typedef long long LL;
10 int a[MAXN] , u , cont[MAXN];
11 struct que {
12     int l , r , id;
13 }q[MAXN];
14 struct data {
15     LL x , y;
16 }ans[MAXN];
17 
18 LL gcd(LL x , LL y) {
19     if(!y)
20         return x;
21     return gcd(y , x % y);
22 }
23 
24 bool cmp(que x , que y) {
25     if(x.l / u == y.l / u) 
26         return x.r < y.r;
27     return x.l / u < y.l / u;
28 }
29 
30 inline LL f(LL x) {
31     return x * x;
32 }
33 
34 int main()
35 {
36     int n , m;
37     while(~scanf("%d %d" , &n , &m)) {
38         for(int i = 1 ; i <= n ; i++) {
39             scanf("%d" , a + i);
40         }
41         for(int i = 1 ; i <= m ; i++) {
42             scanf("%d %d" , &q[i].l , &q[i].r);
43             q[i].id = i;
44         }
45         u = sqrt(n);
46         sort(q + 1 , q + m + 1 , cmp);
47         int L = 1 , R = 0;
48         LL temp = 0;
49         memset(cont , 0 , sizeof(cont));
50         for(int i = 1 ; i <= m ; i++) {
51             while(L < q[i].l) {
52                 temp -= f(cont[a[L]]);
53                 cont[a[L]]--;
54                 temp += f(cont[a[L]]);
55                 L++;
56             }
57             while(L > q[i].l) {  //前面的還沒算
58                 L--;
59                 temp -= f(cont[a[L]]);
60                 cont[a[L]]++;
61                 temp += f(cont[a[L]]);
62             }
63             while(R > q[i].r) {
64                 temp -= f(cont[a[R]]);
65                 cont[a[R]]--;
66                 temp += f(cont[a[R]]);
67                 R--;
68             }
69             while(R < q[i].r) {
70                 R++;
71                 temp -= f(cont[a[R]]);
72                 cont[a[R]]++;
73                 temp += f(cont[a[R]]);
74             }
75             ans[q[i].id].x = temp - (R - L + 1);
76             ans[q[i].id].y = (LL)(R - L + 1) * (R - L);
77         }
78         for(int i = 1 ; i <= m ; i++) {
79             if(!ans[i].x || !ans[i].y) {
80                 printf("0/1\n");
81             }
82             else {
83                 temp = gcd(ans[i].x , ans[i].y);
84                 printf("%lld/%lld\n" , ans[i].x / temp , ans[i].y / temp);
85             }
86         }
87     }
88 }

?

轉載于:https://www.cnblogs.com/Recoder/p/5208648.html

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

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

相關文章

c++ 靜態變量賦值_Python變量及常量解釋說明

變量(1)在計算機程序中,變量不僅可以是數字,還可以是任意數據類型,變量子啊程序中就是一個變量名表示的,變量名必須是大小寫英文,數字,和"_"的組合,切不能以數字開頭.a 1 #變量a是一個整數1b "shuai" #變量b是一個字符串1c True #變量c是一個布爾值Tru…

Hibernate中session的clear(),flush(),evict()方法詳解

2019獨角獸企業重金招聘Python工程師標準>>> 一、Clear 方法 無論是Load 還是 Get 都會首先查找緩存&#xff08;一級緩存&#xff09; 如果沒有&#xff0c;才會去數據庫查找&#xff0c;調用Clear() 方法&#xff0c;可以強制清除Session緩存。例&#xff1a; pub…

快速排序和折半查找

package BinarySerach;import java.util.Scanner;public class BinarySerch {/***折半查找和快速排序*/static final int N 15;static void quickSort(int [] array,int left,int right){int f,t;int ltemp left;int rtemp right;//確定分界值f array[(leftright)/2];while(…

CANVAS運用-對圖片的壓縮上傳(僅針對移動瀏覽器)

最近在移動端設計頭像上傳功能時&#xff0c;原本是以<input type"file">直接通過formData上傳&#xff0c;然而實際使用情況是&#xff1a;對于過大的圖片&#xff08;高像素手機所拍攝的照片等&#xff09;上傳時間過長會導致上傳失敗&#xff0c;而每次都上…

mysql重命名數據表稱方式_在MySQL中,使用()重命名數據表。_學小易找答案

【單選題】( )的上海文壇被稱為“張愛玲年”。【多選題】下列哪些是屬于共集放大電路的特點?()【閱讀理解】Passage Two Thailand is to ban smoking on some of the country’s most popular tourist beaches, with the prospect of up to a year in prison for those caught…

40_自定義泛型方法及其應用

java的泛型不同于C的模板方法那么強大。java的泛型只停留在編譯階段&#xff0c;編譯通過后泛型特征被擦除&#xff0c;主要因為保證jvm的效率。 用泛型知識&#xff0c;寫一個交換數組元素的方法&#xff08;此方法只適合于引用類型數組!因為int[]不會自動轉為Integer[]!&…

SQL Server代理(11/12):維護計劃作業

SQL Server代理是所有實時數據庫的核心。代理有很多不明顯的用法&#xff0c;因此系統的知識&#xff0c;對于開發人員還是DBA都是有用的。這系列文章會通俗介紹它的很多用法。 在這一系列的上一篇&#xff0c;我們看了使用代理帳戶模仿Windows安全上下文完成作業步驟的工作。大…

mysql select array_從數據庫select查詢出來的數組

PHP中提供了array_unique函數去除一維數組中的重復項&#xff0c;但是我們實際的項目開發中&#xff0c;從數據庫select查詢出來的數組經常是二維的&#xff1b;這里面可能有重復項&#xff0c;這就需要我們自己定義函數進行去除重復項。思路&#xff1a;1、首先獲取第二維數組…

shell中字分隔的妙用:變量IFS

shell把每個 $IFS 字符對待成一個分隔符&#xff0c;且基于這些字符把其他擴展的結果分割。如果 IFS 未設置&#xff0c;或者它的值正好是 “‘<space><tab><newline>’”&#xff0c;那么任何IFS 字符的序列就送往分割字。自寫一個簡單的腳本&#xff1a;#!…

老子《道德經》第三十五章

上士聞道&#xff0c;勤而行之&#xff1b;中士聞道&#xff0c;若存若亡&#xff1b;下士聞道&#xff0c;大笑之。 不笑不足以為道。 故建言有之&#xff1a;明道若昧&#xff0c;進道若退&#xff0c;夷道若颣。 上德若谷&#xff0c;大白若辱&#xff0c;廣德若不足&#x…

php 通過類名獲取類的文件地址

$reflector new ReflectionClass("Child"); $fn $reflector->getFileName(); return dirname($fn);轉載于:https://www.cnblogs.com/bushe/p/5215718.html

大數據告訴你,電商都把假貨發給誰?

“看人下刀”&#xff0c;電商玩得更科幻 內幕&#xff1a;你在網上買件大牌化妝品&#xff0c;在訂單提交→發貨之前&#xff0c;系統會查詢分析你在全平臺的購物數據(大數據內部共享)&#xff1a;購買均價&#xff0c;常購品牌&#xff0c;退貨率。 如果你同類產品消費傾向絕…

mysql取得列類型_Mysql列類型

數值型整型&#xff1a;tinyint:微小的列類型&#xff0c;1個字節&#xff0c;默認有符號&#xff0c;存儲范圍&#xff1a;-128--127可選屬性&#xff1a;tingyint(M) unsigned zerofillM:寬度(在0填充(zerofill)時才有效),只是顯示效果&#xff0c;不影響實際數據的存儲范圍;…

XtraBackup全備與增量備份

一、XtraBackup安裝 下載地址&#xff1a;http://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.8/source/ 安裝步驟&#xff1a; How to build XtraBackup on Linux Prerequisites -------------$ yum install cmake gcc gcc-c libaio libaio-devel automake autocon…

《大話設計模式》 國外資料

It is not easy to remember all design patterns. Here are some stories about design patterns which might help! Creational Singleton – Only one president in AmericaFactory – A factory that produces humanAbstract Factory – An abstract factory to produce CP…

DHCP基本配置

第一步 安裝 DHCP [rootlocalhost ~]# yum install dhcp dhcp-devel DHCP文件簡介 /etc/dhcp/dhcpd.conf #主配置文件&#xff0c;除了括號那欄&#xff0c;其它都要結尾 ; 這樣的分號 /var/lib/dhcpd/dhcpd.leases #IP地址租約在這里 第二步 配置 DHCP 主文件配置[rootlocalho…

python arcgis 圖書_arcgis python

本書作者是GIS發方面的知名作者&#xff0c;曾著有《JavaScript構建Web和ArcGIS Server應用實戰》(Building Web and Mobile ArcGIS Server Applications with JavaScript)一書。 本書內容易學易懂&#xff0c;幫助讀者成為GIS發高手。《面向ArcGIS的Python腳本編程》是一本指導…

scrapy 讓指定的spider執行指定的pipeline

處理scrapy中包括多個pipeline時如何讓spider執行制定的pipeline管道&#xff11;:創建一個裝飾器from scrapy.exceptions import DropItemimport functools當有多個pipeline時,判斷spider如何執行指定的管道 def check_spider_pipeline(process_item_method): functools.wr…

五大常用算法之三:貪心算法

一、基本概念&#xff1a; 所謂貪心算法是指&#xff0c;在對問題求解時&#xff0c;總是做出在當前看來是最好的選擇。也就是說&#xff0c;不從整體最優上加以考慮&#xff0c;他所做出的僅是在某種意義上的局部最優解。 貪心算法沒有固定的算法框架&#xff0c;算法設計的關…

python學習筆記列表和元組(三)

列表&#xff08;list&#xff09;是Python以及其他語言中最常用到的數據結構之一。Python使用使用中括號 [ ] 來解析列表。列表是可變的&#xff08;mutable&#xff09;——可以改變列表的內容。對應操作&#xff1a;1、查&#xff08;[]切片操作&#xff09; name [tom,張三…