积木游戏_纪中1440_暴力+预处理
来源:互联网 发布:mac电脑文稿 编辑:程序博客网 时间:2024/06/10 07:19
Description
在一个N*N的区域玩积木游戏,每个单元格正好跟积木的底面相等,每个单元格里放有若干个积木,Alice想重新摆放积木,使得每个单元格最多只能放一个积木,并且所有积木正好形成一个矩形。
把一个积木从一个位置移到另一个位置称为一次操作。
给出初始状态,编程计算最少需要多少次操作才能达到上述要求。
Input
第一行包含两个整数N和M(1<=N<=100,1<=M<=N^2),表示区域大小以及积木的数量。
接下来M行,每行包含两个整数R和C(1<=R,C<=N),表示每个积木放置的位置。
Output
输出最少操作次数。输入保证有解。
解析
类似打砖块,预处理一下二维前缀和,找到一个包括最多积木的矩形与总数相减就是答案
源码
var n,m:longint; f:array[0..101,0..101]of longint;function max(x,y:longint):longint;begin max:=y; if x>y then max:=x;end;procedure main;var i,j,k,l,ans:longint;begin ans:=0; for i:=1 to m do if m mod i=0 then begin j:=m div i; if (i>n)or(j>n) then continue; for k:=i to n do for l:=j to n do ans:=max(f[k,l]-f[k-i,l]-f[k,l-j]+f[k-i,l-j],ans); end; writeln(m-ans);end;procedure init;var i,j,x,y:longint;begin readln(n,m); for i:=1 to m do begin readln(x,y); f[x,y]:=1; end; for i:=1 to n do for j:=1 to n do f[i,j]:=f[i-1,j]+f[i,j-1]-f[i-1,j-1]+f[i,j];end;begin init; main;end.
0 0
- 积木游戏_纪中1440_暴力+预处理
- 数字游戏_纪中2032_暴力?
- 积木游戏 纪中 1440 类dp 预处理
- 删除_纪中1381_暴力
- 输油管道_纪中1432_暴力
- 直角三角形_纪中2543_暴力?
- 餐桌_纪中1237_水暴力
- 数码问题_纪中1433_暴力
- 对撞机_纪中3074_暴力?
- 划定农田_纪中1764_暴力
- 计蒜客 _堆积木
- 炸弹人游戏_暴力枚举
- 鸡腿の游戏_纪中1737
- 洛谷 1969_积木大赛_模拟
- SOJ 2930_积木城堡
- 最小最大和_纪中1443_桶优化的暴力
- 反射_暴力反射
- Contact_usaco3.1_暴力
- Android技术成长路线图
- dll's .h to dll's .lib
- 2016长乐夏令营 Day6
- 可以自动消失的弹出提示框
- spring MVC框架下前台往java后台传送json数据
- 积木游戏_纪中1440_暴力+预处理
- UVA11044Searching for Nessy
- git版本控制器的使用
- 【leetcode】374. Guess Number Higher or Lower【E】
- jQuery 事件方法大全
- 一种基于手机网络共享服务的网络连接的方法及手机的制作方法
- Java集合小结
- 深入理解Android异步消息处理机制
- Android Dialog的多种对话框整理案例