codeforce469DIV2——C. Zebras】的更多相关文章

题意 0, 010, 01010 这一类的01交替且开头和结尾都为0的序列被称为zebra序列.给出一段01序列,尝试能否把他分为k个子序列使得每个子序列都是zebra序列. 分析 这个题应该算是水题把,但是确实把我卡了. 一开始暴力找在序列中找1,然后分别往前往后各找一个0.但是最坏情况到O(n^2),TLE在第八组.然后我尝试了各种Set,vector,二分之类的瞎搞结果一直都没把复杂度降下来一直T在第八组绝望了. 赛后看其他人的代码发现··可以O(n)扫一遍,当s[i]是0的时候找加入最后…
C. Zebras time limit per test memory limit per test 512 megabytes input standard input output standard output Oleg writes down the history of the days he lived. For each day he decides if it was good or bad. Oleg calls a non-empty sequence of days a …
Oleg writes down the history of the days he lived. For each day he decides if it was good or bad. Oleg calls a non-empty sequence of days a zebra, if it starts with a bad day, ends with a bad day, and good and bad days are alternating in it. Let us d…
http://codeforces.com/contest/950/problem/C 题意: 给出一个01序列,问能否将这个序列分为若干个0开头0结尾的序列 输出方案 如果有解,几个1能在一个序列就在一个序列 一定可以找到解 因为0可以单独1个序列,1必须要依托于0 2个1如果分开 要4个0,连起来要3个0 暴力的做法就是: 如果当前是0,扫一遍已有序列,如果有1结尾的就把这个0放到那个1的后面 没有以1结尾的序列,新建一个序列 如果当前是1,扫一遍已有序列,如果有0结尾的就把这个1放到那个0…
题意:给你一个01串,问其是否能拆成若干形如0101010的子串,若能,输出所有子串的0,1 的位置. 题解:一开是暴力,然后瞎找规律, 最后找到一种神奇的线性构造法:扫一遍字符串,若为0就一直竖着往下写0,碰到1就回头往上写,再碰到0 就回头往下写······判断无法构造的依据:如果写1写得超过了上界就跳出,如果最后写的0不在最下面也跳出//codeforces上看到的一段代码秀的脑壳疼 坑:之前随便找规律,写了个巨丑的代码,逻辑混乱,直接wa掉. 无脑写的直接T了 ac #define _C…
借鉴自: https://www.cnblogs.com/SuuT/p/8619227.html https://blog.csdn.net/my_sunshine26/article/details/79502152 题意: 给定一个01字符串,需要你把它分为k个子序列,其中k可以为任意正整数. 对子序列的要求为 以0开始,以0结束 0,1相间 输出满足条件的一种结果即可.  输出的结果还要从低到高的顺序 扫一遍字符串,若为0就一直竖着往下写0,碰到1就回头往上写,再碰到0 就回头往下写···…
题意: 有n个数据中心,m个客户,每天有h个小时,其中 n,m,h<=100000.每个数据中心i每天都会有一个数据维护的时间0<=u[i]<=h-1,在数据中心维护期间时不可以使用的.每个客户都选择两个不同的数据中心,以保证每天的数据使用不间断.保证初始时符合要求.找出最少的数据中心数,使每个数据中心的维护时间推迟一个小时(若u[i]<h-1推迟一小时变为u[i]+1,否则变为0),每个客户都能正常使用. 分析: 我们发现,只要每个客户选择的两个数据中心的维护时间不同就符合题目的…
题意: 给出1<=n<=10^18和1<=q<=200000,有一个长度为2*n-1的数组,初始时单数位置存(i+1)/2,双数位置是空的.每次找出最右边的一个数将它跳到离它最近的左边的空格,反复操作直到前n个数被充满 .q个询问,每个询问给出一个数x<=n,输出最终的序列x位置的数是什么. 分析: 一看数据规模和这个题就大概想到是数学题,然后试着找规律推式子.按照蒟蒻我的惯例这种题先写暴力找规律.然后发现,每次跳,第一次跳跳一个,再一次跳两个,一直到跳到n-1个. 那么从左…
Description 题目地址: Codeforces 题意:给你一串只含01的字符串,判断能否将字符串分为k个子序列,使得子序列满足以下条件: 开头和结尾都是0 相邻的2个数是01或者10 如0, 010, 01010 是合法的,1, 0110, 0101不合法 要求输出方案 (k可以为任意正整数,评测用SPJ) Solution 我们发现,0可以单独为一组,那么只要匹配完所有的1剩下的0全单独算就行了 对于方案可以用vector储存,关键在于如何划分子序列 开一个指针变量p和一个方案数cn…
思路: 贪心乱搞. 实现: #include <bits/stdc++.h> using namespace std; vector<vector<int>> v; int main() { string s; while (cin >> s) { set<int> x, y; ; i < v.size(); i++) v[i].clear(); bool no_ans = false; ; i < s.length(); i++)…