首页 > 其他分享 >洛谷 P8572【暴力】【根号分治】

洛谷 P8572【暴力】【根号分治】

时间:2022-10-11 09:23:27浏览次数:56  
标签:洛谷 暴力 P8572 int 分治 枚举 lld% 根号

根号分治。

需要进行分类讨论:

当 \(n\le k\) 的时候,可以进行暴力 \(\#1\):暴力求出数组所有区间的最大值。(需要使用前缀和)

否则,可以使用一个叫做 “记忆化” 的鬼玩意。

如果当前区间已经被枚举过,那么由于是静态的,直接输出上一回枚举的答案。否则就暴力枚举然后记录答案。

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 5e5 + 10;
vector <int> z[N], s[N];
map <pair <int, int>, int> mp;

signed main()
{
  int n, k, q;
  scanf ("%lld%lld%lld", &n, &k, &q);
  for (int i = 1; i <= k; i ++)
    z[i].resize(n + 1);
  for (int i = 1; i <= k; i ++)
    s[i].resize(n + 1);
  for (int i = 1; i <= k; i ++)
    for (int j = 1; j <= n; j ++)
      scanf ("%lld", &z[i][j]);
  for (int i = 1; i <= k; i ++)
    for (int j = 1; j <= n; j ++)
      s[i][j] = s[i][j - 1] + z[i][j];
  if (n <= k)
  {
    for (int l = 1; l <= n; l ++)
      for (int r = l; r <= n; r ++)
      {
        int mx = 0;
        for (int p = 1; p <= k; p ++)
          mx = max(mx, s[p][r] - s[p][l - 1]);
        mp[make_pair(l, r)] = mx;
      }
    while (q --)
    {
      int l, r;
      scanf ("%lld%lld", &l, &r);
      printf ("%lld\n", mp[make_pair(l, r)]);
    }
  }
  else
  {
    set <pair <int, int> > se;
    while (q --)
    {
      int l, r;
      scanf ("%lld%lld", &l, &r);
      if (!se.count(make_pair(l, r)))
      {
        int ans = 0;
        for (int p = 1; p <= k; p ++)
          ans = max(ans, s[p][r] - s[p][l - 1]);
        mp[make_pair(l, r)] = ans;
        se.insert(make_pair(l, r));
      }
      printf ("%lld\n", mp[make_pair(l, r)]);
    }
  }
  return 0;
}

标签:洛谷,暴力,P8572,int,分治,枚举,lld%,根号
From: https://www.cnblogs.com/lxylluvio/p/luogu8572.html

相关文章

  • 洛谷P4320 道路相遇(LCA+圆方树)
    题目链接:https://www.luogu.com.cn/problem/P4320道路相遇题目描述在H国的小w决定到从城市$u$到城市$v$旅行,但是此时小c由于各种原因不在城市$u$,但是小c决......
  • 洛谷 P3488 [POI2009]LYZ-Ice Skates 题解
    错解每次跑二分图匹配,时间复杂度显然爆炸。时间复杂度:我被杀手皇后摸过了正解引入Hall定理:设二分图中\(G=<V_1,V_2,E>,|V_1|\le|V_2|\),则G中存在\(V_1\)到......
  • 【luogu CF1553F】Pairwise Modulo(树状数组)(根号分治)
    PairwiseModulo题目链接:luoguCF1553F题目大意给你一个序列,对于每个前缀,要你求两两互相取模的结果的和。思路考虑新加入一个数增加的答案。那就是加两个部分:\(\sum......
  • 洛谷 P3067 [USACO12OPEN]Balanced Cow Subsets G 折半搜索
    题目https://www.luogu.com.cn/problem/P3067思路考虑折半搜索,第一个dfs对[1,n/2]的数进行分组,+代表第一组,-代表第二组,并计算两组总和的情况方案数\(a_i\)。第二个dfs......
  • 洛谷 P3530 / bzoj2788【tarjan】【差分约束】
    判断是否有解可以使用差分约束。求解赛车手的成绩的取值可以使用Floyd。但是\(O(n^3)\)会TLE。可以先进行一次缩点。然后进行Floyd求出每一个连通块内的最长路径......
  • 基于systemgenerator的根号计算
    一、系统设计仿真结果以及硬件资源估计(用于复制到你的那个txt文件中去即可。)顶层框图: 整个系统的结构如下所示: 进入内部模块则有: 其主要由三大部分组成: 第一部分:输入信......
  • 洛谷 P5194 [USACO05DEC]Scales S 折半搜索
    题目https://www.luogu.com.cn/problem/P5194思路\(n\leq1000\)的范围很吓人,但是按照【每个砝码的质量至少等于前面两个砝码的质量的和】的规则,打表可知n在50时总重量......
  • 【做题笔记】洛谷P5584 【SWTR-01】Sunny's Crystals
    ProblemP5584【SWTR-01】Sunny'sCrystals题目大意:给你一个长度为\(n\)的序列,每次可以删掉下标为\(2\)的非负整数次幂的数,删掉一个数后他后面的数会往前补,问删掉所......
  • 洛谷 P6146
    由于博主是只鸽子,所以咕咕咕。()不,应该是目录不在更新,请关注博客首页。有空我把目录更新一下,好久不更了传送门YouareMiserable(ATLv.15)思路Stage1这题其实是个......
  • Solution -「CSTC 2017」「洛谷 P3772」游戏
    \(\mathscr{Description}\)  有\(n\)个随机真值\(x_{1..n}\),已知\(P(x_1=1)=p_1\),对于\(2\lei\len\),\(P(x_i=1\midx_{i-1}=1)=p_i\),\(P(x_i=1\midx_{i......