当前位置: 首页 > news >正文

P4168 蒲公英 分块

把信息全部按块处理,在本题中体现的是块内众数(p[i])和块间次数(sum[i][j])
Remarks:
1.桶暴力
2.离散化
3.前缀和

#include<bits/stdc++.h>
#define ll long long
#define maxn 40003
#define inf 1e9+2
using namespace std;
int n, m, pp, num;
int a[maxn], b[maxn], L[220], R[220], pos[maxn], color[maxn], tong[maxn], ans[maxn];
int p[220][220], sum[220][maxn];void init(int n) {int bz = sqrt(n * 1.0);num = n / bz;if (n % bz) num++;for (int i = 1; i <= num; ++i) L[i] = (i - 1) * bz + 1, R[i] = i * bz;R[num] = n;for (int i = 1; i <= num; ++i) {for (int j = L[i];  j <= R[i]; ++j) {pos[j] = i;sum[i][a[j]]++;}  }for (int i = 1; i <= num; ++i) {for (int j = 1; j <= pp; ++j) sum[i][j] += sum[i - 1][j];}for (int i = 1; i <= num; ++i) {int tot = 0, col = inf;for (int j = L[i]; j <= n; ++j) {tong[a[j]]++;if (tong[a[j]] > tot || (tong[a[j]] == tot && a[j] < col)) col = a[j], tot = tong[a[j]];p[i][pos[j]] = col;}for (int j = L[i]; j <= n; ++j) tong[a[j]]=0;}		
} int query(int l, int r) {memset(tong, 0, sizeof(tong));int p1 = pos[l], p2 = pos[r];int tot = 0, col = inf;if (p2 - p1 <= 1) {for (int j = l;  j <= r; ++j) {tong[a[j]]++;if (tong[a[j]] > tot || (tong[a[j]] == tot) && a[j] < col) tot = tong[a[j]], col = a[j];}return col;}int ans = p[p1 + 1][p2 - 1];tot = sum[p2 - 1][ans] - sum[p1][ans];int x = l, y = L[p1 + 1] - 1;for (int i = x; i <= y; ++i) {++tong[a[i]];if (tong[a[i]] + sum[p2 - 1][a[i]] - sum[p1][a[i]] > tot || (tong[a[i]] + sum[p2 - 1][a[i]] - sum[p1][a[i]] == tot && ans > a[i])) tot = tong[a[i]] + sum[p2 - 1][a[i]] - sum[p1][a[i]], ans = a[i];}x = L[p2], y = r;for (int i = x; i <= y; ++i) {++tong[a[i]];if (tong[a[i]] + sum[p2 - 1][a[i]] - sum[p1][a[i]] > tot || (tong[a[i]] + sum[p2 - 1][a[i]] - sum[p1][a[i]] == tot && ans > a[i])) tot = tong[a[i]] + sum[p2 - 1][a[i]] - sum[p1][a[i]], ans = a[i];}return ans;
}int main() {cin>>n>>m;for (int i = 1; i <= n; ++i) cin>>a[i];for (int i = 1; i <= n; ++i) b[i] = a[i];sort(b + 1, b + n + 1);pp = unique(b + 1, b + n + 1) - b - 1;for (int i = 1; i <= n; ++i) {int col = a[i];a[i] = lower_bound(b + 1, b + 1 + pp, a[i]) - b;color[a[i]] = col;} init(n);for (int i = 1; i <= m; ++i) {int l, r; cin>>l>>r;int x = (l + ans[i - 1] - 1) % n + 1;int y = (r + ans[i - 1] - 1) % n + 1;if (x > y) swap(x, y);ans[i] = color[query(x, y)];cout<<ans[i]<<endl;}return 0;
}
http://www.jsqmd.com/news/65038/

相关文章:

  • 2025防静电吸盘厂家哪家好?海绵吸盘定制厂家实力榜单
  • 2025真空吸盘定制厂家哪家好?优质真空吸盘厂家精选指南
  • 江西cpe膜厂家哪家好?2025复合包装袋定制厂家实力推荐
  • 鑫金鼎隔热条怎么样?隔热条品牌排名前十盘点
  • 2025加速度计厂家怎么挑?这些靠谱厂家值得关注
  • 2025年口碑好的抽条韩国绒厂家推荐及采购指南
  • 找2025IMU 生产厂家/惯性测量单元厂家?精准匹配优质供
  • 2025非标定制吸杆厂家哪家好?优质内缩吸杆定制厂家汇总
  • 2025年知名的高温螺杆清洗料/吹膜机清洗料厂家最新热销排行
  • 同步带厂家哪家好?2025同步带知名品牌盘点
  • 广东企业研发费规范辅导机哪家好?2025厂家榜单
  • 2025年质量好的铝框门缓冲铰链/进口品牌缓冲铰链厂家最新用户好评榜
  • 2025年全国面包培训基地排名:面包培训服务推荐企业有哪些?
  • 同步带轮厂家哪家好?2025 同步带厂家推荐榜单
  • 2025激光切管机哪家好?激光切管机品牌推荐榜单
  • 广东科技项目申报咨询机构哪家好?2025综合实力榜单
  • 2025空派双清包税专线货代服务合集:靠谱国际物流公司大盘点
  • 2025发廊专用热水器厂家综合实力榜单
  • 2025美国整柜门到门货代攻略:美国整柜门到门物流公司合集
  • 2025锂电pak连接器哪家好!靠谱新能源连接器厂家-深圳市
  • 2025年比较好的连栋玻璃温室厂家实力及用户口碑排行榜
  • 2025联轴器厂家哪家好?工业级联轴器优质厂家汇总
  • 100kW微型燃气轮机Simulink建模探索 - 详解
  • 2025理发店洗头床厂家直销权威排行
  • 2025年热门的同步缓冲隐藏轨/橱柜缓冲隐藏轨实力厂家TOP推荐榜
  • 2025服装/食品包装袋厂家实力榜单发布
  • 2025年靠谱的激光灯TOP实力厂家推荐榜
  • 2025年靠谱的激光灯TOP实力厂家推荐榜
  • 美发店发廊专用洗头床哪家好?2025推荐综合榜单
  • D. Taxes