博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018.08.28 九份的咖啡店(费用流)
阅读量:5302 次
发布时间:2019-06-14

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

描述

深绘里在九份开了一家咖啡店。当然如何调配咖啡成了她每天的头等大事。 我们假设她有 n 种原料,第 i 种原料编号为 i,而调配一杯咖啡则需要选择这里面的若干种来兑在一起。

不过有些原料不能同时调兑在同一杯里。如果两个编号为 i, j 的原料,当且仅当 i 和 j 互质时,它们才能被兑在同一杯里。
现在深绘里想知道,如果她用这 n 种原料来调兑一杯咖啡,那么这杯咖啡所使用的原料编号之和最大能为多少呢? …

输入

一行,一个正整数 n

输出

一行一个正整数,即最大的编号之和

样例输入

10

样例输出

30

提示

【数据范围和约定】

对于 20% 的数据, 1 ≤ n ≤ 30

对于 50% 的数据, 1 ≤ n ≤ 200
对于 80% 的数据, 1 ≤ n ≤ 800 对于 100% 的数据, 1 ≤ n ≤ 200000

标签

湖南2013省选模拟


spfa写错了也很感动。。。

有一个神仙结论:原料最多由两种质因数组成,且一个小于sqrt(n),一个大于sqrt(n)(本蒟蒻并不会证明)。
知道这个结论之后就可以跑最大费用流了。
代码:

#include
#define N 1000005#define inf 1000000000#define ll long longusing namespace std;int n,pot[N],first[N],d[N],cnt=-1,prime[N],vis[N],in[N],pred[N],tot=0,ans,res;struct edge{
int c,w,v,next;}e[N<<1];inline void add_edge(int u,int v,int c,int w){e[++cnt].v=v,e[cnt].w=w,e[cnt].c=c,e[cnt].next=first[u],first[u]=cnt;}inline void add(int u,int v,int c,int w){add_edge(u,v,c,w),add_edge(v,u,0,-w);}inline void init(){ for(int i=2;i<=n;++i){ if(!vis[i])prime[++tot]=i; for(int j=1;j<=tot;++j){ if(prime[j]*i>n)break; vis[prime[j]*i]=1; if(i%prime[j]==0)break; } }}inline void calc(int s,int t){ int pos=t; while(pos!=s){ e[pred[pos]].c-=1; e[pred[pos]^1].c+=1; pos=e[pred[pos]^1].v; }}inline bool spfa(int s,int t){ queue
q; memset(d,128,sizeof(d)); ll tmp=d[0]; for(int i=1;i<=t;++i)in[i]=0; in[s]=1,q.push(s),d[s]=0; while(!q.empty()){ int x=q.front(); q.pop(); for(int i=first[x];~i;i=e[i].next){ int v=e[i].v; if(d[v]
n)break; } return tmp;}int main(){ memset(first,-1,sizeof(first)); scanf("%d",&n),init(); int pos=0; ll sum=0; for(int i=1;i<=tot;++i){ sum+=(ll)solve(prime[i],1); if(1ll*prime[i]*(1ll*prime[i])>n)add(1,i+1,1,0); else add(i+1,tot+10,1,0),pos=i; } for(int i=pos+1;i<=tot;++i) for(int j=1;j<=pos;++j){ int tmp=solve(prime[j],prime[i]),ttmp=solve(prime[j],1); if(tmp>n)continue; add(i+1,j+1,1,tmp-ttmp-solve(prime[i],1)); } while(spfa(1,tot+10)); cout<<1ll*(res+sum+1); return 0;}

转载于:https://www.cnblogs.com/ldxcaicai/p/9738341.html

你可能感兴趣的文章
创新课程管理系统数据库设计心得
查看>>
Hallo wolrd!
查看>>
16下学期进度条2
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
Chapter 3 Phenomenon——12
查看>>
C语言中求最大最小值的库函数
查看>>
和小哥哥一起刷洛谷(1)
查看>>
jquery对id中含有特殊字符的转义处理
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>
SqlBulkCopy大批量导入数据
查看>>
pandas 修改指定列中所有内容
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Java抽象类和接口的比较
查看>>
开发进度一
查看>>