时间: 1000ms / 空间: 131072KiB / Java类名: Main

背景

Sandytea前段时间沉迷于QQ农场中……一天夜里,他梦见来到好友X的农场上……

描述

这个农场和游戏中略有不同。土地实际上是一个边长为N的正方形,由N*N块土地组成。
在每块土地上,都种有一种农作物。如果他选择摘取一块土地上的农作物,就能获得一个固定的利润(当然,这个利润是正数)。不同土地上的利润多半是不同的。
贪心的Sandytea本想摘取所有土地上的农作物。但是正当他准备行动时,却被告知不允许摘取了两块有公共边的土地上的作物,否则就会被主人的狗发现。
Sandytea想知道,在不被狗抓住的前提下,他能获得的最大利益是多少。

输入格式

第一行:一个整数N,表示土地是一个边长为N的正方形。
下面N行:每行N个正整数,描述了各块土地上的农作物的单位价值。

输出格式

输出一行,包含一个整数,为最大的收益。

测试样例1

输入


7 7 
54 54

输出

61

备注

数据范围:
有10分的数据满足:N≤6
另有20分的数据满足:N≤13
另有30分的数据满足:N≤50
另有40分的数据满足:N≤200
所有数据满足:每块土地上作物的价值不超过100。改编自SPOJ

网络流最小割

黑白染色后,相邻不同色格子之间连边,答案为总权值减去最小割

  1. /*by SilverN*/
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<cstdio>
  6. #include<cmath>
  7. #include<queue>
  8. using namespace std;
  9. const int INF=1e9;
  10. const int mxn=;
  11. const int mx[]={,,,-,};
  12. const int my[]={,,,,-};
  13. int read(){
  14. int x=,f=;char ch=getchar();
  15. while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
  16. while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
  17. return x*f;
  18. }
  19. struct edge{
  20. int v,nxt,f;
  21. }e[mxn*];
  22. int hd[mxn],mct=;
  23. void add_edge(int u,int v,int c){
  24. e[++mct].v=v;e[mct].f=c;e[mct].nxt=hd[u];hd[u]=mct;return;
  25. }
  26. void insert(int u,int v,int c){
  27. add_edge(u,v,c);add_edge(v,u,);return;
  28. }
  29. int n,m,S,T;
  30. int d[mxn];
  31. bool BFS(){
  32. memset(d,,sizeof d);
  33. d[S]=;
  34. queue<int>q;
  35. q.push(S);
  36. while(!q.empty()){
  37. int u=q.front();q.pop();
  38. for(int i=hd[u];i;i=e[i].nxt){
  39. int v=e[i].v;
  40. if(!d[v] && e[i].f){
  41. d[v]=d[u]+;q.push(v);
  42. }
  43. }
  44. }
  45. return d[T];
  46. }
  47. int DFS(int u,int lim){
  48. if(u==T)return lim;
  49. int tmp,f=;
  50. for(int i=hd[u];i;i=e[i].nxt){
  51. int v=e[i].v;
  52. if(d[v]==d[u]+ && e[i].f){
  53. tmp=DFS(v,min(lim,e[i].f));
  54. e[i].f-=tmp;
  55. e[i^].f+=tmp;
  56. lim-=tmp;
  57. f+=tmp;
  58. if(!lim)return f;
  59. }
  60. }
  61. d[u]=;
  62. return f;
  63. }
  64. int Dinic(){
  65. int res=;
  66. while(BFS())res+=DFS(S,INF);
  67. return res;
  68. }
  69. int mp[][];
  70. int id[][],cnt=;
  71. int main(){
  72. int i,j;
  73. n=read();
  74. S=;T=n*n+;
  75. for(i=;i<=n;i++)
  76. for(j=;j<=n;j++)
  77. id[i][j]=++cnt;
  78. int smm=;int nx,ny;
  79. for(i=;i<=n;i++)
  80. for(j=;j<=n;j++){
  81. mp[i][j]=read();
  82. smm+=mp[i][j];
  83. if(((i+j)&)==){
  84. insert(S,id[i][j],mp[i][j]);
  85. for(int k=;k<=;k++){
  86. nx=i+mx[k];
  87. ny=j+my[k];
  88. if(nx || nx<=n || ny || ny<=n){
  89. insert(id[i][j],id[nx][ny],INF);
  90. }
  91. }
  92. }
  93. else{
  94. insert(id[i][j],T,mp[i][j]);
  95. }
  96. }
  97. int ans=smm-Dinic();
  98. printf("%d\n",ans);
  99. return ;
  100. }

TYVJ1338 QQ农场的更多相关文章

  1. Tyvj-1338 QQ农场

    P1338 QQ农场 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Sandytea前段时间沉迷于QQ农场中……一天夜里,他梦见来到好友X的农场上…… 描述 ...

  2. 【TYVJ】1338 QQ农场(最大流+最大权闭合图)

    http://tyvj.cn/Problem_Show.aspx?id=1338 时间才排到rank7,还不快啊囧.isap我常数都写得那么小了... 最大权闭合图看我另一篇博文吧 此题很明显的模型. ...

  3. 关于QQ农场牧场等曾经流行的游戏的一些见解

    大概在上上周,我偶然间打开QQ空间玩了一会QQ农牧场,玩完之后我在想,在那个年代他们为什么那么红? 我觉得可能有以下几点: 1:凭借着QQ海量的用户,可以迅速推广 2:迎合了人们爱占小便宜的心理,不过 ...

  4. UU农场平台开发 UU农场拆复利系统

    UU农场平台开发 UU农场拆复利系统今年比较新的一款游戏,类似于QQ农场,但又加入了很多新型的互联网理财模式!UU农场平台开发 UU农场拆复利系统.UU农场开发.UU农场游戏平台开发.UU农场平台开发 ...

  5. 游戏全区全服和分区分服 QQ斗地主的设计

    游戏全区全服和分区分服  QQ斗地主的设计 https://cloud.tencent.com/community/article/164816001481011910?fromSource=gwzc ...

  6. JAVA上百实例源码以及开源项目

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬. ...

  7. 2014年5月份第1周51Aspx源码发布详情

    郑州某高校学生考评系统源码  2014-5-5 [VS2008]功能介绍:   1.用户角色有部主任.教师.学生等.   2.可添加班级考评项目.学生考评项目.   3.可指定学生对班级.学生某考评项 ...

  8. Java NIO教程 前言

    阅读本文前,建议你先了解 旧I/O NIO 是 New I/O 的缩写,要了解它真正的内涵,需要掌握的知识还是比较多的.我努力在这几篇笔记里,勾勒出整个io的面貌.为大家的深入学习铺路. I/O简史 ...

  9. 制作便携版 FireFox 火狐浏览器

    Firefox是一款可高度自定义的开源浏览器: 你可以访问 火狐DIY 定制自己的Firefox安装包, 此外,你还可以自己动手定制一款可以放在U盘随身携带的便携版Firefox火狐浏览器. 制作便携 ...

随机推荐

  1. TextInputLayout setError() setErrorEnable()

    public void afterTextChanged(Editable s) { if (textInputLayout.getEditText().getText().toString().le ...

  2. SQL SERVER错误:已超过了锁请求超时时段。 (Microsoft SQL Server,错误: 1222)

    在SSMS(Microsoft SQL Server Management Studio)里面,查看数据库对应的表的时候,会遇到"Lock Request time out period e ...

  3. VS2015 Git使用教程——优化项目编辑日志

    一.前言 公司项目中,修改日志管理是一件很繁琐的事情,而且项目维护时间长了,会遗留下各种有用或无用的日志,对于有代码洁癖的人来说,无疑是一种灾难. 1.公司日志记录结构: 2.Git日志记录结构: 二 ...

  4. MySQL 插入数据时,中文乱码问题的解决(转)

    当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12',' ...

  5. 利用 spring bean 的属性 init-method 解决因为数据库连接没有初始化而导致首次点击页面超慢的问题

    问题的描述: 一个项目,涉及到了 两个数据源,分别使用的是 两个不同的 数据库连接池,其中一个是 poxool 连接池,问题在于,spring在启动时,只初始化其中的一个 数据库连接池中的数据库连接, ...

  6. 解决UDT中内存下不去的问题

         使用UDT库,编写简单的网络通信程序,发现了一个问题,关闭一部分连接后,程序占用内存并没有变化.      比如先连接500个,再连接另500个,先关掉后面500个,程序占用内存降一半,再关 ...

  7. mac版本navicat连接oracle报错ORA-21561

    最近电脑更换成mac,很多软件都和win不一样了,正在慢慢适应,连接oracle原来用的客户端是pl/sql develop,蛋疼的是没有了mac版本, 用了navicat,具体设置如下 1.新建连接 ...

  8. TFS 升级错误一则 TF400654

    升级后报 [错误] TF400654: 无法配置规划工具.以下元素包含错误: BugWorkItems/BugWorkItems.TF400506: 此元素将定义表示 Bug 或缺陷的工作项的状态.每 ...

  9. OpenStack 行业正进入拓展期:行业云将成为新一轮工业革命的基础设施和引擎

    一直在关注华为2016 Connect 大会,本来没票,后来找朋友搞到了一张,参加了大会第一天下午的会议,时间虽短,但非常有收获.本来出发前还带了纸和笔,但是到了现场才发现只带了笔记本,笔却丢下了,所 ...

  10. [转]ASP.NET Core 之 Identity 入门(二)

    本文转自:http://www.cnblogs.com/savorboard/p/aspnetcore-identity2.html 前言 在 上篇文章 中讲了关于 Identity 需要了解的单词以 ...