「CF670C」Cinema 解题报告
题面
传送门
思路:
离散化、hash
对于这样一个明显的统计排序的题目,当然轻而易举啦~
但是!看!语言的编号 a数组和 b数组的值最大在\(10^9\)的级别,所以开个数组来存———That's impossible!
所以我们可以用上离散化(也就是hash)
离散化,我们有两种写法
第一种是自己手码代码
先排序,然后去重,接着用二分一一对应,达到离散化的目的
板子:
sort(b+1,b+n+1,cmp);
n=unique(b+1,b+n+1)-b-1;
for(i=1;i<=n;i++)
a[i]=lower_bound(b+1,b+n+1,a[i])-b;
第二种是使用STL库的map
头文件:#include <map>
定义方式:map<type,type> p;表示将前一种type映射到后一种type
其中的类型可以很多,比如double,string,int,bool等基本类型,也包括pair这种
如map<pair<int,int>,bool>p;允许的
操作:一般用数组的形式,直接p[x]访问、写入
PS:但是map的速度比较慢,想进一步提高可以使用unordered_map
此处不才不做讲解,具体详见洛谷日报
Code:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int b;
int a[200010];
map<int,int> p;
int cur,res,ans;
int read()
{
int s=0;
char c=getchar();
while(!isdigit(c))
c=getchar();
while(isdigit(c))
{
s=(s<<1)+(s<<3)+c-'0';
c=getchar();
}
return s;
}
int main()
{
int i;
int x;
n=read();
for(i=1;i<=n;i++)
p[read()]++;//科(珂)学家们能听懂的语言
m=read();
for(i=1;i<=m;i++)//电影配音
a[i]=read();
b=p[read()];
ans=1;//一开始默认第一种是答案
res=p[a[1]];
cur=b;
for(i=2;i<=m;i++)
{
b=p[read()];
x=p[a[i]];
if(x>=res)//比较听的懂配音,看的懂字幕的人数
{
if(x>res)
{
res=x;
cur=b;
ans=i;
}
else
if(cur<b)
{
ans=i;
cur=b;
}
}
}
printf("%d",ans);//跑过138个点!人憔悴~
return 0;
}
推荐题目:
「CF670C」Cinema 解题报告的更多相关文章
- 「ZJOI2016」旅行者 解题报告
「ZJOI2016」旅行者 对网格图进行分治. 每次从中间选一列,然后枚举每个这一列的格子作为起点跑最短路,进入子矩形时把询问划分一下,有点类似整体二分 至于复杂度么,我不会阿 Code: #incl ...
- 「HNOI2016」树 解题报告
「HNOI2016」树 事毒瘤题... 我一开始以为每次把大树的子树再接给大树,然后死活不知道咋做,心想怕不是个神仙题哦 然后看题解后才发现是把模板树的子树给大树,虽然思维上难度没啥了,但是还是很难写 ...
- 「HNOI2016」序列 解题报告
「HNOI2016」序列 有一些高妙的做法,懒得看 考虑莫队,考虑莫队咋移动区间 然后你在区间内部找一个最小值的位置,假设现在从右边加 最小值左边区间显然可以\(O(1)\),最小值右边的区间是断掉的 ...
- 「HNOI2016」网络 解题报告
「HNOI2016」网络 我有一个绝妙的可持久化树套树思路,可惜的是,它的空间是\(n\log^2 n\)的... 注意到对一个询问,我们可以二分答案 然后统计经过这个点大于当前答案的路径条数,如果这 ...
- 「HAOI2018」染色 解题报告
「HAOI2018」染色 是个套路题.. 考虑容斥 则恰好为\(k\)个颜色恰好为\(c\)次的贡献为 \[ \binom{m}{k}\sum_{i\ge k}(-1)^{i-k}\binom{m-k ...
- 「HNOI2016」最小公倍数 解题报告
「HNOI2016」最小公倍数 考虑暴力,对每个询问,处理出\(\le a,\le b\)的与询问点在一起的联通块,然后判断是否是一个联通块,且联通块\(a,b\)最大值是否满足要求. 然后很显然需要 ...
- 「SCOI2016」围棋 解题报告
「SCOI2016」围棋 打CF后困不拉基的,搞了一上午... 考虑直接状压棋子,然后发现会t 考虑我们需要上一行的状态本质上是某个位置为末尾是否可以匹配第一行的串 于是状态可以\(2^m\)压住了, ...
- 「SCOI2016」妖怪 解题报告
「SCOI2016」妖怪 玄妙...盲猜一个结论,然后过了,事后一证,然后假了,数据真水 首先要最小化 \[ \max_{i=1}^n (1+k)x_i+(1+\frac{1}{k})y_i \] \ ...
- 「SCOI2016」美味 解题报告
「SCOI2016」美味 状态极差无比,一个锤子题目而已 考虑每次对\(b\)和\(d\)求\(c=d \ xor \ (a+b)\)的最大值,因为异或每一位是独立的,所以我们可以尝试按位贪心. 如果 ...
随机推荐
- 数据库设计mysql字段不默认为NULL原因搜集
索引不会包含有NULL值的列 只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的.所以我们在数据库设计时不要让字段的默认值为NULL ...
- 使用FormData格式上传图像并预览图片
前言 做项目时,遇到表单中图像需要跟表单一起提交,这样会造成后台没办法接收到图片.后面上网调查后,明白表单提交时是默认application/x-www-form-urlencoded格式,只接受键值 ...
- H3C 广域网的作用
- laravel使用加载进行优化
两种方式: 1.使用:with $posts=Post::orderby('created_at','desc')->withCount(['comments','zans'])->wit ...
- SuperSocket命令程序集定义
是的,SuperSocket是用反射来查找哪些公开的类实现了基本的命令接口,但是它只在你的AppServer类定义的程序集中查找. 举例来说, 你的 AppServer 定义在程序集 GameServ ...
- 2018-10-19-Nuget-通过-dotnet-命令行发布
title author date CreateTime categories Nuget 通过 dotnet 命令行发布 lindexi 2018-10-19 09:15:53 +0800 2018 ...
- Python--day61--ORM介绍及Django使用ORM创建表
ORM: 使用django的ORM详细步骤:(pymysql操作数据库:) #1,自己动手创建数据库(create database 数据库名字;) #2,在Django项目中(setting.py文 ...
- Vue 语法的一些小问题
设置 sty行内样式 :style="{width:mapWidth,height:mapHeight}" This指向 axios 使用axios 的时候 ,在生命周期函数 ...
- Python--day41--线程队列
1,普通队列:queue.Queue(),先进先出 import queue q = queue.Queue() #队列 先进先出 q.put(1) q.put(2) q.put(3) q.put(4 ...
- 设置html各元素不可点击(持续更新)
1.span <span id="nextStep" onclick="right">下一页</span> $("#nextS ...