[题解]luogu_AT1224_JOIOJI
https://www.cnblogs.com/fengzhiyuan/p/7588443.html
不会map,有点菜
1.要想知道三个字母出现次数相等, 为J [ i ]-J [ j ]== O[ i ]-O[ j ] == I [ i ]- I [ j ],移项得 J[ i ]-O[ i ]=J[ j ]-O[ j ] 其他同理
2.于是我们可以把每个 J[ i ]-O[ i ],O[ i ]-I[ i ]的二元组映射成出现这个组的位置,长度即为i-出现位置
至于为什么会想到哈希/map,还要问问dalao们才行
#include<iostream>
#include<cstdio>
#include<map>
#define mp make_pair
using namespace std;
int n,ans;
char s[];
int sum[][];//出現次數和
map<pair<int,int>,int>m;//把出現次數差的二元組映射為出現位置處
int main()
{
scanf("%d",&n);
scanf("%s",s+);
m[mp(,)]=;
for(int i=;i<=n;i++){
sum[][i]=sum[][i-]+(s[i]=='J');
sum[][i]=sum[][i-]+(s[i]=='O');
sum[][i]=sum[][i-]+(s[i]=='I');
if(m.find( mp(sum[][i]-sum[][i],sum[][i]-sum[][i]) ) == m.end())//如果map里沒有這個二元組
m[mp(sum[][i]-sum[][i],sum[][i]-sum[][i])]=i;//插入
else ans=max(ans,i-m[mp(sum[][i]-sum[][i],sum[][i]-sum[][i])]);//找到了更新ans,即為i-那次出現位置,也就是長度
}
printf("%d\n",ans);
}
[题解]luogu_AT1224_JOIOJI的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- view定位
- 在 Linux 上如何清除内存的 Cache、Buffer 和交换空间
原文链接:http://www.linuxidc.com/Linux/2015-06/118856.htm 像任何其他的操作系统一样,GNU/Linux 已经实现的内存管理不仅有效,而且更好.但是,如 ...
- Bestcoder BestCoder Round #28 A Missing number(查找缺失的合法数字)
Problem Description There is a permutation without two numbers in it, and now you know what numbers ...
- BestCoder Round #92 1002 Count the Sheep —— 枚举+技巧
题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=748&pid=1002 题解: 做题的时候只是想到 ...
- OSI和TCP/IP
OSI和TCP/IP 1. OSI的七层网络结构(功能及特点) 1) 物理层:为数据链路层提供物理连接,在其上串行传送比特流,即所传送数据的单位是比特.此外,该层中还具有确定连接设备的 ...
- BZOJ 1620 [Usaco2008 Nov]Time Management 时间管理:贪心
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1620 题意: 有n个工作,每一个工作完成需要花费的时间为tim[i],完成这项工作的截止日 ...
- python学习笔记:第二天(基本数据类型)
Python3 基本数据类型 1.标准数据类型 Python3中有六个标准的数据类型:Number(数字).String(字符串).List(列表).Tuple(元组).Sets(集合).Dictio ...
- hdu 1040 As Easy As A+B(排序)
题意:裸排序 思路:排序 #include<iostream> #include<stdio.h> #include<algorithm> using namesp ...
- 【C】由printf("%d\t%d\t%d\n",a,a+=(a++),a);引起的思考
#include<stdio.h> int main() { ,a1=; ,b1=; printf("(1)后自加:\n"); printf("a+=(a++ ...
- python BaseManager分布式学习
如果我们已经有一个通过Queue通信的多进程程序在同一台机器上运行,现在,由于处理任务的进程任务繁重,希望把发送任务的进程和处理任务的进程分布到两台机器上.怎么用分布式进程实现?原有的Queue可以继 ...