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

代码:

  1. const inf=maxlongint;
  2. type node=record
  3. from,go,next,v,c:longint;
  4. end;
  5. var e:array[..] of node;
  6. pre,head,q,d,c1,c2:array[..] of longint;
  7. v:array[..] of boolean;
  8. i,j,n,s,t,l,r,mincost,tot,x,y,z,a,b,maxflow:longint;
  9. function min(x,y:longint):longint;
  10. begin
  11. if x<y then exit(x) else exit(y);
  12. end;
  13. procedure ins(x,y,z,w:longint);
  14. begin
  15. inc(tot);
  16. with e[tot] do
  17. begin
  18. from:=x;go:=y;v:=z;c:=w;next:=head[x];head[x]:=tot;
  19. end;
  20. end;
  21. procedure insert(x,y,z,w:longint);
  22. begin
  23. ins(x,y,z,w);ins(y,x,,-w);
  24. end;
  25. function spfa:boolean;
  26. var i,x,y:longint;
  27. begin
  28. fillchar(v,sizeof(v),false);
  29. for i:=s to t do d[i]:=inf;
  30. l:=;r:=;q[]:=s;d[s]:=;v[s]:=true;
  31. while l<r do
  32. begin
  33. inc(l);if l= then l:=;
  34. x:=q[l];v[x]:=false;
  35. i:=head[x];
  36. while i<> do
  37. begin
  38. y:=e[i].go;
  39. if (e[i].v<>) and (d[x]+e[i].c<d[y]) then
  40. begin
  41. d[y]:=d[x]+e[i].c;
  42. pre[y]:=i;
  43. if not(v[y]) then
  44. begin
  45. v[y]:=true;
  46. inc(r);if r= then r:=;
  47. q[r]:=y;
  48. end;
  49. end;
  50. i:=e[i].next;
  51. end;
  52. end;
  53. exit(d[t]<>inf);
  54. end;
  55. procedure mcf;
  56. var i,tmp:longint;
  57. begin
  58. mincost:=;maxflow:=;
  59. while spfa do
  60. begin
  61. tmp:=inf;
  62. i:=pre[t];
  63. while i<> do
  64. begin
  65. tmp:=min(tmp,e[i].v);
  66. i:=pre[e[i].from];
  67. end;
  68. inc(mincost,tmp*d[t]);
  69. inc(maxflow,tmp);
  70. i:=pre[t];
  71. while i<> do
  72. begin
  73. dec(e[i].v,tmp);
  74. inc(e[i xor ].v,tmp);
  75. i:=pre[e[i].from];
  76. end;
  77. end;
  78. end;
  79. function gcd(x,y:longint):longint;
  80. begin
  81. if y= then exit(x) else exit(gcd(y,x mod y));
  82. end;
  83.  
  84. procedure init;
  85. begin
  86. tot:=;
  87. readln(a,b);
  88. s:=;t:=;
  89. for i:=a to b do insert(s,i,,);
  90. for i:=a to b do insert(i+b,t,,);
  91. for i:=a to b do
  92. for j:=a to b do
  93. if (trunc(sqrt(abs(i*i-j*j)))=sqrt(abs(i*i-j*j))) and (i<>j) then
  94. if gcd(trunc(sqrt(abs(i*i-j*j))),min(i,j))= then
  95. insert(i,b+j,,-i-j);
  96. end;
  97. procedure main;
  98. begin
  99. mincost:=;
  100. mcf;
  101. writeln(maxflow>>,' ',-mincost>>);
  102. end;
  103. begin
  104. assign(input,'input.txt');assign(output,'output.txt');
  105. reset(input);rewrite(output);
  106. init;
  107. main;
  108. close(input);close(output);
  109. end.

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

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

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

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

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

  3. 【BZOJ2661】[BeiJing wc2012]连连看 最大费用流

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

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

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

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

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

  6. 【bzoj2661】[BeiJing wc2012]连连看 最大费用最大流

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

  7. 2661: [BeiJing wc2012]连连看

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

  8. bzoj 2661: [BeiJing wc2012]连连看

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

  9. [BeiJing wc2012]连连看(建模,最小费用最大流)

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

随机推荐

  1. JS获取日期和时间

    //获取日期和时间 function showDate(){ var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFul ...

  2. Runtime运行时学习(一)

    其实Runtime已经开源: 下载objc4-437.1.tar.gz来看看源码: 参考: http://blog.cocoabit.com/2014-10-06-yi-li-jie-objctive ...

  3. Ladder免费试用版

    Ladder这款vpn软件最近在play中国区排名非常高,节节高升,可见大家还真需要这东西,软件做的不错,大家可以在试用版中升级到正式版.   下载地址

  4. 实例:图形绘制[OpenCV 笔记15]

    DrawShapes.cxx # include "DrawShapes_utils.h" #define WINDOW_NAME1 "Painting 1" ...

  5. 【技术·水】浅谈Dism++清理插件开发

    前言 昨天我发布了NCleaner,一款Dism++清理插件(地址:http://bbs.pcbeta.com/viewthread-1692182-1-1.html) 有些人想要我开源NCleane ...

  6. 【CODECHEF】【phollard rho + miller_rabin】The First Cube

    All submissions for this problem are available. Read problems statements in Mandarin Chinese and Rus ...

  7. 解决Mysql的主从数据库没有同步的两种方法

    今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist;   查看下进程是否Sleep太多.发现很正常.show master status; ...

  8. Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 转

    Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法   同事遇到一个很囧的问题,java调,netwebservice的时候,调用无参数方法成功,调用有参 ...

  9. jquery阻止事件的两种实现方式

    再阻止事件冒泡的方面,jquery有两种方式: 一种是 return false;另外一种是 e.stopPropagation() html代码 <form id="form1&qu ...

  10. curl采集 根据关键词 获取雅虎竞价排名

    之前写过curl批处理采集数据,这里贴上完整版本,代码很简单,废话不说,上代码,新手欢迎指教!!! 代码只写到 获取到链接了,至于排名 后边数组的键不就是排名喽... <?php /** * B ...