「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)\)的最大值,因为异或每一位是独立的,所以我们可以尝试按位贪心. 如果 ...
随机推荐
- 「BZOJ3505」[CQOI2014] 数三角形
「BZOJ3505」[CQOI2014] 数三角形 这道题直接求不好做,考虑容斥,首先选出3个点不考虑是否合法的方案数为$C_{(n+1)*(m+1)}^{3}$,然后减去三点一线的个数就好了.显然不 ...
- P1144 最短路计数 题解 最短路应用题
题目链接:https://www.luogu.org/problem/P1144 其实这道题目是最短路的变形题,因为数据范围 \(N \le 10^6, M \le 2 \times 10^6\) , ...
- H3C UDP封装
- git比较两个版本之间的区别
查看当前没有add 的内容修改: git diff 查看已经add 没有commit 的改动 git diff --cached 查看当前没有add和commit的改动: git diff HEAD ...
- kwargs.pop是什么意思
pop()函数一般用来删除list列表的末尾元素,同样,kwargs.pop()用来删除关键字参数中的末尾元素,比如:kwargs = {'Michael': 95, 'Bob': 75, 'Trac ...
- 关于浏览器ip代理导致定位错乱问题的坑
http://m.welltrend.com.cn/网站在Android手机的qq浏览器或者uc浏览器或者在微信中打开连接访问时,点击右侧的聊天按钮,经常出现手机在北京结果定位到天津的问题,或者广州的 ...
- Example-09-01
#define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <cstring> int min(int a, int ...
- uni-app学习记录05-二级联动及获取DOM对象
<template> <view> <view class="id"> <view class="left"> ...
- H3C IP路由表摘要信息
- java 布局管理器
容器中的组件的排放方式,就是布局. 常见的布局管理器: FlowLayout(流式布局管理器)//目前最常用的 从左到右的顺序排列. Panel默认的布局管理器. BorderLayout(边界布局管 ...