String Game
二分答案的练手题,虽然很淼,但本题解提供一种清爽的解。
- 首先,二分什么:
当然是二分可以删除的次数,并使用 check
函数判断该值是否合法。这点毋庸置疑。
check
怎么写。
首先,我们假设可以删除 $m$ 次。使用标记数组将 $a_1$ 到 $a_m$,所表示的字符串下标,置为不可使用。
然后拟定一个字符串 $b$ 的下标 $c$,遍历字符串 $a$,若 $b_c$ 与字符串 $a$ 当前位置上的字符相同,则 c++
。
若 c=b.size
则该 $m$ 是合法的。反之,不合法。
代码:
#include<bits/stdc++.h>
using namespace std;
string a,t;
int b[200001];
bool f[200001];
int sizea,sizet;
bool check(int m){
memset(f,0,sizeof f);//一定要清零。
for(int i=1;i<=m;i++) f[b[i]-1]=1;//题中给出的下标是从1开始的,但字符串的下标是从0开始的,所以要-1。
int cnt=0;
for(int i=0;i<sizea;i++){
if(!f[i]&&a[i]==t[cnt]) cnt++;//若相等,个数加一
if(cnt==sizet) return 1;//合法。
}
return 0;
}
int main()
{
cin>>a>>t;
sizea=a.size();
sizet=t.size();
for(int i=1;i<=sizea;i++){
cin>>b[i];
}
int l=0,r=sizea,mid,ans=0;
while(l<=r){
mid=(l+r)/2;
if(check(mid)){
ans=mid;
l=mid+1;
}
else r=mid-1;
}
cout<<ans;
return 0;
}
String Game的更多相关文章
- 透过WinDBG的视角看String
摘要 : 最近在博客园里面看到有人在讨论 C# String的一些特性. 大部分情况下是从CODING的角度来讨论String. 本人觉得非常好奇, 在运行时态, String是如何与这些特性联系上的 ...
- JavaScript String对象
本编主要介绍String 字符串对象. 目录 1. 介绍:阐述 String 对象的说明以及定义方式. 2. 实例属性:介绍 String 对象的实例属性: length. 3. 实例方法:介绍 St ...
- ElasticSearch 5学习(9)——映射和分析(string类型废弃)
在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...
- [C#] string 与 String,大 S 与小 S 之间没有什么不可言说的秘密
string 与 String,大 S 与小 S 之间没有什么不可言说的秘密 目录 小写 string 与大写 String 声明与初始化 string string 的不可变性 正则 string ...
- js报错: Uncaught RangeError: Invalid string length
在ajax请求后得到的json数据,遍历的时候chrome控制台报这个错误:Uncaught RangeError: Invalid string length,在stackoverflow查找答案时 ...
- c# 字符串连接使用“+”和string.format格式化两种方式
参考文章:http://www.liangshunet.com/ca/201303/218815742.htm 字符串之间的连接常用的两种是:“+”连接.string.format格式化连接.Stri ...
- 【手记】注意BinaryWriter写string的小坑——会在string前加上长度前缀length-prefixed
之前以为BinaryWriter写string会严格按构造时指定的编码(不指定则是无BOM的UTF8)写入string的二进制,如下面的代码: //将字符串"a"写入流,再拿到流的 ...
- JavaScript中String对象的方法介绍
1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...
- 在多线程编程中lock(string){...}隐藏的机关
常见误用场景:在订单支付环节中,为了防止用户不小心多次点击支付按钮而导致的订单重复支付问题,我们用 lock(订单号) 来保证对该订单的操作同时只允许一个线程执行. 这样的想法很好,至少比 lock( ...
- BCL中String.Join的实现
在开发中,有时候会遇到需要把一个List对象中的某个字段用一个分隔符拼成一个字符串的情况.比如在SQL语句的in条件中,我们通常需要把List<int>这样的对象转换为“1,2,3”这样的 ...
随机推荐
- Peach-Printer2.0 Web 打印服务解决方案
Peach-Printer1.0在沉寂许久后迎来了一个使用客户,非常感谢客户的支持和理解. 通过客户的使用反馈本人尝试对1.0版本进行完善修改,但始终打印效果未能实现预期.思索许久后决心更改打印控件的 ...
- Windows 提权-服务_弱服务权限
本文通过 Google 翻译 Weak Service Permissions – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行 ...
- K8S 问题排查: cgroup 内存泄露问题
Posted on 2019年12月6日Leave a comment Contents [hide] 1 前言 2 现象 3 原因 4 解决方案 4.1 方案一 4.2 方案二 4.3 方案三 5 ...
- [WPF]XAML中使用IMultiValueConverter实现Command的多参数传参
问题 如何对ICommand传入多个参数? 背景 最近在做一个WPF的开发,有多个相近的功能写了不同的Command,因为要对应不同的对象.因为是CtrlCV,显得代码有点冗赘不够优雅,但是IComm ...
- BUUCTF---异性相吸(欠编码)
1.题目 ܟࠄቕ̐员䭜塊噓䑒̈́ɘ䘆呇Ֆ䝗䐒嵊ᐛ asadsasdasdasdasdasdasdasdasdasdqwesqf 2.知识 3.解题 很奇怪,不知道什么加密,借鉴网上参考,得知需将其转化为 ...
- while(bug)
while(bug) { // 加了班也不一定写的完代码 // 写完了代码也不一定编译的过 // 编译过了也不一定没bug // 有了bug也不一定找的到 // 找到bug也不一定改的了 // 改了这 ...
- verilog利用线性插值实现正弦波生成器(dds)
verilog实现线性插值实现正弦波生成器 最近在项目上遇到一个需要在低资源FPGA上实现FFT逻辑的项目,而且要求实现窗函数.对于窗函数来说,莫非是实现正弦波生成器,正弦波生成器可以利用DDS模 ...
- HTB打靶记录-TheFrizz
信息收集 nmap -sV -sC -O 10.10.11.60 Nmap scan report for 10.10.11.60 Host is up (0.63s latency). Not sh ...
- 基于FREERTOS的BOOTLOADER跳转APP调试笔记
使用场景:BootLoader基于Freertos,APP是裸机 程序. BootLoader设置方法 void iap_app_load(uint32_t appxaddr) { uint32_t ...
- MySQL 中的索引数量是否越多越好?为什么?
MySQL 中的索引数量是否越多越好?为什么? 虽然索引能够提高查询性能,但并不是索引越多越好.索引数量过多会带来一定的负面影响,尤其是在写操作频繁的场景下.需要根据实际的查询需求来合理设计索引,以平 ...