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的钢琴相关推荐

  1. JZOJ 5182. 【NOIP2017提高组模拟6.29】码灵鼠

    Description 码零鼠是一只很喜欢mx数学的神犇,上面那个不是ta本人的样子.这天,ta在研究一个神奇的数列,这个数列是这样的: a0 = 1 an = ai + aj (n>=1, i ...

  2. JZOJ 5184. 【NOIP2017提高组模拟6.29】Gift

    Description Input Output Solution 这题看上去有些 01背包,但是细节上却大有不同. 先将价格从小到大排序,由于剩余的钱什么也不能买, 所以当没购买的物品中价格最小的为 ...

  3. NOIP2017提高组模拟赛4 (总结)

    NOIP2017提高组模拟赛4 (总结) 第一题 约数 设K是一个正整数,设X是K的约数,且X不等于1也不等于K. 加了X后,K的值就变大了,你可以重复上面的步骤.例如K= 4,我们可以用上面的规则产 ...

  4. JZOJ 4932. 【NOIP2017提高组模拟12.24】B

    Description 现在你有 NN 个数,分别为 A1,A2,-,ANA1,A2,-,AN ,现在有M组询问需要你回答.每个询问将会给你一个L和R(L<=R)(L,保证 MaxAi−MinA ...

  5. JZOJ 5197. 【NOIP2017提高组模拟7.3】C

    Description Input Output Sample Input 3 Sample Output 1 Data Constraint Solution 这题我的方法是打表找规律,可以发现答案 ...

  6. JZOJ 5195. 【NOIP2017提高组模拟7.3】A

    Description Input Output Sample Input 7 3 Sample Output 4 Data Constraint Solution 这是一道经典的DP问题了,也可以把 ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

最新文章

  1. FOPEN FUNCTION
  2. 7、斐波那契数列、跳台阶、变态跳台阶、矩形覆盖------------剑指offer系列
  3. Latex安装中知道的基础常识
  4. MyBatis-02 MyBatis XML方式概述及配置步骤
  5. 更高效的利用Jupyter+pandas进行数据分析,6种常用数据格式效率对比!
  6. 从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题(如何解决编码 0 延时)
  7. df 和 ll 等命令无响应处理
  8. 高通MSM8953 Android7.1蓝牙接电话流程(App到Adsp)(十六)
  9. flask前端优化:css/js/html压缩
  10. web工程was部署
  11. VS中卸载当前的EF版本命令
  12. 飘云阁论坛出品汇编逆向专用记事本
  13. 基于HTML+CSS+JavaScript制作美食文化网站 ——卡通创意的烧烤(5个页面) html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计
  14. PS下载 PS2021中文版下载 Photoshop2021中文版22.5.1 ACR14.0最新
  15. Python爬虫技术及PyQt5界面编程实现12306火车票查询
  16. 数值分析-线性方程组的迭代法
  17. 声音断续、卡顿问题分析
  18. 渝粤题库 陕西师范大学《西方文论》作业
  19. 马化腾和张一鸣的灰度思维:普通人追求安全感,高手拥抱不确定性
  20. 计算机毕业论文选题推荐|软件工程|系列一

热门文章

  1. 机器学习导论(张志华):核定义
  2. 文件内存映射mmap解决大文件快速读写问题和进程间共享内存
  3. django 操作MySQL 中文乱码_Django 连接mysql数据库中文乱码
  4. C++中申请内存的正确方法
  5. bash-shell高级编程--引用
  6. 【CyberSecurityLearning 74】DC系列之DC-5渗透测试
  7. BugkuCTF-Misc:宽带信息泄露
  8. web.xml 中的listener、 filter、servlet 加载顺序及其详解
  9. 故障解决:error while loading shared libraries: libncurses.so.5
  10. Ubuntu环境下安装Bochs