摘要:
[关键字]:图论 其他 反向思维[题目大意]:给出一个n个点m条边的有向图,初始时每条边都是非负数。如果一个点所有的入边的权值都是正整数,那就称它为激活的(或没有入边)。对这个图的操作时呈周期的,每个周期任意选一个已激活的点进行“fire”操作:入边权-1出边权+1,然后更新激活节点。如果一个点可以通过一系列“fire”操作激活自己那称它为“potentially alive”,如果一个点在任意次“fire”后仍旧是“potentially alive”那就称它是“alive”,问每个点是否是“alive”。[分析]:要运用反向思维的方式去想,如果初始时有一条入边是0,那就看上一个点如果也有一 阅读全文
posted @ 2012-03-23 23:12
procedure2012
阅读(329)
评论(0)
推荐(0)
摘要:
[关键字]:动态规划[题目大意]:在一个n*n的棋盘里放k个王,问使它们不能互相攻击的摆放方案有多少种。//==============================================================[分析]:状态压缩动态规划,类似于炮兵阵地。方程:f[i][j][k1]=Σf[i-1][j-b[k1]][k2],表示前i行放j个王第i行状态是k1,i-1行状态时k2时的方案数。k1是利用二进制表示的这一行的状态,1表示有王0表示没有王。转移时要判断:(k1&k2)==0 ((k1<<1)&k2)==0 ((k1>>1)& 阅读全文
posted @ 2012-03-23 22:27
procedure2012
阅读(191)
评论(0)
推荐(0)
摘要:
[关键字]:数学 组合计数[题目大意]:在一个n*n的棋盘里放k个车,问使它们不能互相攻击的摆放方案有多少种。//====================================================================[分析]:一开始推了半天递推公式也没解决了判重等一系列问题。然后在仔细一看题,太简单了……首先每一行每一列只能有一个车,所以找出k个车所摆放的k行k列总共有C(n,k)2种方案数,而在这k行k列中车的摆放方案共有k!种,所以最后答案就是C(n,k)2*K!(注意用int64)。[代码]:View Code #include<iostream& 阅读全文
posted @ 2012-03-23 22:12
procedure2012
阅读(252)
评论(0)
推荐(0)