神犇sjy虐完heoi之後給傻×lyd出了一題:
shy是t國的公主,平時的一大愛好是作詩。
由於時間緊迫,shy作完詩之後還要虐oi,於是shy找來一篇長度為n的文章,閱讀m次,每次只閱讀其中連續的一段[l,r],從這一段中選出一些漢字構成詩。因為shy喜歡對偶,所以shy規定最後選出的每個漢字都必須在[l,r]裡出現了正偶數次。而且shy認為選出的漢字的種類數(兩個一樣的漢字稱為同一種)越多越好(為了拿到更多的素材!)。於是shy請lyd安排選法。
lyd這種傻×當然不會了,於是向你請教……
問題簡述:n個數,m組詢問,每次問[l,r]中有多少個數出現正偶數次。
輸入第一行三個整數n、c以及m。表示文章字數、漢字的種類數、要選擇m次。
第二行有n個整數,每個數ai在[1, c]間,代表乙個編碼為ai的漢字。
接下來m行每行兩個整數l和r,設上乙個詢問的答案為ans(第乙個詢問時ans=0),令l=(l+ans)mod n+1, r=(r+ans)mod n+1,若l>r,交換l和r,則本次詢問為[l,r]。
輸出共m行,每行乙個整數,第i個數表示shy第i次能選出的漢字的最多種類數。
5 3 5
1 2 2 3 1
0 41 2
2 22 3
3 5200
01對於100%的資料,1<=n,c,m<=10^5
by lydrainbowcat
還沒ac就寫題解2333,原因是因為入bz坑以來第二次遇到卡評測的事辣,雖然沒法評測,遇到這種事莫名感興趣xd。
1.f[i][j]:第i塊到第j塊中合法的個數。
2.字首和[i][j]:前i個漢字中j出現的個數,當然並不是用2維陣列的來實現的,而是在結構體中以漢字為第一關鍵字,以所在序號為第二關鍵字排序,用的時候二分即可。
這樣,題目變得很明了了,查詢時,對於同塊或相鄰塊內的查詢,直接暴力二分統計即可,若不在同乙個塊內,則開始直接ans=f[pos[l]+1][pos[r]-1](pos為所在塊),也就是吧l,r之間的完整的塊直接用f,剩下的暴力二分,注意細節。
但是!!!跟著黃學長寫,分成sqrt(n)塊的我t了,要分成sqrt(n/logn)塊,不知道**寫殘了,一定要寫個分成sqrt(n)的版本出來。
1 #include 2 #include 3 #include 4 #include 5 #include 6sqrt(n/logn)版本#define n 100010
7#define sn 1555
8#define inf 0x7fffffff
9using
namespace
std;
10struct datab[n];
11int
f[sn][sn],first[n],last[n],flag[n],temp[n],a[n],pos[n],l[sn],r[sn];
12int
n,m,block,cnt,c;
13bool cmp(data a,data b)
14 inline int
read()
1523
void
part1_pre()
2437}38
for (int i=1;i<=n;i++)
3943 sort(b+1,b+n+1
,cmp);
44for (int i=1;i<=n;i++)
4549}50
int findup(int x,int
v)5158}
59return
tem;60}
61int finddown(int x,int
v)6269}
70return
tem;71}
72int find(int x,int y,int v)
73int query(int x,int
y)7484}
85}86for (int i=x;i<=y;i++) flag[a[i]]=0;87
}88else
89100
else
101if (!(t1&1) && t1) ans--;
102}
103}
104for (int i=r+1;i<=y;i++)
105112
else
113if (!(t1&1) && t1) ans--;
114}
115}
116for (int i=x;i0
;117
for (int i=r+1;i<=y;i++) flag[a[i]]=0
;118
}119
return
ans;
120}
121int
main()
122143
return0;
144 }
BZOJ 2821 作詩 (分塊)
問題描述 神犇sjy虐完heoi之後給傻 lyd出了一題 shy是t國的公主,平時的一大愛好是作詩。由於時間緊迫,shy作完詩之後還要虐oi,於是shy找來一篇長度為n的文章,閱讀m次,每次只閱讀其中連續的一段 l,r 從這一段中選出一些漢字構成詩。因為shy喜歡對偶,所以shy規定最後選出的每個漢...
bzoj2821 作詩 Poetize 分塊
description 神犇sjy虐完heoi之後給傻 lyd出了一題 shy是t國的公主,平時的一大愛好是作詩。由於時間緊迫,shy作完詩 之後還要虐oi,於是shy找來一篇長度為n的文章,閱讀m次,每次只閱讀其中連續的一段 l,r 從這一段中選出一 些漢字構成詩。因為shy喜歡對偶,所以shy規...
BZOJ2821 作詩 Poetize 分塊
神犇sjy虐完heoi之後給傻 lyd出了一題 shy是t國的公主,平時的一大愛好是作詩。由於時間緊迫,shy作完詩之後還要虐oi,於是shy找來一篇長度為n的文章,閱讀m次,每次只閱讀其中連續的一段 l,r 從這一段中選出一些漢字構成詩。因為shy喜歡對偶,所以shy規定最後選出的每個漢字都必須在...