摘要:
这个题的意思是给你一个连通图, 图上每个点都有连个权值ai, bi让你选一个生成树使得sigma(ai*xi)/sigma(bi*xi)最小, 对比与基础的01规划, 我们假设答案是mid, 然后建立一个图, 其新的边的权值是ai-mid*bi, 然后求解最小生成树,假设其答案是tp, 如果tp>= 阅读全文
摘要:
这个题算是01分数规划的最基本的应用了, 01分数规划是给你n对数(a1, b1)....(an, bn), 然后让你选择一些数对, 使得sigma(ai)/sigma(bi)最大。这里附上讲解一份, http://blog.csdn.net/hhaile/article/details/88836 阅读全文
摘要:
这道问题是求1-N的次短路的长度,我们直接在dist[maxn][2]上加1维更新即可, 代码如下: #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <queue> using 阅读全文
摘要:
这道题就是让你求出有向图中最短路和比最短路长1的路的数量, 我们求出次短路和最短路的数量即可解决这道题 /* 求s到t的最短路与次短路(这里要求只比最短路多1)的条数之和 联想到最小,次小的一种更新关系: if(x<最小)更新最小,次小 else if(==最小)更新方法数 else if(x<次小 阅读全文
摘要:
这个题就是让你求出S点到T点的第K短路, 使用A*搜索就可以, 搜索使用两个指标函数 h g, h表示从源点到当前点的最短路, g点表示从当前点到汇点的最短路, 搜索的时候v顶点第k次出队时的h就是第k短路的长度, 代码如下: #include <cstdio> #include <cstring> 阅读全文
摘要:
这个题的意思是是给你一串珠子, 珠子可以绕中心旋转, 也可以轴对称, 问用三种颜色染这一串珠子有几种情况? 首先我们可以知道这个置换群中有2n个元素, 当n为奇数的时候为n*3^(n/2+1), 当n为偶数的时候分两种情况n/2*(3^(n/2)+3^(n^2+1)), 当旋转的时候有 sigma( 阅读全文
摘要:
题意是有k个物品, 每个物品b[i]个, 且每个物品重a[i], 求从这些物品中取出的物品总重为n的方案数, 典型的求解多重集组合数, 代码如下: #include <algorithm> #include <cstring> #include <iostream> using namespace 阅读全文
摘要:
题意是给你n个物品, 每个物品有ai个, 从中选取m个物品的排列数是多少??这个问题可以使用指数型母函数来解决。。代码如下: #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using nam 阅读全文
摘要:
这个题的意思是给你1^2 2^2 3^2 ... 17^2这17个数, 为你组成i的方案数有多少个, 可以通过普通母函数来求解, 系数就代表方案数, (1+x+x^2+...x^300)(1+x^2+)..., 代码如下: #include <iostream> #include <algorith 阅读全文
摘要:
题目大意是给定1 2 5的数量 a, b, c, 问1 2 5不能组成的最小的数是多少?可以使用dp来解决, 定义dp[i][j]为前i种组成j的时候第i中数剩余多少, 那么 dp[i][j] = mi (dp[i-1][j]>=0) -1 (a[i]>j || dp[i][j-a[i]]<=0) 阅读全文