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

BZOJ 1324 Exca神剑 最小割

标题效果:给定一个n*m矩阵。所有的格宝石之子,人们可选择起始位置,后除去宝石的当前位置的周围消失,然后你就可以走两步,重复上述过程

easy发现格儿子把它周围格孩子不能拿 因此,党格访问问题

黑白染色 黑色点连源 白色点连汇 流量为格子的权值 黑白之间连边 流量为正无穷 用总和减去最大流就是答案

曾经写的EK 跑了4000+ms我也是醉了

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 110
#define MAX (0x7fffffff)
int m,n,sum,ans;
struct abcd{int x,y,f,next;}table[100100];int head[M][M],tot=1;
void addd(int x,int y,int tox,int toy,int f)
{
    table[++tot].x=tox;
    table[tot].y=toy;
    table[tot].f=f;
    table[tot].next=head[x][y];
    head[x][y]=tot;
}
void add(int x,int y,int tox,int toy,int f){ addd(x,y,tox,toy,f);addd(tox,toy,x,y,0); }
inline int min(int x,int y){ return x<y?x:y; }
struct que{int x,y;}q[65540];unsigned short r,h;
int f[M][M],from[M][M];
bool maxflow()
{
    int i;
    memset(f,0,sizeof f);
    q[++h].x=0;q[h].y=0;
    f[0][0]=MAX;
    while(r!=h)
    {
        r++;
        for(i=head[q[r].x][q[r].y];i;i=table[i].next)if(table[i].f)if(!f[table[i].x][table[i].y])
        {
            f[table[i].x][table[i].y]=min(f[q[r].x][q[r].y],table[i].f);
            from[table[i].x][table[i].y]=i;
            q[++h].x=table[i].x;q[h].y=table[i].y;
        }
    }
    if(!f[0][1])return 0;
    ans+=f[0][1];
    for(i=from[0][1];i;i=from[table[i^1].x][table[i^1].y])table[i].f-=f[0][1],table[i^1].f+=f[0][1];
    return 1;
}
int main()
{
    int i,j,x;
    scanf("%d%d",&m,&n);
    for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
    {
        scanf("%d",&x);
        sum+=x;
        if(i+j&1)add(i,j,0,1,x);
        else
        {
            add(0,0,i,j,x);
            if(i^1)add(i,j,i-1,j,MAX);
            if(j^1)add(i,j,i,j-1,MAX);
            if(i^m)add(i,j,i+1,j,MAX);
            if(j^n)add(i,j,i,j+1,MAX);
        }
    }
    while(maxflow());
    printf("%d",sum-ans);
}


版权声明:本文博主原创文章。博客,未经同意不得转载。

相关文章:

  • 滚动条美化,两款优秀的模拟滚动条插件
  • HDU 1230解题报告
  • DDR3基本知识及测试【转】
  • 数据结构与算法 Big O 备忘录与现实
  • Web API应用架构设计分析(2)
  • nginx日志轮询
  • JAVA 20 键盘输入
  • 代码面试之串(转载)
  • lua-epoll 模块简单分析
  • MyBatis:简单物理分页实现(Plugin)
  • 堆与堆排序
  • laravel 怎么使用ajax
  • argz_count()函数
  • JS获取阴历阳历和星期
  • LCA UESTC 92 Journey
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 4个实用的微服务测试策略
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • CAP 一致性协议及应用解析
  • CentOS6 编译安装 redis-3.2.3
  • conda常用的命令
  • Elasticsearch 参考指南(升级前重新索引)
  • HomeBrew常规使用教程
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaScript学习总结——原型
  • Java面向对象及其三大特征
  • java中的hashCode
  • Next.js之基础概念(二)
  • OSS Web直传 (文件图片)
  • TypeScript迭代器
  • windows下mongoDB的环境配置
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 电商搜索引擎的架构设计和性能优化
  • 看域名解析域名安全对SEO的影响
  • 使用parted解决大于2T的磁盘分区
  • 数据科学 第 3 章 11 字符串处理
  • 用Python写一份独特的元宵节祝福
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #android不同版本废弃api,新api。
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #每天一道面试题# 什么是MySQL的回表查询
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (9)STL算法之逆转旋转
  • (C语言)逆序输出字符串
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (强烈推荐)移动端音视频从零到上手(下)
  • (四)linux文件内容查看
  • (未解决)macOS matplotlib 中文是方框
  • .CSS-hover 的解释