UVA - 11920 0 s, 1 s and ? Marks
Description
| 0 s, 1 s and ?
Marks |
Given a string consisting of 0, 1 and ?
only, change all the
? to 0/1, so that the size of the largest group is minimized. A group is a substring that contains either all zeros or all ones.
Consider the following example:
0 1 1 ? 0 1 0 ? ? ?
We can replace the question marks (?) to get
0 1 1 0 0 1 0 1 0 0
The groups are (0) (1 1) (0 0) (1) (0) (1) (0 0) and the corresponding sizes are 1, 2, 2, 1, 1, 1, 2. That means the above replacement would give us a maximum group size of 2. In fact, of all
the 24 possible replacements, we won't get any maximum group size that is smaller than 2.
Input
The first line of input is an integer T (T
5000) that indicates
the number of test cases. Each case is a line consisting of a string that contains
0, 1 and ?
only. The length of the string will be in the range [1,1000].
Output
Sample Input
4
011?010? ??
???
000111
00000000000000
Sample Output
Case 1: 2
Case 2: 1
Case 3: 3
Case 4: 14
题意:给定一个带问号的01串,把每一个问号替换成0或1。让最长的“连续的同样数字串”尽量短
思路:最大的最小採用二分。至于推断的时候,每一个位置要么是0要么是1,依据情况推断
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 1005; int dp[maxn][2];
char str[maxn];
int n; int check(int len) {
dp[0][0] = dp[0][1] = 0;
for (int i = 1; i <= n; i++) {
dp[i][0] = dp[i][1] = -1;
if (str[i] != '0') {
if (dp[i-1][0] >= 0)
dp[i][1] = 1;
if (dp[i-1][1] >= 0 && dp[i-1][1]+1 <= len && dp[i][1] == -1)
dp[i][1] = dp[i-1][1] + 1;
}
if (str[i] != '1') {
if (dp[i-1][1] >= 0)
dp[i][0] = 1;
if (dp[i-1][0] >= 0 && dp[i-1][0]+1 <= len && dp[i][0] == -1)
dp[i][0] = dp[i-1][0] + 1;
}
if (dp[i][1] == -1 && dp[i][0] == -1)
return 0;
}
return 1;
} int main() {
int t, cas = 1;
scanf("%d", &t);
while (t--) {
scanf("%s", str+1);
n = strlen(str+1);
int l = 1, r = n;
while (l <= r) {
int m = l + r >> 1;
if (check(m))
r = m-1;
else l = m + 1;
}
printf("Case %d: %d\n", cas++, l);
}
return 0;
}
UVA - 11920 0 s, 1 s and ? Marks的更多相关文章
- UVA 624 (0 1背包 + 打印路径)
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> #i ...
- UVa 127 - "Accordian" Patience POJ 1214 链表题解
UVa和POJ都有这道题. 不同的是UVa要求区分单复数,而POJ不要求. 使用STL做会比較简单,这里纯粹使用指针做了,很麻烦的指针操作,一不小心就错. 调试起来还是很费力的 本题理解起来也是挺费力 ...
- devices-list
转自:https://www.kernel.org/pub/linux/docs/lanana/device-list/devices-2.6.txt LINUX ALLOCATED DEVICES ...
- LightOJ 1141 Program E
Description In this problem, you are given an integer number s. You can transform any integer number ...
- Think Python Glossary
一.The way of the program problem solving: The process of formulating a problem, finding a solution, a ...
- 手眼标定eye-to-hand 示例:handeye_stationarycam_calibration
* * This example explains how to use the hand eye calibration for the case where* the camera is stat ...
- 第八节、图片分割之GrabCut算法、分水岭算法
所谓图像分割指的是根据灰度.颜色.纹理和形状等特征把图像划分成若干互不交迭的区域,并使这些特征在同一区域内呈现出相似性,而在不同区域间呈现出明显的差异性.我们先对目前主要的图像分割方法做个概述,后面再 ...
- 【Python】【自动化测试】【pytest】
https://docs.pytest.org/en/latest/getting-started.html#create-your-first-test http://www.testclass.n ...
- loadrunner 脚本开发-文件读写操作
脚本开发-文件读写操作 by:授客 QQ:1033553122 函数说明 函数原型: size_t fwrite( const void *buffer, size_t size, size_t co ...
随机推荐
- Class.getResourceAsStream和ClassLoader.getResourceAsStream方法
项目中,有时候要读取当前classpath下的一些配置文件,下面介绍下Class.getResourceAsStream和ClassLoader.getResourceAsStream两种方法以及两者 ...
- 关于python调用zabbix api接口
因公司业务需要,引进了自动化运维,所用到的监控平台为zbbix3.2,最近正在学习python,计划使用python调用zabbix api接口去做些事情,如生成报表,我想最基本的是要取得zabbix ...
- 查杀病毒实战----------------》ddg.223 and AnXQV
htop 发现导常: 接着发现可疑进程: 首先检测crontab,发现问题: # crontab -l */ * * * * curl -fsSL http://www.bdyutiudwj.com/ ...
- 每日英语:Some Chinese Students Stay Home to Get Ahead
Li Shan's oldest son was the perfect candidate to join the throngs of Chinese students studying abro ...
- Solr 数字字符不能搜索的一个问题
问题一: 测试人员告诉我数字不能被搜索.于是开始找原因: <fields> ***<field name="productName" type="tex ...
- 将ip地址转换成C段地址的UDF
将ip地址转换成C段地址的UDF,最重要的是判断IP地址的正则表达式. package cn.cnnic.ops.Study; import java.util.regex.Pattern; impo ...
- centos7搭建python3并和python2共存
注意事项:1.非root帐号加上sudo2.centos7自带Python 2.7.5是不能卸载的,很多系统级软件依赖这个 安装依赖# yum -y groupinstall "Develo ...
- 获取Django中model字段名 字段的verbose_name
obj._meta.fields 为关键 obj为model类 推荐使用函数 from django.apps import apps def getmodelfield(appname,modeln ...
- python3打印26个英文字母
for a in range(ord('a'), ord('z') + 1): print(chr(a) , end="") for a in range(ord('A'), or ...
- python学习笔记(12)--爬虫下载煎蛋网图片
说明: 1. 这个其实是在下载漫画之前写的,比那个稍微简单点,之前忘放到博客备份了. 2. 不想说啥了,总结放到漫画那个里面吧! import urllib.request import re imp ...