博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ】【3158】千钧一发
阅读量:5069 次
发布时间:2019-06-12

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

网络流/最小割


  这题跟限制条件是一样的= =所以可以用相同的方法去做……只要把边的容量从a[i]改成b[i]就行了~

(果然不加当前弧优化要略快一点)

1 /**************************************************************  2     Problem: 3158  3     User: Tunix  4     Language: C++  5     Result: Accepted  6     Time:196 ms  7     Memory:13028 kb  8 ****************************************************************/  9   10 //BZOJ 3158 11 #include
12 #include
13 #include
14 #include
15 #include
16 #include
17 #include
18 #define rep(i,n) for(int i=0;i
=n;--i) 21 #define pb push_back 22 using namespace std; 23 inline int getint(){ 24 int v=0,sign=1; char ch=getchar(); 25 while(ch<'0'||ch>'9'){ if (ch=='-') sign=-1; ch=getchar();} 26 while(ch>='0'&&ch<='9'){ v=v*10+ch-'0'; ch=getchar();} 27 return v*sign; 28 } 29 const int N=1100,M=1000000,INF=~0u>>2; 30 typedef long long LL; 31 /******************tamplate*********************/ 32 int n,m,tot,ans,a[N],b[N]; 33 struct edge{ int to,v;}; 34 int gcd(int a,int b){ return b ? gcd(b,a%b) : a;} 35 bool judge(LL a,LL b){ 36 LL s=a*a+b*b; 37 LL q=sqrt(s); 38 if (q*q!=s) return 0; 39 if (gcd(a,b)!=1) return 0; 40 return 1; 41 } 42 struct Net{ 43 edge E[M]; 44 int head[N],next[M],cnt; 45 void ins(int x,int y,int v){ 46 E[++cnt]=(edge){y,v}; 47 next[cnt]=head[x]; head[x]=cnt; 48 } 49 void add(int x,int y,int v){ 50 ins(x,y,v); ins(y,x,0); 51 } 52 int s,t,d[N],Q[N]; 53 void init(){ 54 n=getint(); cnt=1; 55 tot=ans=0; 56 s=0; t=n+1; 57 F(i,1,n) a[i]=getint(); 58 F(i,1,n){ 59 b[i]=getint();tot+=b[i]; 60 if (a[i]&1) add(s,i,b[i]); 61 else add(i,t,b[i]); 62 } 63 F(i,1,n) if (a[i]&1) 64 F(j,1,n) if((a[j]&1)==0) 65 if (judge(a[i],a[j])) add(i,j,INF); 66 } 67 bool mklevel(){ 68 memset(d,-1,sizeof d); 69 d[s]=0; 70 int l=0,r=-1; 71 Q[++r]=s; 72 while(l<=r){ 73 int x=Q[l++]; 74 for(int i=head[x];i;i=next[i]) 75 if (d[E[i].to]==-1 && E[i].v){ 76 d[E[i].to]=d[x]+1; 77 Q[++r]=E[i].to; 78 } 79 } 80 return d[t]!=-1; 81 } 82 int dfs(int x,int a){ 83 if (x==t) return a; 84 int flow=0; 85 for(int i=head[x];i && flow
View Code

 

3158: 千钧一发

Time Limit: 10 Sec  Memory Limit: 512 MB
Submit: 590  Solved: 225
[ ][ ][ ]

Description

 

Input

第一行一个正整数N。

第二行共包括N个正整数,第 个正整数表示Ai。

第三行共包括N个正整数,第 个正整数表示Bi。

Output

共一行,包括一个正整数,表示在合法的选择条件下,可以获得的能量值总和的最大值。

Sample Input

4
3 4 5 12
9 8 30 9

Sample Output

39

HINT

1<=N<=1000,1<=Ai,Bi<=10^6

Source

[ ][ ][ ]

转载于:https://www.cnblogs.com/Tunix/p/4339925.html

你可能感兴趣的文章
ORA-12541:TNS:no listener 客户端tnsnames.ora配置,以及服务端listener.ora配置
查看>>
C#多线程操作界面控件的解决方案(转)
查看>>
JS获得本月的第一天和最后一天
查看>>
如何使java中double类型不以科学计数法表示
查看>>
AES加密解密
查看>>
IIS与web.config配置优化
查看>>
Luogu3733 HAOI2017 八纵八横 线段树分治、线性基
查看>>
CI简单易用
查看>>
执行力的不够的系统解决方案
查看>>
ReactNative--复合组件
查看>>
iOS -- js与原生交互
查看>>
jsp当做第二个servlet request的生命周期 请求 响应 不管中间经历多少个servlet 只要最后一个serlvt执行后 则生命周期结束 request的域消失...
查看>>
mysql-常用基础命令
查看>>
spring中各jar功能及jar包之间的依赖关系
查看>>
WPF学习(9)样式和行为
查看>>
poj-1503-java大数相加
查看>>
(转载)JavaWeb学习总结(五十一)——邮件的发送与接收原理
查看>>
RHEL使用系统镜像文件配置本地yum源
查看>>
(转载)windows下安装配置Xampp
查看>>
iOS_UITableView上拉加载,下拉刷新
查看>>