把所有点拆成两个,将符合条件的两个点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. uva 1629

    1629 - Cake slicing Time limit: 3.000 seconds A rectangular cake with a grid of m * n <tex2html_v ...

  2. 使用PL/SQL连接远程的Oracle数据库

    PL/SQL不仅可以连接本机的oracle数据库.也可以连接远程的数据库. 需要修改一个文件:在本机oracle 数据库的安装目录下找到这个文件: /oracle/ora92/network/admi ...

  3. Linux常用的一些命令

    linux 关闭防火墙命令 servers iptables stop  关闭 servers  iptables status  状态 servers  iptables restart 重启 关闭 ...

  4. java之io之File类的list()方法过滤目录的使用

    java的io的知识中,File类必须掌握.File类是对文件或者文件夹的封装.它本身并不能对所封装的文件进行读写,它封装的只是文件或文件夹的周边知识,比如 大小啦,创建日期啦,路径啦等等. 如果Fi ...

  5. ArrayAdapter适配器的用法,模拟QQ发消息界面。

    import java.util.ArrayList; import android.app.Activity; import android.content.Context; import andr ...

  6. hover用法

    $('.F_box_2').hover(            function(){ $(this).find(".make_reply").css({"color&q ...

  7. C#在线更新程序[下载程序、解压缩程序、控制台程序]

    [1]下载文件 using System;using System.Collections.Generic;using System.Linq;using System.Text;using Syst ...

  8. u-boot 之配置分析 (2)

    Makefile简要分析所有这些目录的编译连接都是由顶层目录的makefile来确定的. 1.在makefile中有: unconfig: @rm -f $(obj)include/config.h ...

  9. TStringList 的Sorted属性

    1 .设置 sorted := true; 2.添加数据 add('3');add('4');add('1'); showmessage(commatext);// 1,3,4 3.再修改Sorted ...

  10. 【个人使用.Net类库】(2)Log日志记录类

    开发接口程序时,要保证程序稳定运行就要时刻监控接口程序发送和接收的数据,这就需要一个日志记录的类将需要的信息记录在日志文件中,便于自己维护接口程序.(Web系统也是如此,只是对应的日志实现比这个要复杂 ...