2011年3月12日

扩展欧几里得

摘要: hdoj 1576 A/B(A/B)%C = (A*B^-1)%C = (A%C)*(B^-1)%C用扩展欧几里得求出B的逆元B^-1//x是a mod b的乘法逆元,y是b mod a的乘法逆元inline int extend_gcd( int a, int b, int &x, int &y ) { int tp, r; if( b == 0 ) { x = 1; y = 0; return a; } r = extend_gcd( b, a%b, x, y ); tp = x; x = y; y = tp - a / b * y; return r;}AC代码:#inc 阅读全文
posted @ 2011-03-12 21:58 CrazyAC 阅读(299) 评论(0) 推荐(0) 编辑

Dinic

摘要: hdoj 1569 & hdoj 1565 方格取数1. 最小点权覆盖集=最小割=最大流2. 最大点权独立集=总权-最小点权覆盖集将格子黑白染色,然后求最小割。#include <iostream>#include <cstring>using namespace std;/*==================================================*\| Dinic 最大流 O(V^2 * E)| INIT: ne=2; head[]置为0; addedge()加入所有弧;| CALL: flow(n, s, t);\*======= 阅读全文
posted @ 2011-03-12 10:14 CrazyAC 阅读(540) 评论(0) 推荐(0) 编辑