huangriq

导航

2015年6月17日 #

Erlang 热更新机制

摘要: Current and Old CodeThe code of a module can exists in two variants in a system:current codeandold code. When a module is loaded into the system for t... 阅读全文

posted @ 2015-06-17 22:12 huangriq 阅读(274) 评论(0) 推荐(0) 编辑

2012年10月2日 #

hdu 4411(最小权匹配or费用流)

摘要: 题意:n个小偷在n个不同城市,某些城市之间有道路连接,k个警察在城市0,问将所有小偷抓好城市0警察所花费的最小总路程,还有一个条件是抓小偷必须按1,2,3,4……n顺序。思路:可以用最小权匹配来做,抓每个小偷的警察必然是从小偷编号之前的那些城市过来的,所以每个城市能被你比他编号小的城市所匹配。而城市0则可以拆成个点,这k个点可以匹配任意点,也可以被任意点匹配。总体来说相当于将城市路径分解成k个环,求解这k个环的最小长度和。View Code费用流建图:将每个城市拆成出点和人点,两点之间加一条容量为1,费用为-M的边,其中M要尽量大。0点到每个入点连一条容量为1费用为0的边,每个出点到汇点连接一 阅读全文

posted @ 2012-10-02 23:25 huangriq 阅读(329) 评论(0) 推荐(0) 编辑

2012年9月30日 #

hdu 4417(线段树OR树状数组)

摘要: 题意:输入一个长度为n的序列,然后m个询问,询问区间[a,b]中比h小的数的个数。思路:树状数组或线段树离线处理。树状数组1View Code 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<map> 7 using namespace std; 8 #define rep(i,a,b) for(int i=(a);i<=(b);i++) 9 # 阅读全文

posted @ 2012-09-30 14:46 huangriq 阅读(239) 评论(0) 推荐(0) 编辑

2012年9月7日 #

hdu 3652(数位dp)

摘要: 题意:求解x,y区间中有13字串并且能出13的数的个数思路:数位dp+记忆化搜索,dp[i][j][k]表示处理到第i位,mod13的余数为j,且状态为k的数的个数。k=0表示已经出现了串13,k=2表示前一个数字是1,k=1表示剩余状态。最终结果为dp[pos][0][0]pos为数的位数。View Code 1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cstring> 5 #include<cmath> 6 using names 阅读全文

posted @ 2012-09-07 22:09 huangriq 阅读(226) 评论(0) 推荐(0) 编辑

hdu 3709(数位dp)

摘要: 题意:给出x,y,求出x到y这个区间的平衡数个数。平衡数定义如题:http://acm.hdu.edu.cn/showproblem.php?pid=3709思路:数位dp,记忆化搜索,dp[pos][rol][pre],pos表示当前位位置,rol表示轴的位置,pre表示当前状态下的权值大小。当pos=-1时表示数位处理完毕,检查结果并返回。当pre<0时返回函数。limit表示是否有上限。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #includ 阅读全文

posted @ 2012-09-07 22:02 huangriq 阅读(166) 评论(0) 推荐(0) 编辑

poj 2486(树形dp)

摘要: 题意:给出一棵树,每个顶点有个权值,求解从顶点1出发经过不超过k条边,经过的顶点的权值和最大值。思路:树形dp,dp[i][j][k],以第i个顶点为根的子树,经过j条边状态为k时经过顶点的最大权值和.k=0表示回到点i,k=1表示不回到点i。View Code 1 #include<algorithm> 2 #include<cstring> 3 #include<vector> 4 using namespace std; 5 #define N 110 6 #define K 220 7 int mx,k; 8 vector<int> g[ 阅读全文

posted @ 2012-09-07 21:51 huangriq 阅读(197) 评论(0) 推荐(0) 编辑

poj 1947(树形dp)

摘要: 题意:给出一颗树,求解截出k个连通点需要去掉的最少边树思路:树形dp,dp[i][j] 表示以编号为i的点为根的子树包含j个连通点的最小代价。其中dp[i][1]就是该顶点的分支个数。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<vector> 6 using namespace std; 7 #define inf 0x3f3f3f 8 #define N 155 9 vec 阅读全文

posted @ 2012-09-07 21:41 huangriq 阅读(138) 评论(0) 推荐(0) 编辑

2012年8月12日 #

poj 1637(混合图求欧拉回路)

摘要: 参考博客:http://www.cnblogs.com/destinydesigner/archive/2009/09/28/1575674.html1 定义欧拉通路 (Euler tour)——通过图中每条边一次且仅一次,并且过每一顶点的通路。欧拉回路 (Euler circuit)——通过图中每条边一次且仅一次,并且过每一顶点的回路。欧拉图——存在欧拉回路的图。2 无向图是否具有欧拉通路或回路的判定G有欧拉通路的充分必要条件为:G 连通,G中只有两个奇度顶点(它们分别是欧拉通路的两个端点)。G有欧拉回路(G为欧拉图):G连通,G中均为偶度顶点。3 有向图是否具有欧拉通路或回路的判定D有欧拉 阅读全文

posted @ 2012-08-12 09:21 huangriq 阅读(278) 评论(0) 推荐(1) 编辑

2012年8月5日 #

poj 2942(强连通分量)

摘要: 搜索双连通分量。深度优先搜索过程中,用一个栈保存所有经过的节点,判断割点,碰到割点就标记当前栈顶的结点并退栈,直到当前结点停止并标记当前割点。标记过的结点处于同一个双连通分量。交叉染色搜索奇圈。在一个节点大于2的双连通分量中,必定存在一个圈经过该连通分量的所有结点;如果这个圈是奇圈,则该连通分量内的所有的点都满足条件;若这个圈是偶圈,如果包含奇圈,则必定还有一个奇圈经过所有剩下的点。因此一个双连通分量中只要存在一个奇圈,那么该双联通分量内的所有的点都处于一个奇圈中,在题目中,即武士可以坐成一圈。根据这个性质,只需要在一个双联通分量内找奇圈即可判断该双联通分量是否满足条件。交叉染色法就是在dfs 阅读全文

posted @ 2012-08-05 23:29 huangriq 阅读(359) 评论(0) 推荐(0) 编辑

2012年8月4日 #

poj 2728(最小比率生成树)

摘要: 参考题解:http://www.cppblog.com/jh818012/articles/167743.html题意:有n个村庄,村庄在不同坐标和海拔,现在要对所有村庄供水,只要两个村庄之间有一条路即可,建造水管距离为坐标之间的欧几里德距离(好象是叫欧几里德距离吧),费用为海拔之差现在要求方案使得费用与距离的比值最小很显然,这个题目是要求一棵最优比率生成树,0-1分数规划,0-1分数规划是分数规划的一种特殊情况,分数规划适用于求解最优化问题的,对于求最大的对应解,该理论也有效这是从网上找到的具体的最优比率生成树的方法的讲解////////////////////概念有带权图G, 对于图中每条 阅读全文

posted @ 2012-08-04 22:39 huangriq 阅读(428) 评论(0) 推荐(0) 编辑