[CC-XYHUMOQ]A humongous Query
[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的更多相关文章
- MySQL Query Profile
MySQL Query Profiler, 可以查询到此 SQL 语句会执行多少, 并看出 CPU/Memory 使用量, 执行过程 System lock, Table lock 花多少时间等等.从 ...
- Google分布式构建软件之二:构建系统如何工作
分布式软件构建第二部分:构建系统如何工作 注:本文英文原文在google开发者工具组的博客上[需要FQ],以下是我的翻译,欢迎转载,但请尊重作者版权,注名原文地址. 上篇文章中提到了在Google,所 ...
- MySQL学习笔记十七:复制特性
一.MySQL的复制是将主数据库(master)的数据复制到从(slave)数据库上,专业一点讲就是将主数据库DDL和DML操作的二进制日志传到从库上,然后从库对这些二进制日志进行重做,使得主数据库与 ...
- python pymysql和orm
pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1. 安装 管理员打开cmd,切换到python的安装路径,进入到Scripts目录下(如:C:\Users\A ...
- MySQL-profiling的使用
分析SQL执行带来的开销是优化SQL的重要手段.在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析.该参数可以在全局和session级别来设置.对于全局级别则作用于整个MySQL ...
- MySQL 5.7.13解压版安装记录 mysql无法启动教程
1 解压缩 2 添加环境变量,这个不细说了 我的电脑->属性->高级->环境变量 选择PATH,在其后面添加: 你的mysql bin文件夹的路径 (如:C:\Program Fil ...
- Python操作MySQL之SQLAlchemy
SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结 ...
- Codeforces Round #316 (Div. 2)
A. Elections time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- SQL参数化
本文来自:caodonglin 一.SQL参数化为什么能防注入? 因为执行计划被重用了,所以可以防SQL注入. 下面有两段SQL 正常SQL: 1 select COUNT(1) from C ...
随机推荐
- python 爬虫简单的demo
''' @author :Eric-chen @contact:809512722@qq.com @time :2018/1/3 17:55 @desc :通过爬取http://movie.douba ...
- mysql处理旧数据-使用模板以及临时表,不建议直接使用本表!!
一 业务背景新版本中新建了一个项目的角色表,即每个项目都拥有几个角色,原来历史项目是没有角色的,这就要求使用脚本对表中的历史项目进行处理, 业务需求:每个项目都要有三个角色: 表 : pm_proje ...
- Linux内核Ramdisk(initrd)机制【转】
转自:http://www.cnblogs.com/armlinux/archive/2011/03/30/2396827.html 摘要:对于Linux用户来说,Ramdisk并不陌生,可是为什么需 ...
- ThinkPHP小知识点
ThinkPHP模版中时间戳转换为时间 {$vo.data|date='Y-m-d',###} thinkphp字符截取函数msubstr() ThinkPHP有一个内置字符截取函数mb_substr ...
- Codeforce 295B Greg and Graph(Floyd的深入理解)
题目链接:http://codeforces.com/problemset/problem/295/B 题目大意:给出n个点的完全有权有向图,每次删去一个点,求删掉该点之前整张图各个点的最短路之和(包 ...
- How to omit h1 title heading in HTML export
How to omit h1 title heading in HTML export */--> Introduce how to omit h1 title in the exported ...
- MEF实现设计上的“松耦合”(三)
1.面向接口编程:有一定编程经验的博友应该都熟悉或者了解这种编程思想,层和层之间通过接口依赖,下层不是直接给上层提供服务,而是定义一组接口供上层调用.至于具体的业务实现,那是开发中需要做的事情,在项目 ...
- Docker镜像和容器
本节内容: 安装Docker 卸载docker 镜像基本操作 容器基本操作 一.安装Docker Docker 对 Linux 内核版本的最低要求是3.10,如果内核版本低于 3.10 会缺少一些运行 ...
- 一步一步学习IdentityServer3 (5)
这篇文章介绍下数据持久化问题,官方例子可能都是缓存数据 Client User Scope 下面介绍下怎么使用数据库持久化 这里需要导入nuget包 :IdentityServer3.EntityF ...
- javascript和jquery如何判断元素是否存在最佳。
在传统的Javascript里,当我们对某个页面元素进行某种操作前,最好先判断这个元素是否存在.原因是对一个不存在的元素进行操作是不允许的.例如: document.getElementById(&q ...