把所有点拆成两个,将符合条件的两个点x,y连上边,流量为1,费用为-(x+y)。

做一遍最小费用最大流,最后ans div 2即可。

 Program bzoj2661;
const INF=;
var last,next,p,cost,cap,q:array[..] of longint;
flag1,flag2:array[..] of boolean;
a,c,i,j,x,y,t,s,sum:longint;
b:array[..] of longint;
pd:array[..] of boolean;
d,ps:array[..] of longint;
function gcd(x,y:longint):longint;
begin
if y= then exit(x) else exit(gcd(y,x mod y));
end;
procedure add(x,y,f,c:longint);
begin
inc(sum); next[sum]:=last[x]; last[x]:=sum;
p[sum]:=y; q[sum]:=x; cost[sum]:=c; cap[sum]:=f;
end;
procedure adt(x,y,f,c:longint);
begin
add(x,y,f,c); add(y,x,,-c);
end;
procedure spfa;
var i,j,l,r:longint;
begin
for i:= to t do d[i]:=INF;
fillchar(pd,sizeof(pd),false);
l:=; r:=; pd[s]:=true; b[]:=s; d[s]:=;
while l<=r do
begin
i:=last[b[l]];
while i<> do
begin
if (cap[i]>) and (d[p[i]]>d[b[l]]+cost[i]) then
begin
d[p[i]]:=d[b[l]]+cost[i];
ps[p[i]]:=i;
if not pd[p[i]] then
begin
inc(r);
b[r]:=p[i];
pd[p[i]]:=true;
end;
end;
i:=next[i];
end;
pd[b[l]]:=false;
inc(l);
end;
end;
procedure minCmaxF;
var x,i,j,cc,f,min:longint;
begin
f:=; cc:=;
while true do
begin
spfa;
if d[t]=INF then
begin
writeln(f div ,' ',-cc div );
exit;
end;
min:=INF;
x:=t;
while x<>s do
begin
if cap[ps[x]]<min then min:=cap[ps[x]];
x:=q[ps[x]];
end;
x:=t;
while x<>s do
begin
dec(cap[ps[x]],min);
inc(cap[ps[x] xor ],min);
x:=q[ps[x]];
end;
cc:=cc+min*d[t];
f:=f+min;
end;
end;
begin
readln(a,c);
s:=;
for i:=a to c do
for j:=a to c do if (i<>j) then
begin
x:=trunc(sqrt(abs(i*i-j*j)));
if x*x<>abs(i*i-j*j) then continue;
if gcd(i,j)<> then continue;
add(i,j+c,,-(i+j));
end;
for i:=a to c do add(,i,,);
for i:=a to c do add(i+c,c*+,,);
s:=; t:=*c+;
minCmaxF;
end.

BZOJ2661 连连看 (费用流)的更多相关文章

  1. [BZOJ2661][BeiJing wc2012]连连看 费用流

    2661: [BeiJing wc2012]连连看 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1349  Solved: 577[Submit][ ...

  2. BZOJ 2661: [BeiJing wc2012]连连看 费用流

    2661: [BeiJing wc2012]连连看 Description 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给出一个闭 ...

  3. 【费用流】bzoj2661 [BeiJing wc2012]连连看

    将每个数拆点,互相连边,然后满足条件的数对之间互相连边,跑最大费用流,答案是流量和费用分别除以2. 一定要i->j.j->i都连上,否则可能会出现一个数在一边被选择了,在另一边的另一个匹配 ...

  4. BZOJ_2661_[BeiJing wc2012]连连看_费用流

    BZOJ_2661_[BeiJing wc2012]连连看_费用流 Description 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规 ...

  5. hdu-5988 Coding Contest(费用流)

    题目链接: Coding Contest Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Ot ...

  6. POJ2195 Going Home[费用流|二分图最大权匹配]

    Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22088   Accepted: 11155 Desc ...

  7. BZOJ3130: [Sdoi2013]费用流[最大流 实数二分]

    3130: [Sdoi2013]费用流 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 960  Solved: 5 ...

  8. 洛谷 1004 dp或最大费用流

    思路: dp方法: 设dp[i][j][k][l]为两条没有交叉的路径分别走到(i,j)和(k,l)处最大价值. 则转移方程为 dp[i][j][k][l]=max(dp[i-1][j][k-1][l ...

  9. Codeforces 730I [费用流]

    /* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给两行n个数,要求从第一行选取a个数,第二行选取b个数使得这些数加起来和最大. 限制条件是第一行选取了某个数的条件下,第二行不能选取对应位置的数. ...

  10. zkw费用流+当前弧优化

    zkw费用流+当前弧优化 var o,v:..] of boolean; f,s,d,dis:..] of longint; next,p,c,w:..] of longint; i,j,k,l,y, ...

随机推荐

  1. 你不知道的JavaScript--数组进阶全掌握

    转载 http://blog.csdn.net/i10630226/article/details/49764537 在程序语言中数组的重要性不言而喻,JavaScript中数组也是最常使用的对象之一 ...

  2. mvc json post执行顺序

    function GetFlightNo() {        var falg = false; var value = $("#No").val();        $.pos ...

  3. class、interface、struct的区别

    1 struct和class有什么区别 1.1默认的继承访问权限 Struct是public的,class是private的. 你可以写如下的代码: struct A { char a; }; str ...

  4. DOM中元素节点、属性节点、文本节点的理解

    DOM中元素节点.属性节点.文本节点的理解 节点信息 每个节点都拥有包含着关于节点某些信息的属性.这些属性是:nodeName(节点名称) nodeValue(节点值) nodeType(节点类型)  ...

  5. PHP函数——is_subclass_of() 函数 判断一个对象是否为一个类的子类

    说明: bool is_subclass_of ( object $object , string $class_name ) 如果对象 object所属类是类 class_name的子类,则返回 T ...

  6. 【转】Nginx+php-fpm+MySQL分离部署详解

    转:http://www.linuxidc.com/Linux/2015-07/120580.htm Nginx+php-fpm+MySQL分离部署详解 [日期:2015-07-26] 来源:Linu ...

  7. 管理工具MongoVUE使用

    连接数据库 管理数据库 查询 1,查询所有 2,查询命令窗口

  8. Codeforces 417E

    #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #inclu ...

  9. [Js]面向对象的选项卡实例

    中间过渡环节:把面向过程的程序,改写成面向对象的形式 <html xmlns="http://www.w3.org/1999/xhtml"><head>&l ...

  10. bzoj 2257: [Jsoi2009]瓶子和燃料

    #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> usin ...