BZOJ2661: [BeiJing wc2012]连连看
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
Sample Output
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]连连看的更多相关文章
- [BZOJ2661][BeiJing wc2012]连连看 费用流
2661: [BeiJing wc2012]连连看 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1349 Solved: 577[Submit][ ...
- 【费用流】bzoj2661 [BeiJing wc2012]连连看
将每个数拆点,互相连边,然后满足条件的数对之间互相连边,跑最大费用流,答案是流量和费用分别除以2. 一定要i->j.j->i都连上,否则可能会出现一个数在一边被选择了,在另一边的另一个匹配 ...
- 【BZOJ2661】[BeiJing wc2012]连连看 最大费用流
[BZOJ2661][BeiJing wc2012]连连看 Description 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给 ...
- BZOJ 2661: [BeiJing wc2012]连连看 费用流
2661: [BeiJing wc2012]连连看 Description 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给出一个闭 ...
- BZOJ_2661_[BeiJing wc2012]连连看_费用流
BZOJ_2661_[BeiJing wc2012]连连看_费用流 Description 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规 ...
- 【bzoj2661】[BeiJing wc2012]连连看 最大费用最大流
题目描述 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给出一个闭区间[a,b]中的全部整数,如果其中某两个数x,y(设x>y ...
- 2661: [BeiJing wc2012]连连看
Description 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给出一个闭区间[a,b]中的全部整数,如果其中某两个数x,y( ...
- bzoj 2661: [BeiJing wc2012]连连看
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> #inclu ...
- [BeiJing wc2012]连连看(建模,最小费用最大流)
前言 突然发现自己在图论①被dalao吊着打... Solution 看到数据范围1000,感觉可以直接枚举连边,然后新建两个点就好了. 注意要拆点,不然可能会死循环(过来人) 代码实现 #inclu ...
随机推荐
- JS获取日期和时间
//获取日期和时间 function showDate(){ var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFul ...
- Runtime运行时学习(一)
其实Runtime已经开源: 下载objc4-437.1.tar.gz来看看源码: 参考: http://blog.cocoabit.com/2014-10-06-yi-li-jie-objctive ...
- Ladder免费试用版
Ladder这款vpn软件最近在play中国区排名非常高,节节高升,可见大家还真需要这东西,软件做的不错,大家可以在试用版中升级到正式版. 下载地址
- 实例:图形绘制[OpenCV 笔记15]
DrawShapes.cxx # include "DrawShapes_utils.h" #define WINDOW_NAME1 "Painting 1" ...
- 【技术·水】浅谈Dism++清理插件开发
前言 昨天我发布了NCleaner,一款Dism++清理插件(地址:http://bbs.pcbeta.com/viewthread-1692182-1-1.html) 有些人想要我开源NCleane ...
- 【CODECHEF】【phollard rho + miller_rabin】The First Cube
All submissions for this problem are available. Read problems statements in Mandarin Chinese and Rus ...
- 解决Mysql的主从数据库没有同步的两种方法
今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常.show master status; ...
- Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 转
Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 同事遇到一个很囧的问题,java调,netwebservice的时候,调用无参数方法成功,调用有参 ...
- jquery阻止事件的两种实现方式
再阻止事件冒泡的方面,jquery有两种方式: 一种是 return false;另外一种是 e.stopPropagation() html代码 <form id="form1&qu ...
- curl采集 根据关键词 获取雅虎竞价排名
之前写过curl批处理采集数据,这里贴上完整版本,代码很简单,废话不说,上代码,新手欢迎指教!!! 代码只写到 获取到链接了,至于排名 后边数组的键不就是排名喽... <?php /** * B ...