不难想到,先枚举建图然后跑最大费用最大流

也不难想到一种将每个数拆成两个点i1,i2,所有满足条件的数之间

把所有满足条件之间的数x,y连边x1--->y2,y1--->x2,流量为1,费用为(x+y)

相当于流量费用都变成了原来的2倍

最后再除一下即可

  1. const inf=;
  2. type node=record
  3.        point,flow,cost,next:longint;
  4.      end;
  5.  
  6. var edge:array[..] of node;
  7.     v:array[..] of boolean;
  8.     q:array[..] of longint;
  9.     pre,d,cur,p:array[..] of longint;
  10.     k,ans,len,a,b,i,j,t:longint;
  11.  
  12. function min(a,b:longint):longint;
  13.   begin
  14.     if a>b then exit(b) else exit(a);
  15.   end;
  16.  
  17. procedure add(x,y,f,c:longint);
  18.   begin
  19.     inc(len);
  20.     edge[len].flow:=f;
  21.     edge[len].point:=y;
  22.     edge[len].cost:=c;
  23.     edge[len].next:=p[x];
  24.     p[x]:=len;
  25.   end;
  26.  
  27. function gcd(x,y:longint):longint;
  28.   begin
  29.     if y= then exit(x)
  30.     else exit(gcd(y,x mod y));
  31.   end;
  32.  
  33. function spfa:boolean;
  34.   var i,j,x,y,f,r:longint;
  35.   begin
  36.     for i:= to t do
  37.       d[i]:=-inf;
  38.     fillchar(v,sizeof(v),false);
  39.     d[]:=;
  40.     f:=;
  41.     r:=;
  42.     q[]:=;
  43.     while f<=r do
  44.     begin
  45.       x:=q[f];
  46.       v[x]:=false;
  47.       i:=p[x];
  48.       while i<>- do
  49.       begin
  50.         y:=edge[i].point;
  51.         if edge[i].flow> then
  52.           if d[y]<d[x]+edge[i].cost then
  53.           begin
  54.             d[y]:=d[x]+edge[i].cost;
  55.             pre[y]:=x;
  56.             cur[y]:=i;
  57.             if not v[y] then
  58.             begin
  59.               v[y]:=true;
  60.               inc(r);
  61.               q[r]:=y;
  62.             end;
  63.           end;
  64.         i:=edge[i].next;
  65.       end;
  66.       inc(f);
  67.     end;
  68.     if d[t]=-inf then exit(false) else exit(true);
  69.   end;
  70.  
  71. function maxcost:longint;
  72.   var i,j:longint;
  73.   begin
  74.     maxcost:=;
  75.     while spfa do
  76.     begin
  77.       i:=t;
  78.       while i<> do
  79.       begin
  80.         j:=cur[i];
  81.         dec(edge[j].flow);
  82.         inc(edge[j xor ].flow);
  83.         i:=pre[i];
  84.       end;
  85.       ans:=ans+;
  86.       inc(maxcost,d[t]);
  87.     end;
  88.   end;
  89.  
  90. begin
  91.   len:=-;
  92.   fillchar(p,sizeof(p),);
  93.   readln(a,b);
  94.   t:=b*+;
  95.   for i:=a to b do
  96.   begin
  97.     for j:=a to i- do
  98.     begin
  99.       k:=sqr(i)-sqr(j);
  100.       if (sqrt(k)=trunc(sqrt(k))) and (gcd(trunc(sqrt(k)),j)=) then
  101.       begin
  102.         add(i,j+b,,i+j);
  103.         add(j+b,i,,-i-j);
  104.         add(j,i+b,,i+j);
  105.         add(i+b,j,,-i-j);
  106.       end;
  107.     end;
  108.     add(,i,,);
  109.     add(i,,,);
  110.     add(i+b,t,,);
  111.     add(t,i+b,,);
  112.   end;
  113.   k:=maxcost;
  114.   writeln(ans div ,' ',k div );
  115. end.

bzoj2661的更多相关文章

  1. BZOJ2661 连连看 (费用流)

    把所有点拆成两个,将符合条件的两个点x,y连上边,流量为1,费用为-(x+y). 做一遍最小费用最大流,最后ans div 2即可. Program bzoj2661; ; ..] of longin ...

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

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

  3. BZOJ2661: [BeiJing wc2012]连连看

    2661: [BeiJing wc2012]连连看 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 483  Solved: 200[Submit][S ...

  4. [BJOI2012]连连看 BZOJ2661 费用流

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

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

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

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

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

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

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

  8. [转载]hzwer的bzoj题单

    counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...

  9. BZOJ刷题列表【转载于hzwer】

    沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...

随机推荐

  1. OpenJudge/Poj 1005 I Think I Need a Houseboat

    1.链接地址: http://bailian.openjudge.cn/practice/1005/ http://poj.org/problem?id=1005 2.题目: I Think I Ne ...

  2. OpenJudge / Poj 1003 Hangover

    链接地址: Poj:http://poj.org/problem?id=1003 OpenJudge:http://bailian.openjudge.cn/practice/1003 题目: Han ...

  3. 图片裁切插件jCrop的使用心得(一)

    之前,项目经理为了提升用户体验让我在之前图片上传功能的基础上实现图片的裁切功能,作为一个前端小白来说听了这个需求心里一紧,毕竟没有做过,于是跟项目经理商量要先做下调研.在一上午的调研中发现了jCrop ...

  4. HTML5的简介

    前言:作为IOS开发工程师,终会接触到网页前端开发,甚至可能会有 用HTML5开发IOS的app客户端的需求.比如现在上架的app就有比如理财类型的app有的就用HTML开发的,从理财类型的app需求 ...

  5. lispbox 安装运行.sh的时候出现 lispbox.sh: 2: lispbox.sh: Bad substitution

    安装lispbox时使用tar命令将压缩文件解压之后cd进入之后在运行.sh文件时出现了如下情况. $ sh lispbox.sh lispbox.: lispbox.sh: Bad substitu ...

  6. css text-overflow溢出文本显示省略号

    <div style="width: 100px; overflow: hidden; text-overflow:ellipsis"> <nobr>当对象 ...

  7. [数据库连接字符串] Access 连接字符串

    [数据库连接字符串] Access 连接字符串 //ODBC 标准安全策略 Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb ...

  8. 转:testlink 环境搭建(傻瓜版)

    testlink 环境搭建(傻瓜版) 2011-11-24 22:23 by 虫师, 12322 阅读, 4 评论, 收藏, 编辑 今天抽了点时间把testlink 环境搭建了一下,一直觉得这东西不怎 ...

  9. Codeforces Round #334 (Div. 1) C. Lieges of Legendre

    Lieges of Legendre 题意:有n堆牛,每堆有ai头牛.两个人玩一个游戏,游戏规则为: <1>从任意一个非空的堆中移走一头牛: <2>将偶数堆2*x变成k堆,每堆 ...

  10. 大话string

    最近看完大话string之后深有感悟,虽然写c#不知不觉的已经写了四年了,但是很多原理也一直不太明白,最近看完这个才算略微明白了一些. string类型有2个重要的特性,一致性和驻留性. 一致性就是说 ...