博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 3275: Number
阅读量:4962 次
发布时间:2019-06-12

本文共 1138 字,大约阅读时间需要 3 分钟。

3275: Number

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1259  Solved: 534
[][][]

Description

有N个正整数,需要从中选出一些数,使这些数的和最大。

若两个数a,b同时满足以下条件,则a,b不能同时被选
1:存在正整数C,使a*a+b*b=c*c
2:gcd(a,b)=1

Input

第一行一个正整数n,表示数的个数。n<=3000
第二行n个正整数a1,a2,...an

Output

最大的和

Sample Input

5
3 4 5 6 7

Sample Output

22
 
总感觉以前做过2333
    因为奇数和奇数的平方和不可能是完全平方数(考虑用(2*n+1)表示奇数,展开之后发现平方和是个偶数却%4余2,所以肯定不是完全平方数),而偶数和偶数的
gcd至少是2。
    所以可以发现不满足条件的一定是一奇一偶,然后这题就是个二分图最大独立集了233
 
#include
#define ll long long#define maxn 3005#define pb push_backusing namespace std;const int inf=1<<30;vector
g[maxn];struct lines{ int to,flow,cap;}l[maxn*1000];int S,T,t=-1,d[maxn],cur[maxn];bool v[maxn]; inline void add(int from,int to,int cap){ l[++t]=(lines){to,0,cap},g[from].pb(t); l[++t]=(lines){from,0,0},g[to].pb(t);} inline bool BFS(){ memset(v,0,sizeof(v)); queue
q; q.push(S),v[S]=1,d[S]=0; int x; lines e; while(!q.empty()){ x=q.front(),q.pop(); for(int i=g[x].size()-1;i>=0;i--){ e=l[g[x][i]]; if(e.flow

  

转载于:https://www.cnblogs.com/JYYHH/p/8562726.html

你可能感兴趣的文章
python第六篇文件处理类型
查看>>
kettle 数据库连接失败
查看>>
ListView失去焦点选中行不能高亮显示的问题解决
查看>>
# jsp及servlet学习笔记
查看>>
Kconfig详解
查看>>
(四)hadoop系列之__hadoop搭建(单机配置)
查看>>
nodejs爬虫数据存入mysql
查看>>
sphinx2.8.8的配置文件
查看>>
Visual Studio 2019 正式版 更新内容
查看>>
4、下行短信发送WebService、下行短信发送服务 -功能详细设计 --短信平台
查看>>
Failure to find com.oracle:ojdbc6:jar
查看>>
文本去重-----awk或者uniq
查看>>
Android学习笔记三:Intent实现页面跳转
查看>>
Django下JWT的使用
查看>>
React Native 的组件之底部导航栏 TabBarIOS(一)
查看>>
聊聊、SpringBoot 上传文件大小
查看>>
WF 学习笔记 (1) - 浅谈 WF 和 MVC 架构
查看>>
Monkey脚本API简介
查看>>
Linux学习笔记 之 Linux软件的安装与卸载
查看>>
在ASP.NET中,IE与Firefox下载文件带汉字名时乱码的解决方法
查看>>