摘要:
两题都是基础题,不同的是 zoj 那题的男女可能重名。Gale-Shapley 算法:while ( 存在男人m是自由的 ) { 令w是m的还没求过婚的最高排名的女人 if ( w是自由的 ) m-w 配对 else { 取 w 的当前对象 m1 if ( w 更爱 m1 ) m保持自由 else m-w配对 m1变成自由 }}poj 3487const int N = 105;int n;int hm[N], hw[N]; //hm[i]为第i个男人的配偶 -1表示自由int a[N][N], b[N][N], p[... 阅读全文
posted @ 2013-05-16 18:02
心向往之
阅读(179)
评论(0)
推荐(0)
摘要:
题意:‘H’是山地,‘P’是平原,在平原上可以放置炮兵,攻击范围为图中黑色部分,炮兵不能放置在其他炮兵的攻击范围内,问最多能放多少个炮兵?分析:用一个整数s表示一行的状态,s的第k位为1表示这一行第k列放置了炮兵。cnt[s] 表示 s的1的个数,即放置了炮兵的个数。d[r][i][j]表示第 r 行状态为 i, r-1 行状态为 j 的最大炮兵数,d[r][i][j] = max( d[r-1][j][k] + cnt[i] ); 其中j k 与 i 不冲突。每行最多有10个格子,状态为2^10,但有一些状态是非法的,合法状态在60个以内,所以要先预处理出所有合法状态。const int N 阅读全文
posted @ 2013-05-16 12:33
心向往之
阅读(143)
评论(0)
推荐(0)

浙公网安备 33010602011771号