CF
z听歌的小孩z
这个作者很懒,什么都没留下…
展开
-
D. Strange Device:巧妙的交互题
题目链接题目大意:有一个长度为n的隐藏数组a,其中元素两两不同。你有一台机器可以最多询问n次,每次可以向这个机器输入k个数,这些数是下标(范围1到n)。而机器会返回这些数中第m大的数的值,以及他的下标。已知k,求m。题解:其实解法在样例就有体现(后悔当时没有研究样例)。我们只需对前k+1个数查询k+1次,这样只会得到两个元素的值,一个是第m大的数,一个是第m+1大的数。第m大的数会出现(k...原创 2019-12-30 21:48:37 · 382 阅读 · 0 评论 -
C. Ivan the Fool and the Probability Theory (傻逼打表题)
题目链接这场CF刚好和银川冲突了,错失一波上分机会。题意:给n * m矩形的格子涂色,两种颜色,要求每个格子最多只有一个相邻格子颜色和他相同。题解:傻逼打表题,打表就完事了。附上我写的打表程序。#include<bits/stdc++.h>using namespace std;int n, m, ans;int a[100][100];int d[4][2]...原创 2019-10-22 09:38:26 · 146 阅读 · 0 评论 -
Codeforces Global Round 5 C2. Balanced Removals (Harder) (并查集)
题目链接题意:三维空间中有偶数个点,每次你可以选择两个点将其删除,但是需要保证以两点为端点的长方体不能包含未删除的点。问怎样可以将所有点删除。题解:对x,y,z排序,先x, y相同的点删掉,再x相同的删掉,再把剩下的点删掉。这样保证每次删除的点对中间不会存在别的点。对于c2,因为n比较大,所以我用了并查集维护每个位置后第一个为空的位置。c1:#include<bits...原创 2019-10-17 14:52:01 · 205 阅读 · 0 评论 -
Codeforces Round #592 (Div. 2)
题目链接这场感觉难度 C > E > D > B > A,当时放弃了C写D,D有个数组开小了,在本地一直过不了样例,找了一个多小时bug,最后两题自闭。A. Pens and Pencils向上取整就ok了。#include<bits/stdc++.h>using namespace std;const int N = 2e5 + 10;...原创 2019-10-14 09:31:11 · 168 阅读 · 0 评论 -
E. Anton and Permutation(分块)因为这个题入坑分块
题目链接题意:给你一段1~n的序列。q次操作,每次操作交换位置l,和位置r上的元素。问每次交换后当前序列的逆序对个数。题解:首先可以看出每次交换位置为l,r的数后,逆序对个数的变化只与(l,r)区间与val[l]和val[r]大小关系有关。 设Si表示区间(l,r)比val[i]小的数,Bi表示区间(l,r)比val[i]大的数。 未交换前,val[l]和val[r]在区间(l,r...原创 2019-07-12 16:47:47 · 293 阅读 · 0 评论 -
codeforces 1213 解题报告
比赛链接A: 变成全奇或者全偶#include<bits/stdc++.h>using namespace std;typedef long long ll;int a[110];int main(){ int n,o=0,e=0; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; if(...原创 2019-09-01 21:20:14 · 127 阅读 · 0 评论 -
Codeforces Round #585 (Div. 2)(A,B,C,D,E)
比赛链接A. Yellow Cards题意:你有n张黄牌,有两只球队分别有a1,a2个人,两个球队的人分别吃k1,k2张黄牌就会被罚下场。问最多,最少可以使多少人被罚下场。题解:贪心。让最多的人罚下场,先贪心选能吃黄牌少的人。让最少的人罚下场,就给每个人都分配k - 1张黄牌,多出的黄牌就是要罚出的人。#include<bits/stdc++.h>using nam...原创 2019-09-16 09:44:33 · 238 阅读 · 0 评论 -
E1. Rotate Columns (easy version)(暴力)
题目链接题意:给你一个n行,m列的矩阵。你可以对任意一列进行上下循环移位。定义 ri 为第i行的最大值,让你使得r1 + .. rn最大题解:首先求出每一列的最大值,然后从大到小排序。可以肯定的是,对答案有贡献的一定是前n列(这里可以自己举几个例子,就不细说了)。n最大为4,暴力枚举每种情况有4^4种,这题就写完了。#include<bits/stdc++.h>usin...原创 2019-09-16 15:21:40 · 709 阅读 · 0 评论 -
Codeforces Round #585 (Div. 2) E. Marbles (状压dp)
题目链接题意:给你一个长度为n的序列,其中最多有20种颜色(用数字表示)。每次可以交换相邻两个元素,求最少的交换次数,使得相同数字的元素都合并在一起。题解:赛后学了一波贪心AC的题解,没想到加强了数据wa了。于是转学状压dp。首先进行预处理。设cnt[ i ][ j ],表示第 i 种颜色全部放到第 j 种颜色前面所需的操作次数。 从前开始枚举,设当前位置颜色为x ,那么cnt[ x...原创 2019-09-16 20:52:26 · 257 阅读 · 0 评论 -
G1. Playlist for Polycarp (easy version)(状压dp)
题目链接类似的题状压dp这两道题都是一样的套路,通过状压dp将 n!优化到 2^n,相信你写了上面那题,这题就很容易切掉了#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mix = (1<<15), N = 300, mod = 1e9 + 7;ll...原创 2019-09-17 08:04:30 · 213 阅读 · 0 评论 -
Codeforces Round #590 (Div. 3) - E. Special Permutations (补题)
题目链接这题赛后看了一下,挺水的,十分钟出思路。然后自己傻逼了,竟然套了一个线段树去写,强行提高时间复杂度,其实差分一下就好了。题意:定义这样一个排列 pi(n),表示将1 ~ n 这个排列的 第 i 个元素放到序列最前面,形成一个新的排列。 定义pos(pi(n),3) 表示 3 在这个排列的下标是多少 给你一个数组x 定义方程 然后求f(p1(n)),f(p2(n)),f(...原创 2019-10-03 09:48:19 · 355 阅读 · 0 评论 -
Codeforces Round #590 (Div. 3) F. Yet Another Substring Reverse(状压dp)
题目链接这题真没想到状压dp可以写,看了别人代码才看会的。题意:给你一个只包含前20个英文字母的串。你可以执行一次操作,将这个串的任意子串翻转一次。让你求一个最长的没有重复字母的字串。题解:首先看到只有二十个英文字母,无脑上状压dp。可以将这个串的任意子串翻转一次,实际上就是可以让两个去重的子字符串合并在一起。那么这个题就变成了枚举子集,表示我们必须选取这一段,然后为了使答案最优,所以...原创 2019-10-03 10:04:52 · 168 阅读 · 0 评论 -
Codeforces Round #589 (Div. 2) E. Another Filling the Grid (dp + 容斥)
题目链接题意:给你一个n * n 矩形,每个格子可以填一个小于等于k的数,要求每一行每一列都至少有一个1,求方案数。题解:这题难点在于怎么设状态转移方程,以及怎么转移,总之就是很难qwq设dp[i][j] 表示在第i行,有j列已经有1的方案数 那么就可以由第 i - 1列转移,也就是dp[i][j] 可以由 dp[i - 1][p] (1<=p<=j) 转移而来:分两种情...原创 2019-10-03 19:30:10 · 175 阅读 · 0 评论 -
C. Masha and two friends(处理矩形相交)
题目链接题意:给你一个n*m的黑白相间的棋盘。给你两个矩形的左下角和右上角,第一个矩形将矩形范围内的棋盘全涂成白色,第二个矩形将矩形范围内的棋盘涂成黑色。问现在棋盘,白色方格有多少个,黑色方格有多少个。题解:首先我们要统计矩形范围内,白色方格和黑色方格分别有多少个。不难得出,当n*m是奇数时,左下角如果是白色方格,那白色方格多一个,如果是黑色方格那黑色方格多一个。然后就要判断这两个矩形...原创 2019-07-12 09:19:29 · 125 阅读 · 0 评论 -
Educational Codeforces Round 68 (Rated for Div. 2)(A,B,C,D)
比赛链接A. Remove a Progression题意:有一个1~n的序列,每次从头开始删掉第i个数,问到不能删除的时候第x的位置上的数是多少。题意:简单推一下,发现每次删掉的数都是奇数。那么能保留的x位置上的数就是x*2。#include<bits/stdc++.h>using namespace std;int main(){ int T; cin&...原创 2019-07-15 11:56:35 · 122 阅读 · 0 评论 -
Codeforces Round #548 (Div. 2)
链接A题,简单思维题,要你求以偶数结尾的子串。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 65000+100;char s[maxn];int main(){ int n; whil...原创 2019-03-25 16:51:16 · 81 阅读 · 0 评论 -
Codeforces Round #264 (Div. 2)
A题题目大意:有n种糖果,你有s美元。每种糖果需要x的美元以及y美分(一美元等于一百美分),你能得到的糖果数量等于找零的美分,你只需要一种糖果,问你能得到的最大糖果数量。题解:这题直接暴力模拟即可,要注意的是美分为零的情况,这样算你能得到的糖瓜为0,不是100,也不要直接输出-1;#include<bits/stdc++.h>using namespace std;i...原创 2019-03-27 22:22:25 · 52 阅读 · 0 评论 -
Codeforces Round #520 (Div. 2)部分题解
h题意:给定一个递增的序列,问一次最多可以拿掉多少个数后,还可以恢复原序列。比如 1 3 4 5 6 9 ,那么我拿掉 4 和 5 之后 ,还是可以通过 3 到 6 确定4 和 5的 ,所以答案是 2 。而 998 999 100 ,因为最大时1000,所以我可以把 999 和 1000 拿掉 这样通过 998 还是可以复原原序列。题解:1.先遍历一遍原数组找最长的序列,然后再分...原创 2019-04-29 13:22:41 · 193 阅读 · 0 评论 -
Codeforces Round #401 (Div. 2)(A,B,C,D,E)
题目链接A. Shell Game题意:一个游戏,有三个位置为 左中 右,分别对应三张牌 0 1 2,奇数次交换左和中的数字 ,偶数次交换中和右的数字。问第n轮之后第x个位置的数字是多少。题解:直接草稿纸上模拟一遍,发现每6轮一个循环。(0打成6了,wa了两发qwq)#include<bits/stdc++.h>using namespace std;int m...原创 2019-05-25 16:26:37 · 84 阅读 · 0 评论 -
Codeforces Round #516 (Div. 2, by Moscow Team Olympiad) A,B,C,D,E
题目链接A Make a triangle!题意:给定三条线段,问怎么延长最少并能构成一个三角形。题解:看两条小边是否大于最长的那条边,大于输出0,不大于则输出最长边长度加1减去两条最小边的和,这样保证答案最小。#include<bits/stdc++.h>using namespace std;int main(){ int a,b,c; cin>&...原创 2019-05-22 11:03:47 · 134 阅读 · 0 评论 -
Codeforces Round #515 (Div. 3)(部分题解)
题目链接A. Vova and Train题意:给定一个区间[1,L],一个区间[l,r],给定一个v。问在[1,L]而不在[l,r]内有多少个数是v的除数。题解:先求总区间v的除数,再减去[l,r]的除数。#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>...原创 2019-05-26 08:59:50 · 214 阅读 · 0 评论 -
E. Product Oriented Recurrence(矩阵快速幂)
题目链接题意:题目很容易理解,给出公式Fx = c^(2x-6)*Fx-1*Fx-2*Fx-3,然后给出n,c,F1,F2,F3,求Fn;题解:看到这个公式就知道要套矩阵快速幂了。但这题比较特殊,要套两个矩阵快速幂。1.对于Fx F4 = F3* F2 *F1; F5 =F3^2 * F2^2 * F1; F6 = F3^4 * F2^3 * F1^...原创 2019-06-12 22:08:42 · 463 阅读 · 0 评论 -
Codeforces Round #565 (Div. 3)题解(A,B,C,D,E)
题目链接A. Divide it!题意:给定一个n,有如下三种操作:如果n%2==0,n = n/2; 如果n%3==0,n = n*2/3; 如果n%5==0,n = n*4/5;求经过最少的操作次数使得n=1,如果不能得到则输出-1。题解:直接模拟就行了。先把2除掉;再除3,注意除2的操作次数+1;再除5,除2的操作次数+2;最后得到的数如果不等于1则输出-1;#i...原创 2019-06-10 09:51:16 · 1047 阅读 · 0 评论 -
D. Vasya and Triangle(几何)
题目链接题意:给你三个数n,m,k。让你构造三个整数点,使得这三个点构成的三角形面积等于(n*m)/k;题解:比赛的时候猜了一个结论就是2*(n*m)/k必须是整数,但是因为找不到证明的方法,然后写起来也比较复杂就放弃了。最后看了别人的题解发现还真是这样。首先由解析几何,已知三个点坐标求 三角形面积设A(x1,y1),B(x2,y2),C(x3,y3)由A-->B-->...原创 2019-06-22 21:29:07 · 216 阅读 · 0 评论 -
E. Tree Painting(换根dp)
题目链接题意:给你一颗树,一开始树的结点都是白色的。开始染色,一开始你可以将任意一个白色结点染成黑色,随后只能给黑色结点旁边的白色结点染色,每次染色能获得与这个结点联通的所有白色结点积分数。问怎样染色可以使积分数最多。题解:#include<bits/stdc++.h>using namespace std;typedef long long...原创 2019-07-12 17:23:56 · 218 阅读 · 0 评论 -
D. Anton and School - 2(排列组合之范德蒙恒等式)
题目链接题意:给你一个括号序列,问有多少种删除方法,可以使其成为一个标准括号序列:长度为偶数,前n/2为'(',后n/2为')'。题解:比赛时想到了排列组合,但是不知道怎么优化公式。搜了题解发现用到了一个叫范德蒙恒等式的东西。具体思路就是,先统计出所有的右括号。然后从左遍历,每遇到右括号,右括号数量减一。每遇到一个左括号,就可以和之前的左括号组合成1个,2个,3个。。。左括号,再与剩下...原创 2019-07-04 11:04:49 · 332 阅读 · 0 评论 -
Codeforces Round #529 (Div. 3) ABCD题解
A. Repeating Cipher简单思维题题目大意:给你一个经过加密的字符串S,S = S1S2S3.....;而Si意味着这个字母他会书写i次;列如baabbb,这是加密后的样子加密前就是bab;题目需要你输出加密前的字符串;思路:用一个中间变量t充当i,每解密一个字母后,就t++;然后我循环输出的s[i+=t],每次就输出加密后Si的最后一个字母。就是需要的答案了。#i...原创 2018-12-28 10:41:00 · 241 阅读 · 0 评论