## 3275: Number

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 874  Solved: 371
[Submit][Status][Discuss]

## Description

1:存在正整数C，使a*a+b*b=c*c
2:gcd(a,b)=1

5
3 4 5 6 7

22

n<=3000。

## Source

[Submit][Status][Discuss]

``` #include <cmath>
#include <cstdio>
#include <cstring>

typedef long long lnt;

const int siz = ;
const int inf = ;

int n;
int a[siz];
int b[siz];

int tot;
int s, t;
int hd[siz];
int to[siz];
int fl[siz];
int nt[siz];

inline void add(int u, int v, int f)
{
nt[tot] = hd[u]; to[tot] = v; fl[tot] = f; hd[u] = tot++;
nt[tot] = hd[v]; to[tot] = u; fl[tot] = ; hd[v] = tot++;
}

int dep[siz];

inline bool bfs(void)
{
static int que[siz];

memset(dep, , sizeof(dep));
head = , tail = ;
que[tail++] = s;
dep[s] = ;

{

for (int i = hd[u]; ~i; i = nt[i])
if (!dep[v = to[i]] && fl[i])
dep[que[tail++] = v] = dep[u] + ;
}

return dep[t];
}

int cur[siz];

int min(int a, int b)
{
return a < b ? a : b;
}

int dfs(int u, int f)
{
if (u == t || !f)
return f;

int used = , flow, v;

for (int i = cur[u]; ~i; i = nt[i])
if (dep[v = to[i]] == dep[u] +  && fl[i])
{
flow = dfs(v, min(f - used, fl[i]));

used += flow;
fl[i] -= flow;
fl[i^] += flow;

if (used == f)
return f;

if (fl[i])
cur[u] = i;
}

if (!used)
dep[u] = ;

return used;
}

inline int maxFlow(void)
{
int maxFlow = , newFlow;

while (bfs())
{
for (int i = s; i <= t; ++i)
cur[i] = hd[i];

while (newFlow = dfs(s, inf))
maxFlow += newFlow;
}

return maxFlow;
}

inline lnt sqr(lnt x)
{
return x * x;
}

int gcd(int x, int y)
{
return y ? gcd(y, x % y) : x;
}

inline bool check(int x, int y)
{
if (gcd(x, y) != )
return false;

lnt t = sqr(x) + sqr(y);
if (sqr(sqrt(t)) != t)
return false;

return true;
}

signed main(void)
{
scanf("%d", &n);

for (int i = ; i <= n; ++i)
scanf("%d", a + i);

for (int i = ; i <= n; ++i)
b[i] = a[i];

s = , t = n + ;

memset(hd, -, sizeof(hd));

for (int i = ; i <= n; ++i)
if (a[i] & )
else

for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j)
if (a[i] & )if (!(a[j] & ))
if (check(a[i], a[j]))

int sum = ;

for (int i = ; i <= n; ++i)
sum += b[i];

printf("%d\n", sum - maxFlow());
}```

@Author: YouSiki

## BZOJ 3275: Number的更多相关文章

1. BZOJ 3275: Number( 最小割 )

S->每个奇数,每个偶数->T各连一条边, 容量为这个数字.然后不能同时选的两个数连容量为+oo的边. 总数-最大流即是答案. 因为满足a2+b2=c2的a,b一定是一奇一偶或者两个偶数, ...

2. bzoj 3275 Number（最小割）

[题意] 给定n个数,要求选出一些数满足 1.存在c,a*a+b*b=c*c 2.gcd(a,b)=1  使得和最大. [思路] 二分图的最大权独立集(可以这么叫么QAQ 先拆点,对于不满足条件的两个 ...

3. bzoj 3275: Number （最小割）

题目的意思是要选一些数,但是这些数如果满足两个条件的话就不能一起被选. type arr=record toward,next,cap:longint; end; const maxn=; maxm= ...

4. BZOJ 3275: Number (二分图最小割)

题意 有nnn个数,其中同时满足下面两个条件的数对不能同时选,求选出一些数让和最大. 若两个数aaa,bbb同时满足以下条件,则aaa,bbb不能同时被选 存在正整数ccc,使a∗a+b∗b=c∗ca ...

5. bzoj 3858: Number Transformation 暴力

3858: Number Transformation Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 82  Solved: 41[Submit][Sta ...

6. bzoj 3275 最小割

给你一堆东西,叫你选一些东西出来,使得价值最大,要求选出的东西集合中的任意a,b满足性质p. 可以考虑: 1.拟阵? 2.二分图? 这道题由于数学硬伤,不知道不存在两条直角边是奇数,斜边是整数的直角三 ...

7. BZOJ 1114 Number theory（莫比乌斯反演+预处理）

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=71738 题意:给你一个整数序列a1, a2, a3, ... , ...

8. 【BZOJ】【3275】Numbers

网络流/最小割 Orz了Jiry_2神犇,蒟蒻网络流建模什么的完全不会啊T_T 按奇偶性来分组实在太巧妙了……然后相关的点之间连边表示只能选其一,来求最小割…… /****************** ...

9. 【BZOJ-3275&amp;3158】Number&amp;千钧一发 最小割

3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 748  Solved: 316[Submit][Status][Discus ...

## 随机推荐

1. Django rest_framework 实用技巧

前言: 最近工作中需要用到Django rest_framework框架做API, 边学边写,记录了一些实际工作中需要用到的功能,不是很全也不系统,以后需要什么功能可以在这查询. 后续还会更新其它的用 ...

2. hdu 1312(DFS)

Red and Black Tme Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

3. 前端不为人知的一面--前端冷知识集锦 前端已经被玩儿坏了！像console.log()可以向控制台输出图片

前端已经被玩儿坏了!像console.log()可以向控制台输出图片等炫酷的玩意已经不是什么新闻了,像用||操作符给变量赋默认值也是人尽皆知的旧闻了,今天看到Quora上一个帖子,瞬间又GET了好多前 ...

4. C++之路进阶——poj2104（K-th Number）

K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 44537   Accepted: 14781 Ca ...

5. 【BZOJ】【2463】【中山市选2009】谁能赢呢？

博弈论 这能算博弈论吗…… orz ZYF so sad……窝智商太低 题解搬运: 当n为偶数时,可以被2*1的骨牌完全覆盖,所以每次都走骨牌的另一端,而另一个人只能走新的骨牌,直到没有为止 当n为奇 ...

6. JS判断，今天所在季度，第几周， 季度的第几周，年度第几周

<html> <head> <title>日期判断 周 月 季 年</title> <script type="text/javascr ...