摘要:
我们考虑这个题。。。思路比较神仙。 就是我们设$sum[i]$为前i个的区间里的情况,然后我们知道$sum[j]$的话,我们就可以知道$j i$的情况了 所以说这很像最小生成树里面的约束条件是吧qwq 就是不存在环的性质。。。。 所以我们考虑建图,然后跑最小生成树就可以了。。。。 然后就是krusk 阅读全文
摘要:
区间不好做,但是我们可以转化成前缀来做。转化为前缀之后之后就是二维前缀和。 但是我还是不怎么会做。所以只能去看吉老师的题解 ~~(确定写的那么简单真的是题解???)~~。 我们要求模一个数余0,就等于找它的倍数。找它的倍数自然只要知道区间就可以了。 题解上面说:如果$r1=2^n$,$r2=2^m$ 阅读全文
摘要:
一句话题意:三维空间划分四维空间,最多能划分成多少个部分。 我们直接想四维的不好想,但是一般这种题我们考虑从低维开始做起。 在经过手算之后我们可以发现: 设$f(x)$为零维(点)切一维(线)最多划分的部分,递推式:$f(x)=f(x 1)+1$ 设$g(x)$为一维(线)切二维(平面)最多划分的部 阅读全文
摘要:
题目来源于noi.ac国庆模拟赛test4 T1 题目内容 给一个 n行 t 列的矩阵,矩阵第 i行第 j列的元素是 i+j。 定义矩阵第 i行的积为第 i行所有元素的乘积。 现在要你求矩阵所有行的积的和。答案可能很大,所以 mod 1000000007(109+7)输出。 输入格式 第一行一个整数 阅读全文
摘要:
原题题意也就是给的数的全排列小于原数的个数。 我们可以很容易的想到重复元素的排列个数的公式。 但是我们发现阶乘的话很快就会爆long long啊(如果您想写高精请便) 之后我就尝试质因数分解。。。。但是遗憾的是太蒻了,没有成功,还是爆了。20分惨惨。最后也没有找出来哪里错了。 最后蒟蒻只好参考题解了 阅读全文
摘要:
现在让我来介绍一下数位DP......什么是数位DP呢qwq......数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp。 数位DP其实也是一种记忆化搜索吧qwq,与其说是一种算法,不如说是一种思想qwq 为了介绍它, 阅读全文
摘要:
// luogu judger enable o2 include include include include include include include using namespace std; const int N = 3e5+1e3; int read(){ int q=0;char 阅读全文
摘要:
看到数据范围较大,不能直接算。但是k的个数比较小,所以考虑从k下手。 我们通过思考可以得出在一个$n\times m$的格子中走的步数是有规律的,把向下走看作A,向右走看作B,那么显然不同的路径个数就是A,B的不同排列个数。 在这里我们引用到可重复元素的排列个数公式: 假设现在有n个元素,对于第一类 阅读全文
摘要:
观察数据范围,n m比较小,所以我们预先处理出前缀和。 然后我们可以考虑写一个函数来计算二维前缀和(二维前缀和大家都会的吧qwq,那我就不说了,就是要注意一下哪个是横轴哪个是纵轴) 之后就是二维上的二分位置,然后check看看符不符合二分出来的ans。 注:一半求最大化最小值和最小化最大值的问题,都 阅读全文
摘要:
![](https://i.loli.net/2018/10/14/5bc2fd7a94a27.png)
![](https://i.loli.net/2018/10/14/5bc2fd7a640ff.png)
![](https://i.loli.net/2018/10/14/5bc2fd7a76377.png) 阅读全文
摘要:
其实稍微思考一下就知道这个题的实质是求逆序对数量。可以用树状数组写,也可以用归并排序写。 其实看起来数据范围是需要写高精度的,但是。。。。数据造锅了。。所以。。。我的辣鸡非高精程序竟然也A了。。赛后有点懒,就不补高精度了。 大家知道是水题就行了。 include include include in 阅读全文
摘要:
这个题的限制条件也就是集合中最高位1的位置都一样。所以我们可以考虑桶排(因为在int范围内,所以最多开31个就可以了)。 我没有开桶,就是先排序,然后二分查找+位运算判断相同位最高位为1的情况。 以下是代码: 阅读全文
摘要:
我们可以先算出来雪堆在哪一天融化完。因为每天都有融化的量,在该天前的雪堆如果没有融化完成的话还会融化,所以记录融化量的前缀和,序列就有了单调性。 有了单调递增的性质后,就可以用二分查找来降低这个复杂度了。(当然懒得打二分可以用lower_bound) 之后算出来在哪一天融化之后,就把该天到那一天的范 阅读全文
摘要:
看到题目我们有一个直观的想法,就是它的递推式很像组合数学中的杨辉三角。。。。 这样想的话很容易就能得出式子: $$f "m" =\sum_{j=0}^{i}f(i j)\times C_{m}^{j}\times ( 1)^j$$ 举个例子: $f "4" $ $=f "3" f "3" $ $=f 阅读全文
摘要:
时间限制:2s 空间限制:256M 看到这个题,我们可以发现它的约束条件比较严格,所以答案很有可能没有或者合法解的个数很少qwq,所以这个时候带剪枝的搜索很有可能跑得过。 就是dfs啦!!借鉴图的思路,我们把认识的人先连边,之后搜索的时候我们考虑一个一个同学遍历,另开一个参数来记录是否选择为管理员。 阅读全文
摘要:
看到这个数据范围——比暴力搜索稍微大一点的,果断是状压DP啦! ~~听说prim最小生成树有40分?听说模拟退火可以A??~~ qwq大佬说这个题暴力搜索也能过掉的啦! 但是蒟蒻只会写70分暴力??? 先放上70分暴力的代码。。。就是枚举下一个拓展哪个点,然后枚举和哪个上面的前继点连线。 inclu 阅读全文
摘要:
这个题是一个比较有难度的图论+搜索题。 当然部分分还是很好拿的,我们可以跑一个比较裸的搜索,记录空白格子现在的位置、起始点的位置,然后模拟题意跑搜索。空白格子四面搜索,如果可以走的话就继续往前走,如果遇到起始点的话就把它和起始点的位置相交换。 我写丑了......只有50分,其他的大佬说暴力应该是有 阅读全文
摘要:
这个题是真的神仙。。。 根本不会做啊qwq 蒟蒻只会抄题解啊qwq 抄完题解感觉内心愧疚,只好写一写自己的理解+注释来发一篇博客补偿一下qwq 希望能把神仙思路传递给其他看到这个题不太会做的dalao们。。。。。 以上都是废话 期望DP和概率DP不一样,一般都是倒着推的。(dalao的经验之谈) 至 阅读全文
摘要:
这是一个DP题。 我们设$f[i][j][k]$表示$i$序列长度中放入了$j$个元素,其中$k$是限定的众数的个数;状态转移方程是 $$f[k][i][j]=f[k][i 1][j 1]+f[k][i 1][j] f[k][i k 1][j 1]$$ 前面的两个相加应该比较好理解,也就是我们考虑从 阅读全文
摘要:
不得不说本蒻做这个题目的时候内心是很蒙蔽的qwq 推了规律找错了结果还没有暴力的分数高qwq...... 开数组$f[i][j]$来记录前i个花圃,(这里运用到状压的思想)其中最近的m个的状态(二进制,1表示C,0表示P),然后因为这个状态是可以递推下一个状态的(比如说1~m到2~m+1),然后我们 阅读全文
摘要:
这是一个期望的题目,有两种做法。 一种是比较好想的高斯消元,另一种是思维难度稍微大了一些的数学做法,但是代码很短,时间复杂度也更优秀。 (高斯消元做法) include include include include include include using namespace std; int 阅读全文
摘要:
详细的注释已经写到了代码里面。 以后这种码量多的最好都写成函数再调用,确定好每个函数的作用。 然后变量名最好也是有实际意义的qwq 阅读全文
摘要:
"戳我" 做了快一天了。。。qwq 这个题写着真的难受。。。。上午打了快两个小时的暴力(~~天啊。。我竟然写了这么久~~)拿到了70分。。。 这个是我的暴力代码: include include include include define MAXN 1010 define MAXM 10010 u 阅读全文
摘要:
提供一个简单一点的思路,不需要滚动数组,也不需要一些奇奇怪怪的性质。 我们考虑设$f[i]$为$1$到$i$中有多少种波动数列。 我们可以注意到,波动数列分为先降后升和先升后降两种,但是我们发现其实它们对称,所以只算一个就可以了。 之后我们令$f[i]$表示的先降后升序列种类数,最后输出的时候答案乘 阅读全文
摘要:
其实也没什么。。就是用到了按位取模和最后对整个数取模的答案是一样的结论。但是蒟蒻我想的太复杂了,甚至还写了高精度。。。。 放上丑陋无比的代码。。。 include include include include include define MAXN 246913578 define mod 123 阅读全文
摘要:
这个题就是个结论题,你可以发现,因为每次必然会对左上角那个点进行颜色反转操作qwq,所以开始是黑色的话一定是先手必胜,开始是白色的话就是后手必胜qwq 所以。。代码什么的就判断左上角一个点就好了qwq include include include include include using nam 阅读全文
摘要:
考试的时候写T了。。。。不好意思贴自己的代码了,看std十分优美,就加了注释贴上来了qwq include using namespace std; define rep(i,a,b) for(int (i)=(a);(i)=(b);(i) ) const int maxn=1e6+5; int n 阅读全文
摘要:
这个题。。我们可以想到用递推写!!qwq(好吧,其实我的DP水平不高啊qwq) 就是我们以两个为单位(一共九种组合情况),然后往后面推下一位的情况。 通过手动模拟,我们可以找到它们之间的递推关系(详见代码) 先放上我的暴力代码。。。。(60分) cpp include include include 阅读全文
摘要:
子集 【问题描述】 R君得到了⼀个集合,⾥⾯⼀共有n个正整数。 R君对这个集合很感兴趣。R 君通过努⼒钻研,发现了这个集合⼀共有$2^n$个子集。 现在R君又对这个集合的⼦集很感兴趣。 定义⼀个集合的权值是这个集合内所有数字的和的话。 那么R君想问问你,这个集合的权值第K小子集是多⼤。 ps. 涉及 阅读全文
摘要:
数组(数学) 【问题描述】 fabdec 有⼀个长度为 n 的数组 $a[]$(下标 1 n), 初始时都是 0。 fabdec 随机了⼀个 1 到 n 的随机数 x,并且把 $a[x]++$。 fabdec 重复了 m 次这样的操作,然后数了⼀下数组⾥⼀共有 k 个位置 为奇数。 fabdec 现 阅读全文
摘要:
T1 数数 【问题描述】 fadbec 很善于数数,⽐如他会数将 a 个红球,b 个黄球,c 个蓝球,d 个绿球排成⼀列,任意相邻不同⾊的数⽬。 现在 R 君不知道 fadbec 数的对不对,想让你也算⼀算。 由于数字⽐较⼤,所以请输出除以 109 + 7 的余数。 【输入格式】 ⼀⾏四个正整数 a 阅读全文
摘要:
本blog是本蒻参加2018.10.1 10.7日的清北学堂北京一期刷题冲刺班的感想+学习笔记。 以下是考试记录: TEST1 "T1 最小公倍数(数学)" 已update "T2 不可逆转(DP)" 已update "T3 数值微分(数学)" 已update TEST2 "T1 选举(搜索)(数学 阅读全文
摘要:
斐波那契数列,是一个经典的递推数列。在实际生活中有很多应用。 我们一般都知道它的递推公式: F "1]=1,F[2]=1,...,F[n]=F[n 1]+F[n 2" 或者说通项公式......(这个我是不会,而且一半也用不到) 下面补充一些引理,做题的时候可能会用到。 1、$gcd(F_{i+1} 阅读全文
摘要:
初步:加法原理和乘法原理 概念: 加法原理是分类计数原理,常用于排列组合中,具体是指:做一件事情,完成它有n类方式,第一类方式有M1种方法,第二类方式有M2种方法,……,第n类方式有Mn种方法,那么完成这件事情共有M1+M2+……+Mn种方法。 做一件事,完成它需要分成n个步骤,做第一 步有m1种不 阅读全文
摘要:
因为本蒻实在太蒻了。。。对于即将到来的NOIP2018ssfd,所以下决心要把自己近期做过的题目(衡量标准为洛谷蓝题难度或以上)整理一下,归归类,简单地写一下思路,就当作自己复习了吧qwq 本随笔持续更新,自2018.9.19开始,计划更新到2018NOIP截止 (但是因为最近写的比赛题比较多。。但 阅读全文
摘要:
说好的签到题呢qwq。。。。怎么我签到题都不会啊qwq 之后看了bsgs才发现~~貌似不是那么那么难~~fake!!什么东西。。。 先贴上部分分做法(也就是枚举1的个数,然后每一步都进行取模(这和最后取模结果一样,但是可以处理更大的整数),判断是否符合题意。这个很好想也很好打,得分70分): inc 阅读全文
摘要:
题目的大概意思现在有一棵树,在树上找半径小于等于2的最小覆盖点的最小个数。 "题目链接" 讲一讲此类题的贪心策略: 就是每次寻找最低没有被覆盖的点,显然对于覆盖它的所有点中,在他的祖先处设立一个点最优。所以在它的祖先处设一个点,然后ans++,并且更新它父节点和祖先对于点的距离。 然后如果半径更大的 阅读全文
摘要:
有的时候,我们会发现一些问题的状态很难直接用几个数表示,这个时候我们就会用到状压dp啦~~。 状压就是状态压缩,就是讲原本复杂难以描述的状态用一个数或者几个数来表示qwq。状态压缩是一个很常用的技巧,把它运用到动态规划中有时候可以方便节省空间和时间,精简状态,方便状态转移。 找状态依然是状压dp的核 阅读全文
摘要:
昨天因为胡搞了一会儿社团的事情,所以错过(~~逃过~~)了nowcoder的测试赛。。。。。 以上,听说还是普及组难度qwq,而且还有很多大佬AK(然而我这么蒻肯定还是觉得有点难度的吧qwq) 不过我还是日常来补一下题解好了qwq "T1 数字权重(快速幂)" 这个就是你把式子$\sum_{i=2} 阅读全文
摘要:
"T1 中位数(二分)" 这个题是一个二分(~~听说是上周atcoder beginner contest的D题???~~) 我们可以开一个数组b存a,sort然后二分b进行check(从后往前直接遍历check时间复杂度不太对),check的时候把大于等于当前值的设为1,小于当前值的设为 1,然后 阅读全文