The easy is downhill.
盒子与小球之四
描述
给定N个各不相同的小球,和M个不同的BOX,有多少种不同的放球方法,使得每个BOX里的小球个数不小于K。N,M,K均小于15
输入
每行给出N,M,K
以0 0 0结束
输出
如题
样例输入
1 | 3 3 1 |
样例输出
1 | 6 |
题解
这题一开始想组合数学做法,结果发现怎么都会重。。。
既然这样那不如就写个组合dp好了。
设$f(i,j)$表示前$i$个小球放入$j$个盒子中的方案数。
显然我们只需要枚举当前盒子放了几个球。
n-i+p是因为我们要在剩下的球(前面状态带编号选了i-p个球)中选择p个球。
一开始组合数还写错了。。
Code:
1 |
|
UVA11324 The Largest Clique
题目描述
给你一张有向图 G,求一个结点数最大的结点集,使得该结点集中的任意两个结点 u 和 v 满足:要么 u 可以达 v,要么 v 可以达 u(u,v相互可达也行)。
输入数据
第一行:测试数据组数T,每组数据的格式如下:
第一行为结点数 n 和边数 m ,结点编号 1~n。
以下m行每行两个整数 u 和 v ,表示一条有向边 u->v。
输出数据
每组数据输出最大结点集的结点数
题解
是一道很水的题目(⊙o⊙)…
显然只需要根据一个非常容易得知的性质:有向图上一个点u能到另一点v,那所有到达点u的点都能到v。
这启发我们要用拓扑排序。
又考虑到图中有强联通分量ECC。
ECC内任意两点均可互相到达,满足题意,可以视为一个“大点”
因此先Tarjan缩点在写一个简单的dp就可以AC了
u是能够到达点v的点。
Code:
1 |
|
[ZJOI2007]最大半连通子图
题目描述
一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径。若G’=(V’,E’)满足V’?V,E’是E中所有跟V’有关的边,则称G’是G的一个导出子图。若G’是G的导出子图,且G’半连通,则称G’为G的半连通子图。若G’是G所有半连通子图中包含节点数最多的,则称G’是G的最大半连通子图。给定一个有向图G,请求出G的最大半连通子图拥有的节点数K,以及不同的最大半连通子图的数目C。由于C可能比较大,仅要求输出C对X的余数。
输入输出格式
输入格式:
第一行包含两个整数N,M,X。N,M分别表示图G的点数与边数,X的意义如上文所述接下来M行,每行两个正整数a, b,表示一条有向边(a, b)。图中的每个点将编号为1,2,3…N,保证输入中同一个(a,b)不会出现两次。
输出格式:
应包含两行,第一行包含一个整数K。第二行包含整数C Mod X.
输入输出样例
输入样例#1:
1 | 6 6 20070603 |
输出样例#1:
1 | 3 |
说明
对于100%的数据,
题解
比起上面那道题多了个方案数。
有没有想到最短路计数?显然严格大于就改成当前更新点的方案数,恰好等于就加上方案数。
所以要考虑重边!用map去重居然没有TLE,假如TLE也不是没办法,换成vector排序即可。
Code:
1 |
|
今天就此结束,明天也要认真学习哦!