随笔分类 - 学科竞赛--算法学习 / 比赛训练
摘要:
《E - Transitivity》 这道题首先要看一下自己有没有理解错题意: 问:点2和点3之间要连边吗? 答案是不需要的,因为根据题意 那么要连边的两点就是在同一条链上 对于每一条可以形成的链,上面的点都要与下面可到达的点连边(除去原图本来就连上的边) 问题转化为求全部可形成链的点的个数 可以枚
阅读全文

摘要:
《D - Flip Cards Editorial》 简单dp,只是我当时在写的时候忘记%mod了 人麻了 #include <iostream> #include <algorithm> #include <cstring> #include <map> using namespace std;
阅读全文

摘要:
<C - Coverage Editorial> 这道题可以用dfs进行爆搜,但是在爆搜的时候要注意: 是否同一个状态重复计数了 比如 dfs(int x,int state) 表示看第x个set的时候,是否选择Cx,目前state(是用二进制表示的是否含有第i个数的值) 可能在这个时候我就已经满足
阅读全文

摘要:《D - Range Add Query》 题目大意: 给定一个长度为n的序列s,和一个整数k 我们可以对s进行无数次如下操作: 1、选定s中的一个下标i(1<=i<=n-k+1) 2. 对这k个元素进行+c操作,c是个整数 如果能够将s的元素全部变成0,那么我们称s是一个好序列 现在给定一个长度为
阅读全文
摘要:《B. Cake Assembly Line》 思维 题目大意: 给定n个蛋糕,其在x轴上占有范围[cl,cr] 还有n个巧克力喷管,其在x轴上也有范围[dl,dr] 现在就是问: 是否可以通过左右移动使得蛋糕的范围覆盖巧克力喷管的范围 解决方法: 显然:每一个蛋糕都对应于一个喷管 ,我们只要求一下
阅读全文
摘要:《重点考察容斥原理的题目》 《L. Tokitsukaze and Three Integers》 可以看的出: n很小,首先考虑暴力的方法: 我们可以用两层for循环,将(ai*aj)%p 会等于什么求出来 然后再用两层for循环枚举 x 和 ak 看一下有多少个(ai*aj)%p 会对应上 (x
阅读全文
摘要:《B. Emordnilap》 数学,思维 题意: 给定一个由1~n组成序列,然后将这序列复制,反转,再放到原序列的末尾, 得到新的序列(设为s) 问s的逆序对个数 当时我写的时候,序列方向搞错了ORZ, 但是再来看题解,题解的方法比我简单多了: 首先:我们可以将逆序对的来源分成3处 第3处的逆序对
阅读全文
摘要:《C. Equal Frequencies》 这道题的题意为:一个字符串str上每个字母的数量都一样,为平衡字符串 现在给出一个字符串s,问最少改动多少使s变成平衡字符串,并写出该平衡字符串 这道题我之前一直想要找出一些规律,根本没往暴力方面想,现在想一下 一个平衡字符串上可能有1~26个字母 知道
阅读全文
摘要:新学到的小知识: c++实现四舍五入的方法:round()函数: https://www.nhooo.com/cpp/cpp-library-function-cmath-round.html 如: 《World Final? World Cup! (II)》 这道题我在写的时候开始是想到了用dp,
阅读全文
摘要:《B - Grid Rotations》 思维 这道题的题意是:给定一个n行m列的二维数组, ,有Q次操作:每次操作给定(a,b),这个(a,b)将矩阵分成四部分 然后将四部分别顺时针旋转180度 求经过Q次操作后的矩阵 每次给定这样的数据范围: 我们处理的时候可以在等输入完n,m后 用vector
阅读全文
摘要:这应该说不上一篇题解博客,而是一个反省博客 《B. MKnez's ConstructiveForces Task》 这道题我要反省的是:毫无难度,直接按照条件推式子即可,但是我将奇,偶两种情况的推导搞混掉了,寄! 《C. Least Prefix Sum》 这道题是我写的最久的,当时我是按照思维去
阅读全文
摘要:《C. Even Subarrays》 异或和,前缀和 这道题如果用朴素的暴露解法为O(n^2),算出每一个子段的异或和,然后看一下这些异或和中哪个的除数是奇数个,但会超时 超时原因明显是因为我们要算出每一个子段的异或和; 在1~n的范围内的数进行异或和,其最大值不会超过2*n(因为2*n等价与n<
阅读全文
摘要:《E - Don't Isolate Elements》 dp 刚开始拿到这道题时,我总是在想:第一行翻不翻转对下面情况的影响,在什么情况下要反转,等一系列情况 最后我发现:这些情况不如我可以利用状态转移来实现,于是我朝着dp方向想。 一开始我设置的dp是dp[i][j]:在第i-1行即以上行都合法
阅读全文
摘要:《Make Bipartite 2》 思维,二分图 这个简单图可以有两种情况: 1.全部点都通过边连起来,即连通分量只有一个,其自己 2.还有有些点没有全部连起来,即有多个连通分量 1.不管上面哪一种情况,如果对图跑一个二分图染色O(n+m),如果染色失败,则都是返回0,因为这时,不管再连上那一边都
阅读全文
摘要:《D - Max Multiple》 dp 这道题意思即为:在序列A中任选K个数的和组成的序列S,求S中为D的倍数的最大的数,如果没有则输出-1 当时我考虑到了dp,但是完全觉得状态转移是不可能的,但是这道题仔细想一下他的框架: 对于一个下标为i的数,考虑选不选他,选则对a[i],进行操作 不选则不
阅读全文
摘要:D - Factorial and Multiple 数论 首先上这道题需要的数论知识: n!的素因子分解中,n!=p1^a1 * p2^a2 * p3^a3 * ..... * pk^ak中 对于素因数pi,其对于的ai=n/pi+n/pi^2+n/pi^3+....直到n/pi^j==0为止 证
阅读全文
摘要:《D - Freefall》 二分,三分 二分写法 其实可以算出T=x*b+a/sqrt(x+1); 然后让我们求T的最小值,因为很容易看出这个函数是大概如图 ,其实就是对T求导,然后找到让T’=0的x(二分找,因为这个时候导函数的图形是单调的),因为要求的是整数x,所以可能二分出来的x有偏差,要扩
阅读全文
摘要:《F - Shiritori 》 博弈 首先在这个博弈题中有个很重要的结论: 1.如果一个点,走一步,能够到达的点如果其中有一个为先手必胜点,那么这个点必然是先手必败点 2.如果一个点,走一步,能够到达的点如果全部为先手必败点,那么这个点必然是先手必胜点 这道题如果用爆搜的方式: 首先我们可以根据他
阅读全文
摘要:《D - Takahashi's Solitaire》 思维,看题,循环 注意到Ai<M,这个意味着 最大的数 与 最小的数 之间可能会有循环,即一个排好的数(从小到大): a1,a2,a3,.................,an-1,an; 可能(an+1)%m==a1; (这道题的难点是强迫自
阅读全文
摘要:《货物摆放》 思维,约数 很明显,L,W,H都是n的约数,我们只要求一下n的约数,然后三重循环枚举其每一个约数看一下是否能L*W*H=n 有可能你会担心n的约数特别多,但是自己写个程序跑一下就知道十分少 才128个三重循环绝对不会超时,其实也可以优化到二重循环 1 #include <iostrea
阅读全文