![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
HDU
OceanLight
xxxx
展开
-
HDU 3466 Proud Merchants DP 分享排序方式的证明。。
此题我纠结了一下午,最终。。。。。。还是没想出来。然后看了神牛的题解 说是 按 q-p 排序。。。 于是我就去想为什么按此排序。。在雨中漫步了一会,今晚的济南的正好下雨,但还是习惯性走出实验室,思考了十几分钟之后,终于想通了。。。。 于是就在这写题解。。。 我感觉这是一个好题。。。。。。。。Proud MerchantsTime Limit: 2000/1000 MS (J原创 2012-08-14 22:29:23 · 5676 阅读 · 2 评论 -
hdu 4045 Machine scheduling 组合数学
题意是 有n台机器,从中选出r台机器,满足两台的编号差不小于k , 并将这r台,分成m组, 问有多少种组合方式?第二部分 就是裸的 第二类斯特林数。 重点是第一部分 : 问题 抽象出来就是 : 从 数字 1 - n 种,选出 r 个 ,相邻的两个差不小于k 。 这个题的解法有两种。 一种是 dp 一个一个递推。 第二种就是 组合公式。原创 2013-07-27 13:51:46 · 805 阅读 · 0 评论 -
hdu 1028 Ignatius and the Princess III 母函数
题意是 求数字n 可以拆成多少种不同的等式,等式中顺序不计。这种无序的组合方式用母函数解决,如果是有序的话就用组合计数可可以求得一个公式 2^(n-1).这个问题可以转化成这样一个问题: 给出1 到n ,这n种不同的数,每个数可以使用无限次,问有多少种组合方式可以凑出n。这样就转化成了一个简单的母函数问题。 G( x ) = (1 + x^1 + x^2 +x^原创 2013-07-24 10:40:04 · 735 阅读 · 0 评论 -
hdu 1130 How Many Trees?
此题 是 简单的 catalan 数的应用, 二叉树的表示方法 可以转换乘 卡特兰数中典型的括号合法种类数 的问题。我的想法 是 如果 按树的深搜顺序 第一次经过一个点时 画 左括号 , 此节点的左节点便利完成后又回到这个点 这是 画 右括号,这样的话, 每一个树 都能唯一的对应一个合法括号序列, 每一个 合法的括号序列页唯一的对应一棵树。 这样的话 , 这个问题 就转化乘 最简单的 ca原创 2013-07-26 15:31:32 · 1449 阅读 · 0 评论 -
hdu 4335 What is N? 数论
题意 给定 b,p,m 求 满足 n^(n!) %p =b ( 0m 的范围 2^64 -1 这里是个trick。。。 利用降幂的公式 。 a^x %p= a^( x%phi(p) + phi(p)) %p 就可以把指数降到 1 - p 这个范围内。 对于 kp+1 ~ (k+1)p (k>1)这个范围中的n 可以 映射到 1 - p原创 2013-07-31 23:20:37 · 661 阅读 · 0 评论 -
hdu 3625 Examining the Rooms 第一类stirling数
斯特林数的第一类应用 题意就是 求n个元素分成k个环排列的数目。递推公式是:s( n , 0 ) = 0;s( 1 ,1 ) =1;s( n , k ) = s( n- 1 , k-1 )+ (n-1)*s( n-1 , k);公式的意思是 : 当 n-1个 形成了 k-1 个 环时,第n个只能形成单环。 方案数 是 s( n -1 , k -1 )当n-1个原创 2013-07-24 16:14:17 · 745 阅读 · 0 评论 -
hdu 2222 AC自动机 。。
#include #include #include #include using namespace std;const int MAXK = 26;const int MAXN = 500010 ;const int A = 'a';struct node { node * fail ; node * next[MAXK]; int count原创 2012-12-01 16:25:03 · 469 阅读 · 0 评论 -
hdu 1251 字典树的水题
字典树的水题#include #include #include using namespace std;struct node { int num ; node *next[26];} ;node * root;void trie(){ int i,j; root = new node; root->num = 0; for(int i原创 2012-12-01 16:15:50 · 492 阅读 · 0 评论 -
hdu 1247 字典树 tire树 (简单)
找出所有的能够由其它的两个字符串组成的字符串.可以先建起字典树,然后对每一个单词 枚举拆分。#include #include #include using namespace std;char s[50010][50];struct node { int num; node * next[26];} ;node *root;void trie(){原创 2012-12-01 16:11:08 · 566 阅读 · 0 评论 -
AC 自动机 水题 hdu 3065
AC自动机 :AC自动机算法分为3步:构造一棵Trie树,构造失败指针和模式匹配过程。在学习 AC 自动机 之前 , 一般应先学会 字典树 (也就是 tire树 ) 和 KMP 算法 (fail指针的构造 就是这个思想)。用模拟指针实现的AC自动机#include #include #include #include using namespace std;const原创 2012-12-01 16:21:20 · 501 阅读 · 0 评论 -
HDU 4091 Zombie’s Treasure Chest (每日一题)
大意是: 一些战士来到了一个村庄,发现了两种宝石和一个宝箱,每种宝石的个数是无限的,给出了宝箱的大小 N 和两种宝石的 size 和 value ,即 N s1 v1 s2 v2 ,已知这五个两,求利用这个宝箱,战士能够带走多大价值的宝石。 五个数的范围是 int 。 也就是 10^9。如果范围比较小的话,就直接可以用多重背包的解法。 但是数据范围是 10^9 就没法用 多重背包来做了。。原创 2012-08-12 20:32:14 · 2357 阅读 · 2 评论 -
hdu 4628 Pieces 集合DP
给一个长度为 n ( for(int subset = set ; subset >0 ;(--subset)&=set)枚举 set 的子集 #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2013-08-10 22:03:07 · 588 阅读 · 0 评论