[CC-XYHUMOQ]A humongous Query

题目大意:

有一个长度为\(n(n\le32)\)的以\(1\)开头,\(0\)结尾的\(01\)序列\(S\)。令\(f(S)\)表示序列\(S\)中包含的\(10\)交错的子序列的个数,其中\(10\)交错子序列是指\(1\)和\(0\)交错出现且第一个字符是\(1\)最后一个字符是\(0\)的子序列,例如\(f(1100)=4\)。

现在给定\(S\)和一个整数\(m(m\le10^6)\)你需要通过修改\(S\)中的某些位置的字符得到\(T\),使得\(T\)也是一个以\(1\)开头,\(0\)结尾的\(01\)序列,且 \(f(T)=m\)。求是否有解,如果有解,输出需要至少修改几个字符。

思路:

考虑一个暴力的做法,枚举\(T\),\(f[i][0/1]\)表示到\(i\)这个位置,以\(1\)开头,\(0/1\)结尾子序列有多少个。显然当\(f[n+1][0]=m+1\)的\(T\)满足条件。

而我们现在已经知道了\(X\),由于前面DP的转移是唯一的,因此我们只需要枚举\(f[n+1][1]\)即可倒推得到整个\(f\)数组,进而得知\(T\)。

时间复杂度\(\mathcal O(nm)\)。

源代码:

#include<cstdio>
#include<cctype>
#include<climits>
#include<cstring>
#include<algorithm>
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'0';
while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
return x;
}
const int N=33;
char s[N];
int f[2];
int main() {
for(register int T=getint();T;T--) {
scanf("%s",s);
const int n=strlen(s),m=getint();
for(register int i=0;i<n;i++) s[i]-='0';
int ans=INT_MAX;
for(register int i=1;i<=m;i++) {
f[0]=m+1;
f[1]=i;
int tmp=0;
for(register int i=n-1;i>=1;i--) {
if(f[0]>=f[1]) {
f[0]-=f[1];
tmp+=s[i];
} else {
f[1]-=f[0];
tmp+=!s[i];
}
}
if(f[0]==1&&f[1]==1) ans=std::min(ans,tmp);
}
if(ans==INT_MAX) {
puts("NO");
continue;
}
puts("YES");
printf("%d\n",ans);
}
return 0;
}

[CC-XYHUMOQ]A humongous Query的更多相关文章

  1. MySQL Query Profile

    MySQL Query Profiler, 可以查询到此 SQL 语句会执行多少, 并看出 CPU/Memory 使用量, 执行过程 System lock, Table lock 花多少时间等等.从 ...

  2. Google分布式构建软件之二:构建系统如何工作

    分布式软件构建第二部分:构建系统如何工作 注:本文英文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但请尊重作者版权,注名原文地址. 上篇文章中提到了在Google,所 ...

  3. MySQL学习笔记十七:复制特性

    一.MySQL的复制是将主数据库(master)的数据复制到从(slave)数据库上,专业一点讲就是将主数据库DDL和DML操作的二进制日志传到从库上,然后从库对这些二进制日志进行重做,使得主数据库与 ...

  4. python pymysql和orm

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1. 安装 管理员打开cmd,切换到python的安装路径,进入到Scripts目录下(如:C:\Users\A ...

  5. MySQL-profiling的使用

    分析SQL执行带来的开销是优化SQL的重要手段.在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析.该参数可以在全局和session级别来设置.对于全局级别则作用于整个MySQL ...

  6. MySQL 5.7.13解压版安装记录 mysql无法启动教程

    1 解压缩 2 添加环境变量,这个不细说了 我的电脑->属性->高级->环境变量 选择PATH,在其后面添加: 你的mysql bin文件夹的路径 (如:C:\Program Fil ...

  7. Python操作MySQL之SQLAlchemy

      SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结 ...

  8. Codeforces Round #316 (Div. 2)

    A. Elections time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  9. SQL参数化

    本文来自:caodonglin 一.SQL参数化为什么能防注入? 因为执行计划被重用了,所以可以防SQL注入. 下面有两段SQL     正常SQL: 1 select COUNT(1) from C ...

随机推荐

  1. 2017-2018-2 20179205《网络攻防技术与实践》Windows攻击实验

    Windows攻击实验 实验描述: 使用Metaspoit攻击MS08-067,提交正确得到远程shell过程的截图(不少于五张). MS08-067漏洞介绍   MS08-067漏洞的全称为&quo ...

  2. java 压缩与解压

    最近复习到IO,想找个案例做一做,恰好下载了许多图片压缩包,查看图片很不方便,所以打算用IO把图片都解压到同一个文件夹下.然后集中打包. 本例使用jdk自带的ZipInputStream和ZipOut ...

  3. Material Design In Action——重构bilibili客户端

    前言 哔哩哔哩动画是中国大陆的一家弹幕视频网站,在中国二次元用户中颇受欢迎. 哔哩哔哩动画之前推出过采用 Android Design 的 Android 客户端,虽然有使用了部分过时控件(例如 Sc ...

  4. Jenkins关联GitHub进行构建

    一.创建一个自由风格的项目 并在高级中勾选你构建完成后保存项目的路径 二.配置你存放代码的GitHub的地址并添加用户名密码 三.立即构建

  5. 【C语言学习笔记】字符串拼接的3种方法 .

    昨天晚上和@buptpatriot讨论函数返回指针(malloc生成的)的问题,提到字符串拼接,做个总结. #include<stdio.h> #include<stdlib.h&g ...

  6. Nginx - upstream 模块及参数测试

    目录 - 1. 前言- 2. 配置示例及指令说明    - 2.1 配置示例    - 2.2 指令    - 2.3 upstream相关变量- 3. 参数配置及测试    - 3.1 max_fa ...

  7. web性能优化之js图片懒加载

    html <div class="container"> <ul> <li> <div id="first" clas ...

  8. 20155225 实验四《Android程序设计》实验报告

    20155225 实验四<Android程序设计>实验报告 一.安装Android Stuidio 问题一:安装完成后,打开提示我找不到SDK,我已经设置了环境变量,关掉提示,没有影响. ...

  9. spark java API 实现二次排序

    package com.spark.sort; import java.io.Serializable; import scala.math.Ordered; public class SecondS ...

  10. easyUI小技巧-纯干货

    一.显示分页(pagination:true)情况下,隐藏每页显示的记录条数的那个select(即pageList),下图箭头 方法1:onBeforeLoad:function(param){    ...