Openjudge jubeeeeeat
jubeeeeeat
- 总时间限制:
- 1000ms
- 内存限制:
- 256000kB
- 描述
-
众所周知,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,肉质手与他所能按的键中有combe的键连一条容量为1的边
由于按每个combe都只会有1的贡献,所以所有的combe向汇点连容量为1的边
原点向每只肉质手连容量为INF的边
*/
#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#define maxn 2501
using namespace std;
int n,m,q,ans,num=,head[maxn],cur[maxn],lev[maxn],map[][],s,t,sum;
struct node{
int to,pre,cap;
}e[];
void Insert(int from,int to,int v){
e[++num].to=to;
e[num].cap=v;
e[num].pre=head[from];
head[from]=num;
}
bool bfs(){
queue<int>q;
q.push(s);
for(int i=;i<=t;i++)cur[i]=head[i],lev[i]=-;
lev[s]=;
while(!q.empty()){
int now=q.front();q.pop();
for(int i=head[now];i;i=e[i].pre){
int to=e[i].to;
if(e[i].cap>&&lev[to]==-){
lev[to]=lev[now]+;
q.push(to);
if(to==t)return ;
}
}
}
return ;
}
int dinic(int now,int flow){
if(now==t)return flow;
int rest=,delta;
for(int &i=cur[now];i;i=e[i].pre){
int to=e[i].to;
if(e[i].cap>&&lev[to]==lev[now]+){
delta=dinic(to,min(flow-rest,e[i].cap));
if(delta){
e[i].cap-=delta;e[i^].cap+=delta;
rest+=delta;
if(rest==flow)break;
}
}
}
if(rest!=flow)lev[now]=-;
return rest;
}
int main(){
scanf("%d%d%d",&n,&m,&q);
for(int i=;i<=n;i++)for(int j=;j<=n;j++){
scanf("%d",&map[i][j]);
if(map[i][j])sum++;
}
int x,y,z;
for(int i=;i<=m;i++){
Insert(s,i,);
Insert(i,s,);
}
for(int i=;i<=m;i++){
Insert(i,i+m,);
Insert(i+m,i,);
}
s=,t=n*n+m*+;
for(int i=;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
for(int j=x;j<x+z;j++)
for(int k=y;k<y+z;k++)
if(map[j][k]){
Insert(i+m,(j-)*n+k+m*,);
Insert((j-)*n+k+m*,i+m,);
}
}
for(int i=;i<=n*n;i++){
Insert(*m+i,t,);
Insert(t,*m+i,);
}
while(bfs())ans+=dinic(s,);
int w=min(q,sum-ans);
ans+=w;
printf("%d",ans);
}
Openjudge jubeeeeeat的更多相关文章
- OpenJudge——0003:jubeeeeeat
OpenJudge——0003:jubeeeeeat 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏,游戏界面是4×4的方阵,会根据音乐节奏要求玩家按下一些指定方块(以下称co ...
- jubeeeeeat
http://cdqz.openjudge.cn/2016/0003/ 总时间限制: 1000ms 内存限制: 256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏 ...
- 【OpenJudge 8463】Stupid cat & Doge
http://noi.openjudge.cn/ch0204/8463/ 挺恶心的一道简单分治. 一开始准备非递归. 大if判断,后来发现代码量过长,决定大打表判断后继情况,后来发现序号不对称. 最后 ...
- 【OpenJudge 191】【POJ 1189】钉子和小球
http://noi.openjudge.cn/ch0405/191/ http://poj.org/problem?id=1189 一开始忘了\(2^{50}\)没超long long差点写高精度Q ...
- 【OpenJudge 1665】完美覆盖
http://noi.openjudge.cn/ch0405/1665/?lang=zh_CN 状压水题,手动转移 #include<cstdio> #include<cstring ...
- 【OpenJudge 1793】矩形覆盖
http://noi.openjudge.cn/ch0405/1793/ 好虐的一道题啊. 看数据范围,一眼状压,然后调了好长时间QwQ 很容易想到覆盖的点数作为状态,我用状态i表示至少覆盖状态i表示 ...
- OpenJudge 2990:符号三角形 解析报告
2990:符号三角形 总时间限制: 1000ms 内存限制: 65536kB 描述 符号三角形的第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“ ...
- OpenJudge 7624 山区建小学
在openjudge似乎无法凭题号搜到题...? 总时间限制: 1000ms 内存限制: 65536kB 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任 ...
- [OpenJudge 3066]随机序列
[OpenJudge 3066]随机序列 试题描述 Bob喜欢按照如下规则生成随机数: 第一步:令a[0] = S, 当n = 0: 第二步:a[n+1] = (a[n]*A+B)%P: 第三步:如果 ...
随机推荐
- GitHub基本使用
什么是GitHub? GitHub是用于版本控制和协作的代码托管平台.它可以让您和其他人在任何地方一起工作 本教程教你如GitHub必需资源,如仓库,分支,提交和拉请求.您将创建自己的Hello Wo ...
- android 应用程序Activity之间数据传递与共享的几种途径
一.基于消息的通信机制 Intent ---boudle ,extraAndroid为了屏蔽进程的概念,利用不同的组件[Activity.Service]来表示进程之间的通信!组件间通信的核心机制是I ...
- FEC(Forward Error Correction)前向纠错 UDP\RTP 中使用用于改善无线等网络丢包等问题--转
FEC(Forward Error Correction)前向纠错 UDP\RTP 中使用用于改善无线等网络丢包等问题 算法暂不介绍. 思路:FEC ENCODE 增加冗余包,当无线等网络丢包之后,接 ...
- Oracle 12C 新特性之扩展数据类型(extended data type)
Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字 ...
- 使用Rancher搭建K8S测试环境
使用Rancher搭建K8S测试环境 http://blog.csdn.net/csdn_duomaomao/article/details/75316926 环境准备(4台主机,Ubuntu16.0 ...
- Linux不停往外发包
一台Linux这两天不停往外发包,造成外部无法访问. [root@ct-nat ~]# watch ifconfig-------------查看数据包新增情况 Every 2.0s: ifconfi ...
- Erlang generic standard behaviours -- gen_server terminate
gen_server 主体 module 已经分析完了(http://www.cnblogs.com/--00/p/4271982.html),接着,分析下gen_server 中的terminate ...
- 【转】 Pro Android学习笔记(三七):Fragment(2):基础小例子
目录(?)[-] 小例子运行效果 Pre-step一点准备 Step 1Activity的布局 小例子运行效果 这是一个书名和书简介的例子.运行如下图.Activity由左右两个Fragment组成, ...
- GCC提供的几个內建函数
参考 https://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Other-Builtins.html#Other-Builtins https://en.wikipe ...
- SciTE for Ruby的配置
转自:http://my.oschina.net/xsinger/blog/14229?catalog=71266 下载下面这个文件:http://scintilla.sourceforge.net/ ...