首页 > 代码库 > cogs 2569. [東方] 博丽灵梦 梦想妙珠
cogs 2569. [東方] 博丽灵梦 梦想妙珠
二次联通门 : cogs 2569. [東方] 博丽灵梦 梦想妙珠
/* cogs 2569. [東方] 博丽灵梦 梦想妙珠 莫队水过。。 好久没一遍AC了。。 卡线上榜2333 */ #include <algorithm> #include <iostream> #include <cstdio> #include <cmath> char Buf[100000001], *buf = Buf; int BUF = 100000001; void read (int &now) { for (now = 0; !isdigit (*buf); ++ buf); for (; isdigit (*buf); now = now * 10 + *buf - ‘0‘, ++ buf); } #define Max 100000 int belong[Max]; struct Data { int l, r, c, Id; bool operator < (const Data &now) const { return belong[this->l] == belong[now.l] ? this->r < now.r : belong[this->l] < belong[now.l]; } }; int count[Max << 1 | 1]; Data query[Max | 1]; int number[Max | 1]; int Answer[Max]; #define Cogs int main (int argc, char *argv[]) { #ifdef Cogs freopen ("mengxiangmiaozhu.in", "r", stdin); freopen ("mengxiangmiaozhu.out", "w", stdout); fread (buf, 1, BUF, stdin); #endif int N, M; read (N); register int i; int x; int K_Size = sqrt (N); for (i = 1; i <= N; ++ i) read (number[i]), belong[i] = (i + 1) / K_Size; read (M); for (i = 1; i <= M; ++ i) { read (query[i].l); read (query[i].r); read (query[i].c); } for (i = 1; i <= M; ++ i) query[i].Id = i; std :: sort (query + 1, query + 1 + M); int l = 1, r = 0; for (i = 1; i <= M; ++ i) { for (; l < query[i].l; -- count[number[l]], ++ l); for (; l > query[i].l; -- l, ++ count[number[l]]); for (; r < query[i].r; ++ r, ++ count[number[r]]); for (; r > query[i].r; -- count[number[r]], -- r); Answer[query[i].Id] = count[query[i].c]; } for (i = 1; i <= M; ++ i) printf ("%d\n", Answer[i]); return 0; }
cogs 2569. [東方] 博丽灵梦 梦想妙珠
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。