BZOJ2661: [BeiJing wc2012]连连看

时间:2022-10-02 20:48:16

2661: [BeiJing wc2012]连连看

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 483  Solved: 200
[Submit][Status]

Description

凡是考智商的题里面总会有这么一种消除游戏。不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏。我们的规则是,给出一个闭区间[a,b]中的全部整数,如果其中某两个数x,y(设x>y)的平方差x2-y2是一个完全平方数z2,并且y与z互质,那么就可以将x和y连起来并且将它们一起消除,同时得到x+y点分数。那么过关的要求就是,消除的数对尽可能多的前提下,得到足够的分数。快动手动笔算一算吧。

Input

只有一行,两个整数,分别表示a,b。

Output

两个数,可以消去的对数,及在此基础上能得到的最大分数。

Sample Input

1 15

Sample Output

2 34

HINT

对于30%的数据,1<=a,b<=100

对于100%的数据,1<=a,b<=1000

Source

题解:

好吧,最大费用最大流还是老老实实把费用取负吧。。。

各种不理解?怎么会是二分图呢?怎么这样简单粗暴就可以了?233

代码:

 const inf=maxlongint;
type node=record
from,go,next,v,c:longint;
end;
var e:array[..] of node;
pre,head,q,d,c1,c2:array[..] of longint;
v:array[..] of boolean;
i,j,n,s,t,l,r,mincost,tot,x,y,z,a,b,maxflow:longint;
function min(x,y:longint):longint;
begin
if x<y then exit(x) else exit(y);
end;
procedure ins(x,y,z,w:longint);
begin
inc(tot);
with e[tot] do
begin
from:=x;go:=y;v:=z;c:=w;next:=head[x];head[x]:=tot;
end;
end;
procedure insert(x,y,z,w:longint);
begin
ins(x,y,z,w);ins(y,x,,-w);
end;
function spfa:boolean;
var i,x,y:longint;
begin
fillchar(v,sizeof(v),false);
for i:=s to t do d[i]:=inf;
l:=;r:=;q[]:=s;d[s]:=;v[s]:=true;
while l<r do
begin
inc(l);if l= then l:=;
x:=q[l];v[x]:=false;
i:=head[x];
while i<> do
begin
y:=e[i].go;
if (e[i].v<>) and (d[x]+e[i].c<d[y]) then
begin
d[y]:=d[x]+e[i].c;
pre[y]:=i;
if not(v[y]) then
begin
v[y]:=true;
inc(r);if r= then r:=;
q[r]:=y;
end;
end;
i:=e[i].next;
end;
end;
exit(d[t]<>inf);
end;
procedure mcf;
var i,tmp:longint;
begin
mincost:=;maxflow:=;
while spfa do
begin
tmp:=inf;
i:=pre[t];
while i<> do
begin
tmp:=min(tmp,e[i].v);
i:=pre[e[i].from];
end;
inc(mincost,tmp*d[t]);
inc(maxflow,tmp);
i:=pre[t];
while i<> do
begin
dec(e[i].v,tmp);
inc(e[i xor ].v,tmp);
i:=pre[e[i].from];
end;
end;
end;
function gcd(x,y:longint):longint;
begin
if y= then exit(x) else exit(gcd(y,x mod y));
end; procedure init;
begin
tot:=;
readln(a,b);
s:=;t:=;
for i:=a to b do insert(s,i,,);
for i:=a to b do insert(i+b,t,,);
for i:=a to b do
for j:=a to b do
if (trunc(sqrt(abs(i*i-j*j)))=sqrt(abs(i*i-j*j))) and (i<>j) then
if gcd(trunc(sqrt(abs(i*i-j*j))),min(i,j))= then
insert(i,b+j,,-i-j);
end;
procedure main;
begin
mincost:=;
mcf;
writeln(maxflow>>,' ',-mincost>>);
end;
begin
assign(input,'input.txt');assign(output,'output.txt');
reset(input);rewrite(output);
init;
main;
close(input);close(output);
end.

BZOJ2661: [BeiJing wc2012]连连看的更多相关文章

  1. &lbrack;BZOJ2661&rsqb;&lbrack;BeiJing wc2012&rsqb;连连看 费用流

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

  2. 【费用流】bzoj2661 &lbrack;BeiJing wc2012&rsqb;连连看

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

  3. 【BZOJ2661】&lbrack;BeiJing wc2012&rsqb;连连看 最大费用流

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

  4. BZOJ 2661&colon; &lbrack;BeiJing wc2012&rsqb;连连看 费用流

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

  5. BZOJ&lowbar;2661&lowbar;&lbrack;BeiJing wc2012&rsqb;连连看&lowbar;费用流

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

  6. 【bzoj2661】&lbrack;BeiJing wc2012&rsqb;连连看 最大费用最大流

    题目描述 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给出一个闭区间[a,b]中的全部整数,如果其中某两个数x,y(设x>y ...

  7. 2661&colon; &lbrack;BeiJing wc2012&rsqb;连连看

    Description 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给出一个闭区间[a,b]中的全部整数,如果其中某两个数x,y( ...

  8. bzoj 2661&colon; &lbrack;BeiJing wc2012&rsqb;连连看

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

  9. &lbrack;BeiJing wc2012&rsqb;连连看(建模,最小费用最大流)

    前言 突然发现自己在图论①被dalao吊着打... Solution 看到数据范围1000,感觉可以直接枚举连边,然后新建两个点就好了. 注意要拆点,不然可能会死循环(过来人) 代码实现 #inclu ...

随机推荐

  1. PostgreSQL的权限查询

    查看哪些用户对表sns_log_member_b_aciton有哪些权限: sns_log=> \z sns_log_member_b_aciton Access privileges Sche ...

  2. 批处理命令——choice

    [1]choice命令简介 使用此命令可以提示用户输入一个选择项,根据用户输入的选择项再决定执行具体的过程. 使用时应该加/c:参数,c: 后应写提示可输入的字符或数字,之间无空格.冒号是可选项. 使 ...

  3. linux内核分析 课程总结

    Linux内核分析 链接汇总 Linux内核分析第一周学习总结--计算机是如何工作的 Linux内核分析第二周学习总结--操作系统是如何工作的 Linux内核分析第三周学习总结--构造一个简单的Lin ...

  4. git 版本控制系统初学

    Git -The stupid content tracker, 傻瓜内容跟踪器,是一个由Linux内核开发者Linus为了更好地管理Linux内核开发而创立的分布式版本控制软件. 1.建立本地git ...

  5. 理解javascript之 对象

    大纲: 1.介绍attribute property的异同,翻译自http://javascript.info/tutorial/attributes-and-custom-properties#pr ...

  6. js 对日期加减

    function getDate(days) { var now = new Date(), newDate = new Date(now.getTime() - 86400000 * days), ...

  7. Android 显示YUV编码格式

    ByteArrayOutputStream out = new ByteArrayOutputStream(); String path = "res/drawable/sample.yuv ...

  8. ant&lowbar;0105

    在projectA中执行projectB的构件文件.projectA的构件文件内容如下 <?xml version="1.0"?> <!-- 在projectA中 ...

  9. APP上传APP Store遇到的各种问题

    内容含敏感话题或对苹果不友好的信息(如苹果婊) 使用了友盟的统计SDK,获取了IDFA但是上传填写无广告 采用友盟IDFA的sdk,并用友盟的默认淘宝页面广告,被告知和产品内容不符(最近) App在i ...

  10. 牛客小白月赛13 小A的回文串(Manacher)

    链接:https://ac.nowcoder.com/acm/contest/549/B来源:牛客网 题目描述 小A非常喜欢回文串,当然我们都知道回文串这种情况是非常特殊的.所以小A只想知道给定的一个 ...