方块切割

题目链接https://cometoj.com/contest/39/problem/C?problem_id=1583

数据范围:略。


题解

首先,如果我们知道了多少道在行上,多少刀在列上,应该怎么办?

不难发现行和列是独立的,只需要分别保证各自均分了网格即可。

那么怎么切呢?只需要顺次枚举,能切就切即可。

至于怎么知道行和列各自切多少刀?

枚举呗

代码

#include <bits/stdc++.h>

#define N 1010 

using namespace std;

int r[N], c[N];
char a[N][N];
int s[N][N];
int ans[2 * N];
int x[N], y[N];
int n, m, k; int main() {
int T;
scanf("%d", &T);
while (T--) {
scanf("%d%d%d", &n, &m, &k);
for (int i = 1; i <= n; i++) {
r[i] = 0;
}
for (int i = 1; i <= m; i++) {
c[i] = 0;
}
int sum = 0;
for (int i = 1; i <= n; i++) {
scanf("%s", a[i] + 1);
for (int j = 1; j <= m; j++) {
if (a[i][j] == '0') {
r[i]++;
c[j]++;
sum++;
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];
s[i][j] += a[i][j] == '0';
}
}
for (int i = 1; i <= k; i++) {
ans[i] = n + m - 1;
}
if (sum == 0) {
for (int i = 1; i < k; i++) {
printf("%d ", i);
}
printf("%d", k);
printf("\n");
continue;
}
for (int l = k; l >= 0; l--) {
if (sum % ((l + 1) * (k - l + 1))) continue;
int br = sum / (l + 1);
int bc = sum / (k - l + 1);
int b = sum / (l + 1) / (k - l + 1);
bool f = 1;
int cur = 0;
int X = 0;
for (int i = 1; i <= n; i++) {
cur += r[i];
if (cur == br) {
x[++X] = i;
cur = 0;
}
if (cur > br) f = 0;
}
cur = 0;
int Y = 0;
for (int i = 1; i <= m; i++) {
cur += c[i];
if (cur == bc) {
y[++Y] = i;
cur = 0;
}
if (cur > bc) f = 0;
}
for (int i = 1; i <= X; i++) {
for (int j = 1; j <= Y; j++) {
if (s[x[i]][y[j]] - s[x[i - 1]][y[j]] - s[x[i]][y[j - 1]] + s[x[i - 1]][y[j - 1]] != b) f = 0;
}
}
if (!f) continue;
for (int i = 1; i < X; i++) ans[i] = x[i];
for (int i = 1; i < Y; i++) ans[l + i] = y[i] + n - 1;
break;
}
if (ans[1] == n + m - 1) {
printf("Impossible\n");
}
else {
for (int i = 1; i < k; i++) {
printf("%d ", ans[i]);
}
printf("%d", ans[k]);
printf("\n");
}
}
return 0;
}

[Cometoj#4 C]方块切割_质因数分解_贪心的更多相关文章

  1. [bzoj4026]dC Loves Number Theory_主席树_质因数分解_欧拉函数

    dC Loves Number Theory 题目大意:dC 在秒了BZOJ 上所有的数论题后,感觉萌萌哒,想出了这么一道水题,来拯救日益枯竭的水题资源. 给定一个长度为 n的正整数序列A,有q次询问 ...

  2. [bzoj1978][BeiJing2010]取数游戏 game_动态规划_质因数分解

    取数游戏 game bzoj-1978 BeiJing-2010 题目大意:给定一个$n$个数的$a$序列,要求取出$k$个数.假设目前取出的数是$a_j$,那么下次取出的$a_k$必须保证:$j&l ...

  3. 【BZOJ-4514】数字配对 最大费用最大流 + 质因数分解 + 二分图 + 贪心 + 线性筛

    4514: [Sdoi2016]数字配对 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 726  Solved: 309[Submit][Status ...

  4. BZOJ_4459_[Jsoi2013]丢番图_数学+分解质因数

    BZOJ_4459_[Jsoi2013]丢番图_数学+分解质因数 Description 丢番图是亚历山大时期埃及著名的数学家.他是最早研究整数系数不定方程的数学家之一. 为了纪念他,这些方程一般被称 ...

  5. CF1139D Steps to One(DP,莫比乌斯反演,质因数分解)

    stm这是div2的D题……我要对不住我这个紫名了…… 题目链接:CF原网  洛谷 题目大意:有个一开始为空的序列.每次操作会往序列最后加一个 $1$ 到 $m$ 的随机整数.当整个序列的 $\gcd ...

  6. 【2019.7.22 NOIP模拟赛 T1】麦克斯韦妖(demon)(质因数分解+DP)

    暴力\(DP\) 先考虑暴力\(DP\)该怎么写. 因为每个序列之后是否能加上新的节点只与其结尾有关,因此我们设\(f_i\)为以\(i\)为结尾的最长序列长度. 每次枚举一个前置状态,判断是否合法之 ...

  7. 求n!质因数分解之后素数a的个数

    n!质因数分解后P的个数=n/p+n/(p*p)+n/(p*p*p)+......直到n<p*p*p*...*p //主要代码,就这么点东西,数学真是厉害啊!幸亏我早早的就退了数学2333 do ...

  8. AC日记——质因数分解 1.5 43

    43:质因数分解 总时间限制:  1000ms 内存限制:  65536kB 描述 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. 输入 输入只有一行,包含一个正整数 n. 对于60% ...

  9. 整数分解 && 质因数分解

    输入整数(0-30)分解成所有整数之和.每四行换行一次. 一种方法是通过深度优先枚举出解.通过递归的方式来实现. #include <stdio.h> #include <strin ...

随机推荐

  1. 021_STM32程序移植之_ESP8266连接onenet

    本次教程是使用STM32C8T6通过ESP8266-12F模块将数据传输到ONENET云端去,并且云端能够下发命令给单片机来实现云端控制.本次实验硬件设备:STM32C8T6最小系统,ESP8266- ...

  2. Codeforces Round #521 (Div.3)题解

    A过水,不讲 题解 CF1077B [Disturbed People] 这题就是个显而易见的贪心可是我考场上差点没想出来 显然把一户被打扰的人家的右边人家的灯关掉肯定比把左边的灯关掉 从左到右扫一遍 ...

  3. CF917D Stranger Trees【矩阵树定理,高斯消元】

    题目链接:洛谷 题目大意:给定一个$n$个节点的树$T$,令$ans_k=\sum_{T'}[|T\cap T'|=k]$,即有$k$条边重合.输出$ans_0,ans_1,\ldots,ans_{n ...

  4. docker 部署 .net core

    1.centos安装好sdk2.1,安装好docker,这些基本的操作就不赘述. 2.准备好core项目,版本2.1 3.新建dockerfile文件放到项目发布文件夹里,里面内容如下: FROM m ...

  5. Pwnhub Fantastic Key-一点总结

    index.php <? php error_reporting(0); include 'config.php'; $id = $_POST['i'] ? waf($_POST['i']) : ...

  6. mongoose 建立schema 和model

    在node中使用MongoDB很多情况下,都是使用mongoose的,所以这集来介绍一下 安装 yarn add mongoose 连接 const mongoose = require(" ...

  7. android studio gradle国内代理设置

    android studio在开始都各项目之前都会遇到 gradle 的同步,而在同步过程中很多依赖下载特别慢甚至出现无法现在的情况,有的时候等的时间特别长,甚至要一天,关键是等了大半天之后突然报错, ...

  8. ROS 常用命令

    1.查看网卡接口: /interface  print 2.给网口添加IP地址: /ip address add address=192.168.1.254/24 interface=ether1 3 ...

  9. ElasticSearch——集群搭建

    1.准备 1.1.组件 JDK:1.8版本及以上: ElasticSearch:6.2.4版本: 1.2.服务器 3台服务器 2.安装 2.1.下载解压 wget https://artifacts. ...

  10. MVVM的项目学习和笔记

    今天在学习一个用MVVM模式写的项目,掌握一下对MVVM的理解和记的一些笔记. 下面是自己学习的项目链接: http://www.code4app.com/ios/一个MVVM架构的iOS工程/695 ...