显然只有横向和纵向的两个炮塔才有可能冲突。

考虑最小割,将每个炮塔所有能攻击到的位置建点,相邻之间连无穷的边,表示前缀和关系,即选了一个点,就必须要选所有比它近的点。

属于横向炮塔的点向$S$连边,容量为前缀最大值的差值;属于纵向炮塔的点向$T$连边,容量为前缀最大值的差值。

对于一个交点,则在两个点之间连无穷边,表示必须舍弃其中一个。

答案$=$总收益$-$最小割。

  1. #include<cstdio>
  2. #include<algorithm>
  3. using namespace std;
  4. const int N=126000,inf=~0U>>2;
  5. int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
  6. struct E{int t,f;E*nxt,*pair;}*g[N],*d[N],pool[1000000],*cur=pool;
  7. int n,m,i,j,a[55][55],b[55][55],cnt,S,T,h[N],gap[N],ans;
  8. inline void add(int s,int t,int f){
  9. if(!f)return;
  10. if(f<inf)ans+=f;
  11. E*p=cur++;p->t=t;p->f=f;p->nxt=g[s];g[s]=p;
  12. p=cur++;p->t=s;p->f=0;p->nxt=g[t];g[t]=p;
  13. g[s]->pair=g[t];g[t]->pair=g[s];
  14. }
  15. int sap(int v,int flow){
  16. if(v==T)return flow;
  17. int rec=0;
  18. for(E*p=d[v];p;p=p->nxt)if(h[v]==h[p->t]+1&&p->f){
  19. int ret=sap(p->t,min(flow-rec,p->f));
  20. p->f-=ret;p->pair->f+=ret;d[v]=p;
  21. if((rec+=ret)==flow)return flow;
  22. }
  23. if(!(--gap[h[v]]))h[S]=T;
  24. gap[++h[v]]++;d[v]=g[v];
  25. return rec;
  26. }
  27. inline void tag(int x,int y,int k){
  28. int mx=0,pre=0,now;
  29. while(1){
  30. x+=dx[k],y+=dy[k];
  31. if(x<1||x>n||y<1||y>m)return;
  32. cnt++;
  33. if(pre){
  34. if(k<2)add(cnt,pre,inf);
  35. else add(pre,cnt,inf);
  36. }
  37. if(k<2)add(S,cnt,max(mx,a[x][y])-mx);else add(cnt,T,max(mx,a[x][y])-mx);
  38. mx=max(mx,a[x][y]);
  39. pre=cnt;
  40. if(b[x][y]){
  41. if(k<2)add(cnt,b[x][y],inf);
  42. else add(b[x][y],cnt,inf);
  43. }else b[x][y]=cnt;
  44. }
  45. }
  46. int main(){
  47. scanf("%d%d",&n,&m);
  48. S=n*m*max(n,m)+1;T=S+1;
  49. for(i=1;i<=n;i++)for(j=1;j<=m;j++)scanf("%d",&a[i][j]);
  50. for(i=1;i<=n;i++)for(j=1;j<=m;j++)if(a[i][j]<0)tag(i,j,a[i][j]+4);
  51. for(gap[0]=T,i=1;i<=T;i++)d[i]=g[i];
  52. while(h[S]<T)ans-=sap(S,inf);
  53. return printf("%d",ans),0;
  54. }

  

BZOJ4657 : tower的更多相关文章

  1. 【BZOJ4657】tower [网络流]

    炮塔 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output 一行一个整数表示答案. Sample Input 4 5 0 ...

  2. Tower是个不错的项目管理开放平台

    简单,易用,轻量级,挺多大项目都在用. 目前公司的项目也在使用,但是从高层到底下,随意惯了,最终没有用起来. 感觉适合年轻激情的创业公司团队来使用. 附上地址:https://tower.im/

  3. dwarf tower

    dwarf tower(dwarf.cpp/c/pas)[问题描述]Vasya在玩一个叫做"Dwarf Tower"的游戏,这个游戏中有n个不同的物品,它们的编号为1到n.现在Va ...

  4. HDU1329 Hanoi Tower Troubles Again!——S.B.S.

    Hanoi Tower Troubles Again! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  5. ZOJ-1239 Hanoi Tower Troubles Again!

    链接:ZOJ1239 Hanoi Tower Troubles Again! Description People stopped moving discs from peg to peg after ...

  6. Ansible-Tower快速入门-6.查看tower的仪表板【翻译】

    查看tower的仪表板 到这一步,我们已经可以在屏幕上看到tower的仪表板了,我们可以看到你目前"主机""资产清单"和"项目"的汇总信息, ...

  7. 自动运维:Ansible -ansible tower

    文档主页:http://docs.ansible.com/参考文档:http://docs.ansible.com/ansible/参考文档:http://docs.ansible.com/ansib ...

  8. dp --- hdu 4939 : Stupid Tower Defense

    Stupid Tower Defense Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/ ...

  9. 塔吊力矩限制器,塔吊黑匣子,塔吊电脑,tower crane

    塔机力矩限制器,tower crane 适用于各种类型的固定臂塔机和可变臂塔机 塔机力矩限制器是塔式起重机机械的安全保护装置,本产品采用32位高性能微处理器为硬件平台,软件算法采用国内最先进的三滑轮取 ...

随机推荐

  1. ios 弹出键盘 视图向上平移

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardwillAppear:) name:U ...

  2. Java实现带括号优先级的计算器

    这个计算器不仅能够进行四则运算,还支持添加括号进行优先级计算,例如下面算式: 10+(2*16-20/5)+7*2=52 Java源代码: import java.awt.BorderLayout; ...

  3. WebKit示例解读

    如果你曾经在你的App中使用UIWebView加载网页内容的话,你应该体会到了它的诸多不尽人意之处.UIWebView是基于移动版的Safari的,所以它的性能表现十分有限.特别是在对几乎每个Web应 ...

  4. NYOJ题目1080年龄排序

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtMAAAJVCAIAAACTf+6jAAAgAElEQVR4nO3dO1Lj3NbG8W8Szj0QYg ...

  5. GB2312、GBK和UTF-8三种编码以及QT中文显示乱码问题

    1.GB2312.GBK和UTF-8三种编码的简要说明 GB2312.GBK和UTF-8都是一种字符编码,除此之外,还有好多字符编码.只是对于我们中国人的应用来说,用这三种编码 比较多.简单的说一下, ...

  6. 数据结构和算法 – 9.二叉树和二叉查找树

      9.1.树的定义   9.2.二叉树 人们把每个节点最多拥有不超过两个子节点的树定义为二叉树.由于限制子节点的数量为 2,人们可以为插入数据.删除数据.以及在二叉树中查找数据编写有效的程序了. 在 ...

  7. MVC公开课 – 1.基础 (2013-3-15广州传智MVC公开课)

      1.MVC设计模式 Model 是指 要处理的业务代码和数据操作代码 View 视图 主要是指的 跟用户打交道 并能够展示数据 Controller 看成是 Model和View的桥梁 优点: 1 ...

  8. 2016"百度之星" - 初赛(Astar Round2A)All X(数学 矩阵)

    All X  Accepts: 1281  Submissions: 7580  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536 ...

  9. jqueryEasyUI:tabs扩展:给tabs组件绑定双击事件 分类: JqueryEasyUI 2014-09-29 14:36 537人阅读 评论(0) 收藏

    实现代码: $.extend($.fn.tabs.methods, { /** * 绑定双击事件 * @param {Object} jq * @param {Object} caller 绑定的事件 ...

  10. PMP 第十章 项目沟通管理

    1识别干系人 2规划沟通 3发布信息 4管理干系人期望 5报告绩效 1.沟通的维度有哪些?沟通技巧有哪些? 2.规划沟通管理的目的是什么?沟通渠道的计算(重点).影响沟通技术的因素有哪些?沟通模型的步 ...