贪心
zephyr_pro
人所有的愤怒全部来自自己的无知。
展开
-
L - Queries on a String Gym - 101755L
题意:给出一个母串s以及一个空串p,和一个整数q。接下来有q个操作,push c:在p串后面添加一个字符c, pop:删除尾部一个字符。对于每次操作输出p是否为s的子序列(可以不连续)题解:预处理母串s,使用nex[i][j] 数组来表示第i个字符后面(j+‘a’)字符的第一次出现的位置,然后通过m和len来更新p,如果当前m位置后面存在一个(c-‘a’)字符,那么ans[m] = nex...原创 2018-07-31 20:43:19 · 225 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 B. The writing on the wall
题意:求一个n*m的矩形中有多少个不含黑块的子矩形题解:我们可以考虑一个矩形的子矩形的算法,考虑一个子矩形的宽为w高为h,那么含有(n−h)∗(m−w)(n−h)∗(m−w)(n - h) * (m - w)个这样的子矩形,然后我们看一下有黑色方块的矩形怎么寻找他的子矩形,首先我们先考虑当前列最大的高度为多少(这里我们设为h)在以当前点为右下角点的子矩形中有∑jk=1hk∑k=1jhk\s...原创 2018-09-03 20:58:39 · 221 阅读 · 0 评论 -
Shashlik Cooking CodeForces - 1040B [思维贪心]
题意:给出一个n和一个k,有n个烤串需要翻面,如果你翻i那么[i−k,i+k][i−k,i+k][i-k,i+k]全部都要翻面,问最少翻多少次,以及怎么翻。题解:贪心策略,我们需要尽量让每次反转发挥最大的贡献,我们首先让第一个翻面,然后每隔2*k个之后再翻一次,这样保证了除了第一个剩下的都是最大化的,这样就会发现,最后剩下没有翻转的烤串一定小于k个,于是我们把所有的翻转点右移即可,因为小于...原创 2018-09-06 17:04:04 · 597 阅读 · 0 评论 -
Codeforces 1017 C. The Phone Number[贪心构造]
题意:给出一个n,构造一个n的排列(包含1-n的所有数字)使得LIS,LDS的长度和最小题解:我们可以分block块,LDS的长度就是block,每一个块的长度nblocknblock\frac{n}{block}为LIS的长度,我们要最小化nblock+blocknblock+block\frac{n}{block} + block,由均值不等式a+b≥2∗a∗b−−−−√a+b≥2∗a...原创 2018-09-06 17:13:34 · 148 阅读 · 0 评论 -
The Wu CodeForces - 1017D [状压+暴力]
题意:给出n, m, q,然后有n个权值w1…wnw1…wnw_1\dots w_n,然后输入m个长度为n的二进制串,q次询问,每次询问输入两个值,一个二进制串,一个k,询问的回答为,二进制串与所输入的m个串的“Wu”值小于等于k的数字有多少个。Wu值的计算:二进制中哪一位相同就加上哪一位相应的权值。题解:考虑n最大为12,也就是最多有212=4096212=40962^{12} = 40...原创 2018-09-06 17:20:43 · 155 阅读 · 0 评论 -
K - Known Notation ZOJ - 3829[贪心]
题意:给出一个字符串(只含有数字和乘号),以及两种操作,分别为:向该字符串中插入一个字符(数字或者乘号)交换字符串中任意两个字符回答最少需要几次操作能把字符串变成一个合法的后缀表达式。题解:我们首先考虑如果乘号放在最后肯定是没有问题的,无论怎样只要有足够多的数字乘号一定能够用完。同理数字放在最前面也是可以的。根据上述理论贪心即可,如果该字符是乘号,那么判断他前面的运算数字的个数(多了...原创 2018-10-26 18:08:47 · 165 阅读 · 0 评论