src 给1e6长的字符串,构造一个连续排列的金字塔,类似蛇形地放入。求第ai行字符ci有几个。ai有1e18,但询问k只有1e5。


对单个询问,容易想到求前后缀。因为第ai行之前的长度,能用求和公式算出来,虽然溢出longlong,但我们只需要取模能知道ai开始和结尾的信息即可。

这道题内存只给 65536K(65MB),特意去卡 1e6*26的二维数组。(int数组这样开接近100MB),只好用一维数组。我把询问离线存下,按字母排序,每次字母改变时,重新计算前后缀。

注意,求和公式的时候,涉及1e18数量级的乘法。最好每个数都保证在模范围内。

#pragma comment(linker, "/STACK:102400000,102400000")
#define _debug(x) cerr<<#x<<" = "<<(x)<<endl;fflush(stdout)#include <bits/stdc++.h>using namespace std;
typedef long long ll;
const int MAXN = 1e6 + 77;
const ll INF = 0x3f3f3f3f;
const ll MOD = 1e9 + 7;struct Query {ll ai;char ci;int i;bool operator<(const Query &q) const {return ci < q.ci;}} ask[50004];ll n, k;
ll ans[50004];
int ser[MAXN];
int pre[MAXN];
char s[MAXN];char ch[2];
char ci;
char lci = -1;ll ai;
ll rlen, plen, timz, tlen, slen;inline void recalc(char c) {for (ll i = 1, j = slen; i <= slen; ++i, --j) {pre[i] = pre[i - 1];ser[i] = ser[i - 1];if (s[i] == c)pre[i]++;if (s[j] == c)ser[i]++;}
}int main() {//    ios::sync_with_stdio(false);
//    cin.tie(nullptr);scanf("%lld %s", &n, s + 1);scanf("%lld", &k);slen = strlen(s + 1);for (int i = 0; i < k; ++i) {scanf("%lld %s", &ai, ch);ci = ch[0] - 'A';ask[i] = {ai, ci, i};}sort(ask, ask + k);for (int id, i = 0; i < k; i++) {ai = ask[i].ai;ci = ask[i].ci;id = ask[i].i;if (lci != ci)recalc(ci + 'A');lci = ci;if (ai % 2 == 0) {rlen = (((ai - 1) % slen) * ((ai / 2ll) % slen)) % slen;} else {rlen = ((((ai - 1) / 2ll) % slen) * (ai % slen)) % slen;}// rest  before the ai lineplen = (slen - rlen);if (ai <= plen) {ans[id] = ser[plen] - ser[plen - ai];continue;}timz = (ai - plen) / slen;tlen = (ai - plen) % slen;ans[id] = ser[plen] * 1ll + timz * pre[slen] + pre[tlen] * 1ll;}for (int i = 0; i < k; i++) {printf("%lld\n", ans[i]);}return 0;
}/*8000000000000
JANJETINA
5
6000000000001 J
6000000000002 A
6000000000003 N
6000000000004 N
6000000000005 N8000000000000
AB
10
60000000000000001 A
60000000000000001 B
60000000000000002 A
60000000000000002 B
60000000000000003 A
60000000000000003 B
60000000000000004 A
60000000000000004 B
60000000000000005 A
60000000000000005 B8000000000000
AB
10
1 A
1 B
2 A
2 B
3 A
3 B
4 A
4 B
5 A
5 B8000000000000
AB
5
60000000000000000 A
60000000000000001 A
60000000000000002 A
60000000000000003 A
60000000000000004 A* */

COCI2014/2015 Contest#1 PIRAMIDA 优化空间相关推荐

  1. cuda nvprof 输出结果的理解和优化空间

    该内容来自 http://stackoverflow.com/questions/30371030/understanding-cuda-profiler-output-nvprof 放在这里作为一个 ...

  2. Intel:酷睿第12代CPU在游戏中有很大的优化空间

    在Intel 2021年架构日活动中,英特尔公布了XeSS(英特尔自己的基于人工智能的神经超采样)等技术,以及即将于今年晚些时候推出的Alder Lake CPU(第12代酷睿CPU)的最终设计.Al ...

  3. 第5课 开心的金明《聪明人的游戏:信息学探秘.提高篇》(优化空间)

    [NOIP2006 普及组] 开心的金明 - 洛谷 """ 第5课 开心的金明<聪明人的游戏:信息学探秘.提高篇>(优化空间) https://www.luo ...

  4. 2019多校第一场 HDU6578 - Blank(DP,思维,滚动数组优化空间)

    链接:HDU6578 - Blank 题意: 有 n (≤100) 个格子,向其中填入 0.1.2.3 这4个数,但是有 m (≤100) 个限制 限制 l r x :表示 l ~ r 的格子内不同的 ...

  5. POJ 1159 - Palindrome 优化空间LCS

    将原串和其逆序串的最长公共子序列求出来为M..那么2*n-M就是所需要加的最少字符..因为求出的M就是指的原串中"潜伏"的最长回文.. 问题转化为求LCS..但是n最大到5000. ...

  6. 【LeetCode】LeetCode之打家劫舍【暴力递归、动态规划、动态规划之优化空间的具体分析与实现】

  7. vue——js实现图片/文件的拖拽上传(复制粘贴就能用,还有优化空间)

    首先先创建元素容器 <template><div id="drop"><span v-show="isUpload" class= ...

  8. 【HDU - 1561】The more, The Better(树形背包,dp,依赖背包问题与空间优化,tricks)

    题干: ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物.但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城 ...

  9. 【51Nod - 1272 】最大距离 (思维,排序sort的空间优化)

    题干: 给出一个长度为N的整数数组A,对于每一个数组元素,如果他后面存在大于等于该元素的数,则这两个数可以组成一对.每个元素和自己也可以组成一对.例如:{5, 3, 6, 3, 4, 2},可以组成1 ...

最新文章

  1. 如何在 Unix 和 DOS 格式之间转换文本文件
  2. python【数据结构与算法】红黑树概念辨析
  3. C 语言里的字符串---字符数组
  4. CDH4.0安装及配置(二)配置网易yum源
  5. arm cortex-a8 天梯图_ARM正式推出CortexA78C核心:针对笔记本电脑设计、支持8个大核心...
  6. 训练日志 2018.12.20
  7. 【Windows 命令行】CMD 在资源管理器中打开当前路径
  8. Hadoop伪分布式集群的安装部署
  9. python 生成exe anaconda_Anaconda 搭建 Tensorflow 2 开发环境
  10. kafka sink mysql,kafka之七 sinkTask详解
  11. 【趣味连载】攻城狮上传视频与普通人上传视频:(一)生成结构化数据
  12. 排队 (白雪公主与n个小矮人)
  13. dell服务器系统备份软件,使用 AlienRespawn 备份 Alienware 电脑的系统
  14. 月播放量增长2300倍,品牌如何在B站迅速打造爆品?
  15. 反向寻车管理系统服务器,一种反向寻车系统及寻车方法
  16. Ubuntu IDEA返回上一次位置快捷键失效问题解决
  17. WC!咱平时使用的PDF,原来这么不安全?
  18. 安装Bumblebee解决Ubuntu笔记本发热量大问题
  19. 【R语言学习笔记】若干排序问题
  20. 慕尼黑工业大学开源含四季的数据集:用于自动驾驶的视觉长期定位

热门文章

  1. android防拷贝防复制,有没有一款可以加密保护u盘防拷贝防复制软件
  2. MySQL开启定时任务
  3. 4.Redis的内存维护策略
  4. “同声传译”的难度有多大?
  5. C++/学生信息管理系统
  6. windows系统库
  7. 物联网LoRa系列-24:LoRa终端--PingPong应用程序常见问题解析
  8. 【Base】ping-pong buffer
  9. ES6中派生类的Super为什么一定要在使用this前调用
  10. 高校聘请13名韩国博士引争议,寒暑假完成博士课程,2.5年拿到证书