当前位置: 首页 > news >正文

深圳网站建设知名 乐云践新/公众号推广方法

深圳网站建设知名 乐云践新,公众号推广方法,上海网站推广维新,自己做网站如何赚钱(1) 对每个位置建一个点F1,S向这个点连art[i][j]的边,这个点向T连science[i][j]的边。 (2) 对每个位置再建一个点F2,S向这个点连same_art[i][j]的边,这个点向F1的相邻的五个点连inf的边。 (3) 对每个位置再建一个点F3,…

(1) 对每个位置建一个点F1,S向这个点连art[i][j]的边,这个点向T连science[i][j]的边。

(2) 对每个位置再建一个点F2,S向这个点连same_art[i][j]的边,这个点向F1的相邻的五个点连inf的边。

(3) 对每个位置再建一个点F3,这个点向T连same_science[i][j]的边,F1的相邻的五个点向这个点连inf的边。

先让ans等于所有art,science,same_art,same_science的和,减去最大流就是答案。

可以这么理解:

首先ans是将所有收益全部占全的答案,现在要减去的是冲突的收益。冲突分三种,一个点不能既选art又选science,只有相邻五个全部选同一科才会触发same收益,同一个点的两个same收益不可能同时触发。我们的建图只需要满足这三种情况都不出现即可。

第一种冲突显然由(1)直接解决了。

第二种冲突由(2)和(3)解决,可以发现,inf边肯定不会被割掉,也就是说“same[i][j]”和“i,j的五个相邻点存在选另一科”这两个只能选一个。

第三种冲突也很显然,一个点不可能art[i][j]和science[i][j]都不被割掉。

 1 #include<cstdio>
 2 #include<algorithm>
 3 #define rep(i,l,r) for (int i=(l); i<=(r); i++)
 4 #define For(i,x) for (int i=h[x],k; i; i=nxt[i])
 5 using namespace std;
 6 
 7 const int N=30010,M=400010,K=110,inf=1000000000;
 8 int n,m,ans,x,S,T,tot,cnt=1,F1[K][K],F2[K][K],F3[K][K];
 9 int to[M],f[M],nxt[M],h[N],dis[N],q[M];
10 
11 void add(int u,int v,int w){
12     to[++cnt]=v; f[cnt]=w; nxt[cnt]=h[u]; h[u]=cnt;
13     to[++cnt]=u; f[cnt]=0; nxt[cnt]=h[v]; h[v]=cnt;
14 }
15 
16 bool bfs(){
17     rep(i,0,T) dis[i]=0; q[1]=S; dis[S]=1;
18     for (int st=0,ed=1; st<ed; ){
19         int x=q[++st];
20         For(i,x) if (f[i] && !dis[k=to[i]]) dis[k]=dis[x]+1,q[++ed]=k;
21     }
22     return dis[T];
23 }
24 
25 int dfs(int x,int lim){
26     if (x==T) return lim;
27     int c=0;
28     For(i,x) if (f[i] && dis[k=to[i]]==dis[x]+1){
29         int t=dfs(k,min(lim-c,f[i]));
30         c+=t; f[i]-=t; f[i^1]+=t;
31         if (c==lim) return c;
32     }
33     if (!c) dis[x]=-1;
34     return c;
35 }
36 
37 int main(){
38     freopen("bzoj3894.in","r",stdin);
39     freopen("bzoj3894.out","w",stdout);
40     scanf("%d%d",&n,&m); S=3*n*m+1; T=3*n*m+2;
41     rep(i,1,n) rep(j,1,m) scanf("%d",&x),ans+=x,add(S,F1[i][j]=++tot,x);
42     rep(i,1,n) rep(j,1,m) scanf("%d",&x),ans+=x,add(F1[i][j],T,x);
43     rep(i,1,n) rep(j,1,m){
44         scanf("%d",&x); ans+=x;
45         add(S,F2[i][j]=++tot,x); add(F2[i][j],F1[i][j],inf);
46         if (i>1) add(F2[i][j],F1[i-1][j],inf);
47         if (i<n) add(F2[i][j],F1[i+1][j],inf);
48         if (j>1) add(F2[i][j],F1[i][j-1],inf);
49         if (j<m) add(F2[i][j],F1[i][j+1],inf);
50     }
51     rep(i,1,n) rep(j,1,m){
52         scanf("%d",&x); ans+=x;
53         add(F3[i][j]=++tot,T,x); add(F1[i][j],F3[i][j],inf);
54         if (i>1) add(F1[i-1][j],F3[i][j],inf);
55         if (i<n) add(F1[i+1][j],F3[i][j],inf);
56         if (j>1) add(F1[i][j-1],F3[i][j],inf);
57         if (j<m) add(F1[i][j+1],F3[i][j],inf);
58     }
59     while (bfs()) ans-=dfs(S,inf);
60     printf("%d\n",ans);
61     return 0;
62 }

 

转载于:https://www.cnblogs.com/HocRiser/p/9295952.html

http://www.lbrq.cn/news/763795.html

相关文章:

  • 唯品会官网一家做特卖的网站/seo5
  • 武汉北京网站建设公司/百度热议
  • 做自适应网站设计/河北网站seo地址
  • 宝塔做网站443链接/网站怎么做
  • 直销公司排名表/seo实战培训机构
  • 搭建网页的基础语言/阳山网站seo
  • 如何做电子书网站/桔子seo工具
  • 如何用iis做网站/seo高端培训
  • 成都品牌建设网站公司/百度搜索引擎
  • 备案 增加网站/长尾词挖掘免费工具
  • 一建报名时间2023/搜索引擎技术优化
  • 北京网站建设亿玛酷适合5/百度网页
  • 建网站那种服务器好/上海互联网公司排名
  • python可以做复杂网站/网站工具查询
  • 网站如何做提交的报名表/培训心得体会1000字通用
  • 设计师图片素材网站/关联词有哪些小学
  • 网站建设骗子/软文营销的本质
  • wordpress 首页可变区域/自己的网站怎么样推广优化
  • 桂林象鼻山属于哪个区/seo关键词优化排名软件
  • 网站开发论文答辩问题/长沙seo技术培训
  • wordpress 帝国cms/刷关键词优化排名
  • 黑龙江做网站公司/秦皇岛seo排名
  • 重庆渝兴建设有限公司网站/广告联盟app下载赚钱
  • 视觉做的比较好的国外网站/今日足球比赛分析推荐
  • 网站建设成本价/搜索引擎seo关键词优化
  • 注册公司流程和费用一共多少钱/沧州seo推广
  • 微网站开发需要多少钱/长春seo培训
  • 中信建设有限责任公司官网英文/南城网站优化公司
  • 网站开发记科目/怎么快速优化关键词排名
  • 邯郸做网站找谁/网络营销的具体形式种类
  • Video-R1论文解读
  • Oracle commit之后做了什么
  • 技术速递|使用 AI Toolkit 构建基于 gpt-oss-20b 的应用程序
  • 汽车免拆诊断案例 | 2017 款丰田皇冠车行驶中加速时车身偶尔抖动
  • 晓知识: 如何理解反射
  • 机械臂的智能升维:当传统机械臂遇见Deepoc具身智能大模型从自动化工具到具身智能体的范式革命