codeforces
zephyr_pro
人所有的愤怒全部来自自己的无知。
展开
-
Codeforces Round #460 (Div. 2) C. Seat Arrangements
题目地址:点击打开链接step1:读题发现题意并不难理解,给定一个n * m矩阵, 问该矩阵中找到连续的k个点一共有多少种情况step2:首先我们考虑到一行一行的看,以及一列列的看,找到连续的'.'并记录如果遇到*的话,如果.的个数大于等于k的话我们将答案加上cnt-k+1个,并且把cnt设置为0,否则的话直接把cnt设置为0。step3: 注意这种方法有一个很大的缺点就是,如果k==原创 2018-02-01 21:24:46 · 114 阅读 · 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 评论 -
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 评论 -
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 - 1037E Trip
题意:给出n,m,kn,m,kn, m, k分别表示n个点,以及m次加边,k表示一个限制,一个点满足条件则它的k个相连的点也满足条件题解:先把所有的边连好之后,判断图内是否有不满足条件的点,即degree[u]<kdegree[u]<kdegree[u] ...原创 2018-09-03 20:38:10 · 223 阅读 · 0 评论 -
XOR-pyramid CodeForces - 984D [区间dp]
题意:给出n长度的序列,以及q个询问区间,问区间内连续子段的最大f值,其中 f(b)={b[1]f(b[1]⊕b[2],b[2]⊕b[3],…,b[m−1]⊕b[m])if m=1otherwise,f(b)={b[1]if m=1f(b[1]⊕b[2],b[2]⊕b[3],…,b[m−1]⊕b[m])otherwise,f(b) = \begin{cases} b[1] &...原创 2018-09-05 17:37:30 · 143 阅读 · 0 评论 -
Elevator CodeForces - 984E (dp+记忆化搜索)
题意:有n个人在一个9层楼的建筑里工作,n个人需要按照先后顺序上电梯,但是下电梯的顺序没有规定(可以以任意顺序下电梯),问最少的时间可以把所有的人运送完成。题解:记忆化搜索,对于每个人必须需要按照顺序上电梯,我们建立dfs(int i,int cur,int a,int b,int c)dfs(int i,int cur...原创 2018-09-05 17:14:45 · 257 阅读 · 0 评论 -
D. Ghosts[推公式题]
题意:给出n,a,bn,a,bn, a, b,接下来给出n个点的xxx坐标以及每个点的分解速度vx,vyvx,vyv_x ,v_y点在y=ax+by=ax+by = ax + b上,问有多少个点可以相遇我们考虑基本的相遇条件为x,y坐标完全相同得方程: {x1+vx1=x2+vx2y1+vy1=y2+vy2{x1+vx1=x2+vx2y1+vy1=y2+vy2\begin{cases} ...原创 2018-08-22 22:51:56 · 192 阅读 · 0 评论 -
D. Recovering BST [区间dp]
题意:给出一个连续上升的序列aaa,问能否构成一个任意两个相邻节点不互质的BST题解: 区间dpdpdp: 使用C[i][j]C[i][j]C[i][j]表示[i,j][i,j][i,j]是否能够构成一颗合法的排序树 使用L[i][j]L[i][j]L[i][j]表示以jjj为根[i,j−1][i,j−1][i, j-1]能否构成一颗左子树 使用R[i][j]R[i][j]R[i]...原创 2018-08-22 09:37:51 · 324 阅读 · 0 评论 -
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 评论 -
CodeForces - 1000C C. Covered Points Count
题意:给出n条线段以及求有多少点被覆盖1……n次并输出 比赛的时候没有想到,脑子还是太死。 题解:把所有的起点终点保存下来,然后进行排序,如果碰到起点则覆盖数+1否则-1 AC代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 500005;pai...原创 2018-06-28 13:10:27 · 609 阅读 · 1 评论 -
CodeForces - 999E
题意:找有多少个单向联通的块 题解:由s开始dfs找到无法从s到达的点,虚拟的连上一条边,然后暴力dfs所有从s无法到达的点,当这个点能个够到达一个存在虚拟边的点时,把虚拟边删除。最后看一下有多少个虚拟边就是答案。 AC代码:#include <bits/stdc++.h>using namespace std;const int maxn = 5003;int ed...原创 2018-06-23 16:45:49 · 352 阅读 · 0 评论 -
C. Make It Equal
题意:给出n个高度,问最少通过多少次代价最多为k的消减能够使得所有的高度相同。(代价:消减的总高度)题解:可以考虑从他的最高高度开始一阶一阶的减,一直减到最小的那个高度,通过记录每次减一的代价与k进行比较即可得出结果。accode:ac code:accode:#include <bits/stdc++.h>using namespace std;typedef long...原创 2018-10-12 15:24:43 · 415 阅读 · 0 评论