杂题
奔跑的蜗new
这个作者很懒,什么都没留下…
展开
-
傅老大练神功
题意:给出一个01串,任意选择一个连续子序列进行翻转,问翻转后串里最多有几个1。例如100010,翻转第2-第4个,串变为111110,最多有5个1.题解:由于题目的数据范围只有1000,所以可以枚举所有的翻转情况。先记录原串的1的个数sum,接着用两重循环进行枚举,第一个循环枚举翻转区间的头,用一个变量tmp初始化为sum用来保存当前翻转方法后串的1的个数,第二个循环枚举翻转区间的尾,遇到0就+...原创 2018-05-07 09:15:42 · 174 阅读 · 0 评论 -
poj2886 (约瑟夫环,树状数组)
n个人围成圈,每个人手上有一个数字,最开始k跳出圈,如果k手上的数num是正数,则向左num个人出圈,负数就向右,直到所有人都出圈,得分最高的是第(1-n中因子数最多的数)次跳出的人 首先处理1-n中因子最多的数,有个名词叫反素数,不管他这里直接打表 #include <cstdio> #include <cstring> #include <cmath>...原创 2018-08-15 11:56:52 · 639 阅读 · 0 评论 -
CodeForces - 364E(二维分治)
给出一个n*m的矩形,问有多少个子矩阵包含1的个数为k 参考博客 好难的一题分治。。基本分治思路是不断切割中线,一刀水平,一刀垂直的切 每次切割完后枚举割线两边的矩形包含的1的个数,例如如下这幅图,是按水平中线分割完的,然后先枚举矩形的左右边界Y1,Y2,接着再枚举矩形的上下边界,按这样分治可以保证每次数的矩形都会穿过切割的中线,可以保证矩形不数重,不数漏 博客里的人每次分治后矩形...原创 2018-08-24 11:15:39 · 1515 阅读 · 0 评论