简单
mosquito_zm
这个作者很懒,什么都没留下…
展开
-
LA3644 X-Plosives(无向图中找环,并查集)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=19&page=show_problem&problem=1645题意:一些产品,每种产品由2种化合物合成,按顺序接收一些产品,若组成其中某些产品的化合物的种类数与这些产品的产品数相等,就要拒绝接收,因为可能爆炸,求要拒原创 2017-01-13 18:18:25 · 998 阅读 · 0 评论 -
2017 Multi-University Training Contest 1001 (简单)(技巧)
题目链接题解:题目等价于求2^m-1在十进制下的长度-1,所以答案就是log10(2 ^ m - 1) 。由于2 ^ m 一定不等于10的某次幂,所以2^m 与2 ^ m - 1是同样的长度。所以答案应该为log10(2 ^ m - 1) = log10(2 ^m) = m * long(2) (向下取整)代码如下:#include using namespace std;in原创 2017-07-26 12:50:19 · 262 阅读 · 0 评论 -
C语言sscanf()的用法
sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明: sscanf与scanf类似,都是用于输入的,只是后者以屏转载 2017-03-19 14:42:37 · 297 阅读 · 0 评论 -
2-SAT
2-SAT题目总结: http://blog.sina.com.cn/s/blog_71ded6bf0100tn3d.html关于2-SAT(2-Satisfiability)资料的话就是伍昱的《由对称性解2-SAT问题》PPT和赵爽的《2-SAT 解法浅析》PDF。转载 2017-03-02 00:51:27 · 226 阅读 · 0 评论 -
插板法与第二类stirling数的区别
插板法与第二类stirling数都是用来处理n个物品分为p份的处理方法。其区别在于:对于插板法来说,每个物品是等价的,没有差别的;而对于stirling数来说,每个物品各不相同。原创 2016-08-12 15:14:45 · 398 阅读 · 0 评论 -
分解质因数的技巧
在ACM比赛中,我们经常要分解质因数。那么我们应当如何快速分解质因数呢?其实,在我们用筛法求素数时,我们使用线性筛的方法,并在每次筛的过程中,记录下每个数的最小质因数。那么在分解质因数的时候,我们只需要不断除每个数的最小质因数,就可以快速得到分解的质因数。(不要用试除法了。。)原创 2017-07-08 20:17:18 · 2592 阅读 · 0 评论 -
hdu 5015 233 Matrix (矩阵快速幂)
233 MatrixTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 749 Accepted Submission(s): 453Problem DescriptionIn our daily lif转载 2017-07-07 21:07:49 · 255 阅读 · 0 评论 -
HDU 3709 数位dp
本题只需枚举中轴位置,然后数位dp即可PS:注意00,000这些都不能算进去,要单独去掉(因为在不同的中轴线下,这些数会算多次0,导致结果错误)#include using namespace std;#define ll long longconst ll maxn = 20;ll dp[maxn][4000][maxn];ll a[maxn];ll dfs(int pos,原创 2017-07-04 16:09:07 · 222 阅读 · 0 评论 -
POJ 3252(数位dp,前导0)
这题的约束就是一个数的二进制中0的数量要不能少于1的数量,通过上一题,这题状态就很简单了,dp[pos][num],到当前数位pos,0的数量减去1的数量为num的方案数,一个简单的问题,中间某个pos位上num可能为负数(这不一定是非法的,因为我还没枚举完嘛,只要最终的num>=0才能判合法,中途某个pos就不一定了),这里比较好处理,Hash嘛,最小就-32吧(好像),直接加上32,把32当0原创 2017-07-04 16:06:19 · 783 阅读 · 0 评论 -
HDU 4734(数位dp)
题目给了个f(x)的定义:F(x) = An * 2n-1 + An-1 * 2n-2 + ... + A2 * 2 + A1 * 1,Ai是十进制数位,然后给出a,b求区间[0,b]内满足f(i)常规想:这个f(x)计算就和数位计算是一样的,就是加了权值,所以dp[pos][sum],这状态是基本的。a是题目给定的,f(a)是变化的不过f(a)最大好像是4600的样子。如果要mems转载 2017-07-04 16:04:10 · 232 阅读 · 0 评论 -
HDU 2089 (数位dp)
入门题。就是数位上不能有4也不能有连续的62,没有4的话在枚举的时候判断一下,不枚举4就可以保证状态合法了,所以这个约束没有记忆化的必要,而对于62的话,涉及到两位,当前一位是6或者不是6这两种不同情况我计数是不相同的,所以要用状态来记录不同的方案数。dp[pos][sta]表示当前第pos位,前一位是否是6的状态,这里sta只需要去0和1两种状态就可以了,不是6的情况可视为同种,不会影响计数原创 2017-07-04 16:02:14 · 353 阅读 · 0 评论 -
POJ3630(Trie树)
题意:求给定的多个串中是否存在,某个串是另一个串的前缀。解题思路:使用Trie树。在每次插入一个串的同时判断。对于该问题,只存在以下两种情况: 1.当前插入的串的前缀是前面的某个串。对于这种情况,把前面插入的串的最后一个节点记为危险节点。那么在后面插入串的时候,如果经过危险节点,说明这种情况成立。 2.当前插入的串是前面某个串的前缀。对于这种情况,把插入串的最后一个节点单转载 2017-07-12 20:52:46 · 291 阅读 · 0 评论 -
CodeForces - 757C (反向思维)
题目链接本题一开始正面去想,就像是一个集合的操作,极其复杂。但实际上,如果我们倒着想,将每个动物所在的gym都记录下来,如果出现多次,就记录多次。那么我们知道,只要两个动物的出现序列相同,就可以交换。而判断相同时,我们可以用类似后缀数组判断时的思想,将所有序列都排好序,然后只有相邻的序列才有可能相等。这样,只要扫一遍,就可以求出答案。代码如下:#include using names原创 2017-07-12 11:23:08 · 488 阅读 · 0 评论 -
【Codeforces Round #404 (Div. 2)】 B 连通块(思考)
题目链接题意:给你n个点m条边 如果每个联通块都是完全图 则输出YES题解:并查集处理出联通块。 点的度=当前联通块中的点的个数-1代码如下:#include #include #include using namespace std;const int maxn = 150000 + 20;int n,m;int deg[maxn];int fa[maxn];原创 2017-03-27 15:35:27 · 224 阅读 · 0 评论 -
Codeforce Round #400 C 签到题
题目链接:点击打开链接题目大意:一个区间的价值【L,R】表示区间内所有元素的价值和。问你一共有多少个区间的价值,是K的非负整数次幂(0,1,2,3,4,5............)。题解:计算前缀和,并将已计算的前缀和放入map中储存,对于每个新的前缀和,只需去map中查找是否有满足条件的前缀和即可。Code:#include #include原创 2017-03-01 21:47:27 · 362 阅读 · 0 评论 -
FZU 2150 Fire Game(搜索)(从两点出发)
题目链接题解:本体数据范围较小,暴力搜索即可解决问题。注意在搜索时,由于有两个出发点,要将两个出发点同时塞进搜索的队列中去,在进行搜索,就可以同时计算两个起点的搜索。代码如下:#include #include #include #include #include #include #include using namespace std;const int maxn =原创 2017-08-04 21:46:50 · 297 阅读 · 0 评论