08 2018 档案

摘要:题目 分析 很难想到方向,但有方向了就很easy了。 我们如何减少不必要的计算? 如果我们知道了$ 100111 $的相容的数,$ 100101 $的相容数和他是完全一样的。 我们就靠着这个思想写一下就行了。 注意位运算优先级。 代码 1 #include <bits/stdc++.h> 2 usi 阅读全文
posted @ 2018-08-23 23:55 noble_(noblex) 阅读(340) 评论(0) 推荐(0)
摘要:题目 分析 这种题不会做 吃枣药丸。。。。。 想到状压已经经过的点。 然后更新时枚举两个点加进去。 复杂度$ {O(2^n \times n^2)}$。 凉凉。 真正的做法是每一个状态只要找到一组解就break。这样可以省掉一层n。 大致上就像lrj紫书的dp例题一样,反正这个点都要选,那就先选了他 阅读全文
posted @ 2018-08-23 23:50 noble_(noblex) 阅读(318) 评论(0) 推荐(1)
摘要:题目 分析 用$ dp[i][j] $表示用i个节点,有多少深度小于等于j的二叉树。 答案是$ dp[n][n] - dp[n][h-1] $ 转移时枚举左子树的节点数量,就可以知道右子树的节点数量。不断相乘加到$ dp[i][j] $上。 代码 1 #include <bits/stdc++.h> 阅读全文
posted @ 2018-08-23 23:41 noble_(noblex) 阅读(286) 评论(0) 推荐(1)
摘要:题目 分析 洛谷题解里有一位大佬讲的很好。 就是先用栈预处理出可以匹配的左右括号在数组中设为1 其他为0 最后求一下最长连续1的数量。 代码 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e6+10; 4 ch 阅读全文
posted @ 2018-08-23 23:34 noble_(noblex) 阅读(190) 评论(0) 推荐(1)
摘要:题目 分析 求结尾0的数量QwQ。 10只能是$ 2 \times 5 $,我们预处理出每个数因子中2和5的数量。 我们接着dp出从左上到右下的经过的最少的2的数量和最少的5的数量。两者取min后就是答案。 特判数据中有0的情况,把他当做10处理。如果此时答案大于1,那么把答案更新成1。因为0只有1 阅读全文
posted @ 2018-08-23 23:31 noble_(noblex) 阅读(253) 评论(0) 推荐(0)
摘要:题目 分析 dp基础题。 $ dp[i][j] $表示前i个数分成j组的最大和。 转移显然。 吐槽:做cf题全靠洛谷翻译苟活。 代码 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const i 阅读全文
posted @ 2018-08-23 23:18 noble_(noblex) 阅读(154) 评论(0) 推荐(0)
摘要:题目 分析 军训完状态不好QwQ,做不动难题,于是就学了下模拟退火。 之前一直以为是个非常nb的东西,主要原因可能是差不多省选前我试着学一下但是根本看不懂? 骗分利器,但据说由于调参困难,很多情况比不上多点爬山? 总体来说模拟退火的精髓就是: 可以看到T越大,转移的概率越高。 exp是在cmath里 阅读全文
posted @ 2018-08-23 21:36 noble_(noblex) 阅读(380) 评论(0) 推荐(0)
摘要:题目 分析 思维要求比较高。 首先我们要把原图的逆序对q算出来。 这个树状数组或归并排序都ok(树状数组不用离散化好评) 那么翻转$[l,r]$中的数怎么做呢? 暴力过不了,我试过了。 设$ t=r-l+1 $即为区间长度 那么区间数对数量(看好是所有数对,不是逆序对)的数量就是$ k =\frac 阅读全文
posted @ 2018-08-21 13:27 noble_(noblex) 阅读(493) 评论(0) 推荐(1)
摘要:题目 分析 因为m很小,考虑把所有状态压成m位二进制数。 那么总状态数小于$ 2^5 $。 如果状态$ i $能转移到$ j $,那么扔进一个矩阵,n次方快速幂一下。 答案是对角线之和,是转移n次后回来的方案数。 代码 1 #include <bits/stdc++.h> 2 typedef lon 阅读全文
posted @ 2018-08-09 11:11 noble_(noblex) 阅读(227) 评论(0) 推荐(0)
摘要:题目 分析 不想画图。 https://www.luogu.org/problemnew/solution/P1641 好神仙的题啊。 代码 1 // luogu-judger-enable-o2 2 #include <bits/stdc++.h> 3 using namespace std; 4 阅读全文
posted @ 2018-08-09 10:57 noble_(noblex) 阅读(210) 评论(0) 推荐(0)
摘要:题目 分析 大佬和我说本题是除法分块,莫比乌斯反演中也有用到。 QwQ我不会莫比乌斯反演啊~ 题目让我们求 $ \sum_{i=1}^n k\mod n $ 然后根据$ a \mod b = a - \left \lfloor \ \frac{a}{b} \right \rfloor \times 阅读全文
posted @ 2018-08-09 10:46 noble_(noblex) 阅读(242) 评论(0) 推荐(0)
摘要:题目 分析 快把欧拉回路忘光了。 欧拉回路大概就是一笔画的问题,可不可以一笔画完全图。 全图有欧拉回路当且仅当全图的奇数度数的点有0或2个。 2个时是一个点是起点,另一个是终点。 本题也差不多,把给的每个字母对中的两个字母连边。然后跑欧拉回路 代码 1 #include<iostream> 2 #i 阅读全文
posted @ 2018-08-09 10:31 noble_(noblex) 阅读(206) 评论(0) 推荐(0)
摘要:题目 分析 算是概率dp不错的题。 $ dp[i][j] $表示有i个人时,这i个人中的第j个获胜的概率。 我们把i从1推到n,那么答案就是$ dp[n][i] $ 然后我们规定,第一个人就是庄。 然后我们枚举每个卡片tmp。 $ dp[i][j]=dp[i][j] + dp[i-1][j-tmp] 阅读全文
posted @ 2018-08-05 18:51 noble_(noblex) 阅读(272) 评论(0) 推荐(0)
摘要:题目 分析 蒟蒻根本不会博弈论。。。。。 只知道异或和判断Nim游戏。。 不是很懂输出的选择,所以发一篇博客以待复习 代码 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn=600000; 4 int a[maxn] 阅读全文
posted @ 2018-08-05 00:56 noble_(noblex) 阅读(215) 评论(0) 推荐(0)
摘要:题目 分析 发现我们关心的不是棋子的位置,我们只关心棋子数量就ok。 首先每行每列最多两个棋子。这是显然的。 然后我觉得本题最难的部分就是对行进行讨论,蒟蒻我一直被限制在了对格点讨论。。。。 $dp[i][j][k] $放了前$i$行,有$j$列有1个棋子,有$k$列有2个棋子。转移就很显然了。 代 阅读全文
posted @ 2018-08-05 00:51 noble_(noblex) 阅读(183) 评论(0) 推荐(0)
摘要:题目 分析 数学期望 用$ dp[i][j] $表示发现了在$ j $个子系统里面发现了$ i $个bug到$ s $个子系统里面发现了$ n $个bug需要的期望天数。 $ dp[0][0] $就是答案。 然后分类一下,可以转移到$ dp[i][j] $无非就是$ dp[i+1][j+1] $ $ 阅读全文
posted @ 2018-08-02 13:14 noble_(noblex) 阅读(198) 评论(0) 推荐(0)

/* */