JZOJ 5183. 【NOIP2017提高组模拟6.29】小T的钢琴
Description
Input
Output
Sample Input
9 3
A1 B2 C3 D4 E5 D4.0 C3.0 B2.0 A1.0[nya]
3 A1 A1.0 E5[qwerty]
5 B1{poi} B2 C3 A2 A1
7 C3 D4 E5 D4.0 C3.0 B2.0 A1.0[nyanya]
Sample Output
0.666667
0.400000
1.000000
Data Constraint
Hint
Solution
解决这题的第一步就是先读入数据,繁琐的数据真令人心烦。
Tip:读入的每个音符可以转化成一个 intint 型的整数,方便处理之后的排序、二分。
接着我们就可以处理最长公共子序列了,但 O(N2)O(N^2) 不能接受。
观察到题目说“每个音符都不会重复出现”,于是对每个音符赋一个编号,
再按照它们的值进行排序,从乐谱P中逐个拿数来匹配,二分从哪里查找。
这样问题就成了典型的LIS问题(最长上升子序列),可以 O(NlogN)O(NlogN) 解决。
Code
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=100002;
struct data
{int v,id;
}a[N];
int b[N<<1],ans[N];
char s[20];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
inline bool cmp(data x,data y)
{return x.v<y.v;
}
int main()
{int n=read(),m=read();for(int i=1;i<=n;i++){scanf("%s",&s);int x=strlen(s);a[a[i].id=i].v=(s[0]-'A'+1)*10+s[1]-'0';if(x>2 && s[2]=='.')for(int j=3;j<x;j++){if(s[j]=='(' || s[j]=='[' || s[j]=='{') break;a[i].v=a[i].v*10+s[j]-'0';}}sort(a+1,a+1+n,cmp);while(m--){int t=read();for(int i=1;i<=t;i++){scanf("%s",&s);int x=strlen(s);b[i]=(s[0]-'A'+1)*10+s[1]-'0';if(x>2 && s[2]=='.')for(int j=3;j<x;j++){if(s[j]=='(' || s[j]=='[' || s[j]=='{') break;b[i]=b[i]*10+s[j]-'0';}}ans[0]=0;for(int i=1;i<=t;i++){int l=1,r=n;while(l<r){int mid=(l+r)>>1;if(a[mid].v>=b[i]) r=mid; else l=mid+1;}if(a[l].v!=b[i]) continue;if(ans[ans[0]]<a[l].id) ans[++ans[0]]=a[l].id; else{int x=lower_bound(ans+1,ans+1+ans[0],a[l].id)-ans;ans[x]=a[l].id;}}printf("%.6lf\n",ans[0]*1.0/t);}return 0;
}
JZOJ 5183. 【NOIP2017提高组模拟6.29】小T的钢琴相关推荐
- JZOJ 5182. 【NOIP2017提高组模拟6.29】码灵鼠
Description 码零鼠是一只很喜欢mx数学的神犇,上面那个不是ta本人的样子.这天,ta在研究一个神奇的数列,这个数列是这样的: a0 = 1 an = ai + aj (n>=1, i ...
- JZOJ 5184. 【NOIP2017提高组模拟6.29】Gift
Description Input Output Solution 这题看上去有些 01背包,但是细节上却大有不同. 先将价格从小到大排序,由于剩余的钱什么也不能买, 所以当没购买的物品中价格最小的为 ...
- NOIP2017提高组模拟赛4 (总结)
NOIP2017提高组模拟赛4 (总结) 第一题 约数 设K是一个正整数,设X是K的约数,且X不等于1也不等于K. 加了X后,K的值就变大了,你可以重复上面的步骤.例如K= 4,我们可以用上面的规则产 ...
- JZOJ 4932. 【NOIP2017提高组模拟12.24】B
Description 现在你有 NN 个数,分别为 A1,A2,-,ANA1,A2,-,AN ,现在有M组询问需要你回答.每个询问将会给你一个L和R(L<=R)(L,保证 MaxAi−MinA ...
- JZOJ 5197. 【NOIP2017提高组模拟7.3】C
Description Input Output Sample Input 3 Sample Output 1 Data Constraint Solution 这题我的方法是打表找规律,可以发现答案 ...
- JZOJ 5195. 【NOIP2017提高组模拟7.3】A
Description Input Output Sample Input 7 3 Sample Output 4 Data Constraint Solution 这是一道经典的DP问题了,也可以把 ...
- JZOJ 5186. 【NOIP2017提高组模拟6.30】tty's home
Description Input Output Sample Input input 1: 5 1 1 1 1 1 1 2 2 3 3 4 4 5 input 2: 5 0 1 0 1 0 1 2 ...
- JZOJ 5185. 【NOIP2017提高组模拟6.30】tty's sequence
Description Input Output Sample Input input 1: 6 3 1 1 1 0 0 0 input 2: 6 3 1 1 0 1 0 0 input 3: 6 3 ...
- JZOJ 5177. 【NOIP2017提高组模拟6.28】TRAVEL
Description Input Output Sample Input 4 4 1 2 1 10 2 4 3 5 1 3 1 5 2 4 2 7 Sample Output 6 2 3 4 5 6 ...
最新文章
- FOPEN FUNCTION
- 7、斐波那契数列、跳台阶、变态跳台阶、矩形覆盖------------剑指offer系列
- Latex安装中知道的基础常识
- MyBatis-02 MyBatis XML方式概述及配置步骤
- 更高效的利用Jupyter+pandas进行数据分析,6种常用数据格式效率对比!
- 从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题(如何解决编码 0 延时)
- df 和 ll 等命令无响应处理
- 高通MSM8953 Android7.1蓝牙接电话流程(App到Adsp)(十六)
- flask前端优化:css/js/html压缩
- web工程was部署
- VS中卸载当前的EF版本命令
- 飘云阁论坛出品汇编逆向专用记事本
- 基于HTML+CSS+JavaScript制作美食文化网站 ——卡通创意的烧烤(5个页面) html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计
- PS下载 PS2021中文版下载 Photoshop2021中文版22.5.1 ACR14.0最新
- Python爬虫技术及PyQt5界面编程实现12306火车票查询
- 数值分析-线性方程组的迭代法
- 声音断续、卡顿问题分析
- 渝粤题库 陕西师范大学《西方文论》作业
- 马化腾和张一鸣的灰度思维:普通人追求安全感,高手拥抱不确定性
- 计算机毕业论文选题推荐|软件工程|系列一
热门文章
- 机器学习导论(张志华):核定义
- 文件内存映射mmap解决大文件快速读写问题和进程间共享内存
- django 操作MySQL 中文乱码_Django 连接mysql数据库中文乱码
- C++中申请内存的正确方法
- bash-shell高级编程--引用
- 【CyberSecurityLearning 74】DC系列之DC-5渗透测试
- BugkuCTF-Misc:宽带信息泄露
- web.xml 中的listener、 filter、servlet 加载顺序及其详解
- 故障解决:error while loading shared libraries: libncurses.so.5
- Ubuntu环境下安装Bochs