众所周知,LZF很喜欢打一个叫Jubeat的游戏。这是个音乐游戏,游戏界面是4×4的方阵,会根据音乐节奏要求玩家按下一些指定方块(以下称combo)。LZF觉得这太简单了,于是自己仿了个游戏叫Jubeeeeeat,唯一不同之处就是界面大小,Jubeeeeeat的界面为n×n的方阵。

在某一刻,界面同时出现了若干个combo。LZF终于觉得有些困难了,但毕竟LZF不是普通人,他有很多只手。LZF的手分为m只“肉质手”和q只“意念手”。顾名思义,“肉质手”是实际存在的手,每只肉质手都有5根手指,每根手指能按一个combo,但每只手的速度都不同,受限于此,LZF的每只肉质手的控制范围是一个固定大小的正方形。“意念手”即虚无之手,每只手只有1根手指,但控制范围为全局。

现在LZF想知道,他最多能按下多少个combo。

输入
输入文件名为 jubeeeeeat.in。 
第1行输入三个正整数n,m,q。
接下来是一个n×n的01矩阵,描述combo的位置,1为combo。
最后m行每行三个正整数xi,yi,ai,分别表示第i只肉质手掌控区域左上方块的行、列和边长。(行、列从1数起)
输出
输出文件名为 jubeeeeeat.out。 
输出一个正整数,表示最多能按下的combo数。
样例输入
3 1 3
1 0 1
1 1 1
1 0 1
1 1 2
样例输出
6
提示
【数据说明】
对于20%的数据,n=5,m=2,q=2;
对于50%的数据,1≤n≤20,1≤m, q≤50;
对于100%的数据,1≤n≤40,1≤m, q≤300,1≤xi, yi≤n,1≤xi+ai-1, yi+ai-1≤n。
 
 
 
网络流
源点向每一只肉质手连一条流量为5的边,然后每一只肉质手向他所能管到的格子连一条流量为1的边, 每一个格子向源点连一条流量为1的边,然后跑最大流
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 200100
#define inf 9999999
using namespace std;
queue<int>q;
,a[][];
int to[N],lev[N],cap[N],cnt[N],head[N],nextt[N];
int read()
{
    ,f=; char ch=getchar();
    ;ch=getchar();}
    +ch-',ch=getchar();
    return x*f;
}
int add(int x,int y,int z)
{
    tot++;to[tot]=y,cap[tot]=z,nextt[tot]=head[x];head[x]=tot;
    tot++;to[tot]=x;cap[tot]=,nextt[tot]=head[y];head[y]=tot;
}
inline bool bfs()
{
    while(!q.empty()) q.pop();
    ;i<=n*n+m+;i++)
    {
        lev[i]=-;
        cnt[i]=head[i];
    }
    q.push(s),lev[s]=;
    while(!q.empty())
    {
        int x=q.front();q.pop();
        for(int i=head[x];i;i=nextt[i])
        {
            int t=to[i];
            &&lev[t]==-)
            {
                lev[t]=lev[x]+;
                q.push(t);
                if(t==e) return true;
            }
        }
    }
    return false;
}
int dinic(int x,int flow)
{
    if(x==e) return flow;
    ,delta;
    for(int &i=cnt[x];i;i=nextt[i])
    {
        int t=to[i];
        &&lev[t]==lev[x]+)
        {
            delta=dinic(t,min(cap[i],flow-rest));
            if(delta)
            {
                rest+=delta;
                cap[i]-=delta;
                cap[i^]+=delta;
                if(rest==flow) break;
            }
        }
    }
    ;
    return rest;
}
int main()
{
    n=read(),m=read(),p=read();
    ;i<=n;i++)
     ;j<=n;j++)
     {
         a[i][j]=read();
         if(a[i][j]) maxn++;
      }
    e=n*n+m+;
    ;i<=m;i++)
     add(s,i,);
    ;i<=m;i++)
    {
        x=read(),y=read(),z=read();
        for(int j=x;j<x+z;j++)
         for(int k=y;k<y+z;k++)
          if(a[j][k])
           add(i,m+(j-)*n+k,);
    }
    ;i<=n;i++)
     ;j<=n;j++)
      if(a[i][j])
       add(m+(i-)*n+j,e,);
    while(bfs()) ans+=dinic(s,inf);
    ans=min(ans+p,maxn);
    printf("%d",ans);
    ;
}
 

OpenJudge——0003:jubeeeeeat的更多相关文章

  1. 成都磨子桥技工学校 / 2016届练习区 0003:jubeeeeeat

    0003:jubeeeeeat 总时间限制:  1000ms 内存限制:  256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏,游戏界面是4×4的方阵,会根据音乐 ...

  2. CDQZ 0003:jubeeeeeat

    0003:jubeeeeeat 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏,游戏界面是 ...

  3. Openjudge jubeeeeeat

    jubeeeeeat 题目链接 总时间限制:  1000ms 内存限制:  256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏,游戏界面是4×4的方阵,会根据音乐 ...

  4. jubeeeeeat

    http://cdqz.openjudge.cn/2016/0003/ 总时间限制: 1000ms 内存限制: 256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏 ...

  5. 【OpenJudge 8463】Stupid cat & Doge

    http://noi.openjudge.cn/ch0204/8463/ 挺恶心的一道简单分治. 一开始准备非递归. 大if判断,后来发现代码量过长,决定大打表判断后继情况,后来发现序号不对称. 最后 ...

  6. 【OpenJudge 191】【POJ 1189】钉子和小球

    http://noi.openjudge.cn/ch0405/191/ http://poj.org/problem?id=1189 一开始忘了\(2^{50}\)没超long long差点写高精度Q ...

  7. 【OpenJudge 1665】完美覆盖

    http://noi.openjudge.cn/ch0405/1665/?lang=zh_CN 状压水题,手动转移 #include<cstdio> #include<cstring ...

  8. 【OpenJudge 1793】矩形覆盖

    http://noi.openjudge.cn/ch0405/1793/ 好虐的一道题啊. 看数据范围,一眼状压,然后调了好长时间QwQ 很容易想到覆盖的点数作为状态,我用状态i表示至少覆盖状态i表示 ...

  9. OpenJudge 2990:符号三角形 解析报告

    2990:符号三角形 总时间限制:  1000ms       内存限制:  65536kB 描述 符号三角形的第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“ ...

随机推荐

  1. asp.net WebForm程序删除.designer.cs文件之后的故事

    1.介绍 正常情况下添加一个WebForm程序结构如下(命名为:myWebForm.aspx) 文件说明:.aspx文件:书写html代码部分,以及javascript,css等代码书写及引用 .as ...

  2. 网页实战开发笔记之——最全面的HTML的头部信息介绍

    HTML中我们一般把<head></head>部分称为网页的头部.头部部分的内容虽然不会在页面中显示,但它能影响到搜索引擎对网页的收录和排序,以及网页的各种全局设置,可以说是至 ...

  3. HDU 1719 Friend 规律题

    解题报告:规定数字1和数字2是Friend number,然后规定,若a和b是Friend number,那么a*b+a+b也是Friend number,输入一个数,让你判断这个数是否是Friend ...

  4. GDB基本用法

    基本命令 进入GDB:#gdb test test是要调试的程序,由gcc test.c -g -o test生成.进入后提示符变为(gdb) . 查看源码:(gdb) l 源码会进行行号提示. 如果 ...

  5. C语言实现线性表

    #include <stdio.h> #include <stdlib.h> //提供malloc()原型 /* 线性表需要的方法: 1. List MakeEmpty():初 ...

  6. iOS学习笔记(3)— 屏幕旋转

    一.屏幕旋转机制: iOS通过加速计判断当前的设备方向和屏幕旋转.当加速计检测到方向变化的时候,屏幕旋转的流程如下: 1.设备旋转时,系统接收到旋转事件. 2.系统将旋转事件通过AppDelegate ...

  7. 防止 Google Smart Lock 记忆错的用户名

    默认 chrome 会查找密码上面的那个(非隐藏非禁用)的表单域 如果上面是个短信验证码框,就会将验证码当成用户名提示用户保存. 在用户名 input 上添加 autocomplete="u ...

  8. NIO编程中buffer对象的理解以及API的使用

    概念讲解,转自https://www.cnblogs.com/lxzh/archive/2013/05/10/3071680.html  ,将的非常好! Buffer 类是 java.nio 的构造基 ...

  9. dstat 服务器性能查看命令【转】

    一. 安装和简解 # yum -y install dstat# dstat CPU状态:CPU的使用率.这项报告更有趣的部分是显示了用户,系统和空闲部分,这更好地分析了CPU当前的使用状况.如果你看 ...

  10. quartz的一个误导

    quartz文档提到,如果在集群环境下,最好将配置项org.quartz.jobStore.txIsolationLevelSerializable设置为true 问题: 这个选项在mysql下会非常 ...