JZOJ 5048. 【GDOI2017模拟一试4.11】IQ测试
Description
PTY进行IQ测试,测试的项目是判断一个序列是否是另外一个序列删除若干个数字之后得
到的,PTY 深知自己的IQ 低于sqrt(-1),所以他请来了智商超高的你来替他解决问题。
Input
第一行为一个整数n,第二行包括n个用空格分开的整数ai,组成了最初的序列,第三行为一个整数m,表示n个IQ测试询问的序列,每个序列两行,第一行给出长度 L(1<=L<=n),然后下一行为L 个由空格分开的整数bi。
Output
共m行,如果询问的序列确实是由最初的序列删除一些数得到,就输出TAK,否则输出NIE。
Sample Input
7
1 5 4 5 7 8 6
4
5
1 5 5 8 6
3
2 2 2
3
5 7 8
4
1 5 7 4
Sample Output
TAK
NIE
TAK
NIE
Data Constraint
对于30%的数据:n<=1000,m<=1000
对于100%的数据:1<=ai,bi<=1000000,ΣL<=1000000,n,m<=1000000
Solution
这题再一看很简单,维护两个指针即可,但是一看数据范围就吓个半死~
当我静下心来思考时,就发现没有想象中的那么恐怖。
注意到 ∑L≤106\sum{L}\leq10^6 ,于是考虑逐个逐个数列处理。
当处理到第i个数列时,将每一个元素在原数列中查找,当查找不到时则输出“NIE”;
怎样查找呢?——可以 O(logN)O(logN) 查找。
开一个Vector,读入原数列时,将当前值所处的的位置 Push进当前值的Vector中,
查找即可在Vector中二分查找未匹配的位置中最前的那一个,之后更新已匹配位置即可。
这样的时间复杂度为 NlogN 级别,加上 读入输出优化 可以避免卡常!
Code
#include<cstdio>
#include<vector>
#define P(x) putchar(x)
using namespace std;
vector<int>f[1000001];
inline int read()
{int data=0; char ch=0;while(ch<'0' || ch>'9') ch=getchar();while(ch>='0' && ch<='9') data=data*10+ch-'0',ch=getchar();return data;
}
int main()
{int n=read();for(int i=1;i<=n;i++) f[read()].push_back(i);int m=read();while(m--){int k=read(),last=0;bool bz=true;while(k--){int x=read();int l=0,r=f[x].size()-1;if(r<0 || f[x][r]<=last){bz=false;while(k--) read();break;}while(l<r){int mid=(l+r)>>1;if(f[x][mid]<=last) l=mid+1; else r=mid;}if(f[x][l]>last) last=f[x][l]; else{bz=false;while(k--) read();break;}}if(bz) P('T'),P('A'),P('K'); else P('N'),P('I'),P('E');P('\n');}return 0;
}
JZOJ 5048. 【GDOI2017模拟一试4.11】IQ测试相关推荐
- JZOJ 5050. 【GDOI2017模拟一试4.11】颜色树
Description 思源湖畔有一棵树,那是独孤玉溪最喜欢的地方. 传说中,这棵不见边际的树有N个节点,每个节点都有1片叶子,每片叶子都拥有K种颜色中的一种,独孤玉溪喜欢爬到这棵树上,沿着一条路线摘 ...
- BZOJ 5049. 【GDOI2017模拟一试4.11】腐女的生日
Description 腐女要过生日了,pty 想给腐女送礼物,但是腐女所在的教室离pty 的教室太远了,于是pty就拜托会动归和A星的djy帮忙送礼物.djy在学校建立了一个平面直角坐标系,他站在了 ...
- 【jzoj5055】【GDOI2017模拟二试4.12】【树上路径】【点分治】
题目大意 给定一颗n个结点的无根树,树上的每个点有一个非负整数点权,定义一条路径的价值为路径上的点权和-路径的点权最大值. 给定参数p,我们想知道,有多少不同的树上简单路径,满足它的价值恰好是p的倍数 ...
- 《金蝶ERP—K/3标准财务模拟实训(11.X版)》——第1章 金蝶K/3标准财务介绍 1.1 金蝶K/3标准财务系统介绍...
本节书摘来自异步社区<金蝶ERP-K/3标准财务模拟实训(11.X版)>一书中的第1章,第1.1节,作者 龚中华,何亮,更多章节内容可以访问云栖社区"异步社区"公众号查 ...
- IQ测试(jzoj 5048)
IQ测试 jzoj 5048 题目大意 给出一个序列a,然后有m个询问,每个询问给出一个序列,问这个序列是否可以由序列a删掉一些数得到的 输入样例 7 1 5 4 5 7 8 6 4 5 1 5 5 ...
- 梦幻模拟战手游服务器维护,梦幻模拟战手游11月21日更新公告 执行者降临限时召唤开启[多图]...
梦幻模拟战手游11月21日更新内容中开启了限时十连抽必得SR英雄哦,同时还有时空的轨迹SC秘境新挑战,接下来跟随安族大大来看看详细资讯详情吧,希望各位能够喜欢~ 梦幻模拟战手游11月21日更新公告 服 ...
- 今天收到模拟飞行平台X-Plane 11官方邮件
今天收到模拟飞行平台X-Plane 11官方邮件.主要是X-Plane 11.50版本正在经历一个长长的公测阶段,今天的版本是X-Plane 11.50b14,他们把API变成了thread unsa ...
- Java单元测试之模拟利器-使用PowerMock进行Mock测试
首页 国产Linux Linux命令 openSUSE ArchLinux Slackware FreeBSD Ubuntu CentOS Fedora Debian PHP教程 在线教程 登录 注册 ...
- 2022 . 11 . 26 测试赛解题报告
2022 . 11 . 26测试赛 [USACO21DEC] Lonely Photo B 题目描述 Farmer John 最近购入了 NNN 头新的奶牛(3≤N≤5×1053 \le N \le ...
最新文章
- C语言实现大数运算(长整数的加、减、乘、除)
- Linux用extundelete恢复磁盘文件-攻防世界Recover-Deleted-File
- html5后代选择符,css选择符有哪些?哪些属性可以继承?
- [ 转载 ] [经典排序算法][集锦]
- 不要再把 pp 写出 % 了。
- Angular refreshView里Component template函数的执行原理
- Linux下MySQL数据库常用基本操作 一
- laravel的安装
- java输出值_java参数传递(超经典)(强烈建议自己先写出程序的输出值)
- 软件测试的重要性与必要性,软件测试的目的和意义
- Qt自带mingw使用
- gif图片分解成序列帧(PS)
- 人脸识别的又一滥用案例:大数据杀熟,买房多付30W
- IOS开发进阶学习资料(提升必备)
- 【蓝桥杯冲刺 day12】题目全解析
- 用python实现人脸识别毕设_用Python实现一个简单的人脸识别,原来我和这个明星如此相似...
- 亭子早期博客中16进制颜色值地址
- cipher 加密解密
- Linux下Mysql的解压安装 5.7.32
- 【windows】网络设置了代理,怎么关闭