CF1004D Sonya and Matrix
https://www.luogu.com.cn/problem/CF1004D
分析题
首先可以通过镜像和旋转使得0在第二象限(左上方)
也可以发现距离0(x,y)0(x,y)0(x,y)最远的(n,m)(n,m)(n,m)就是给出的最大值,假设为bbb
即b=n+m−x−yb=n+m-x-yb=n+m−x−y
假设000距离(1,1)(1,1)(1,1)的距离为aaa
显然a=x+y−2a=x+y-2a=x+y−2
联立一下可以得到
a+b=n+m−2a+b=n+m-2a+b=n+m−2
n+m−b=x+yn+m-b=x+yn+m−b=x+y
对于这条式子bbb是已知的,n,mn,mn,m可以低复杂度枚举
现在考虑怎么搞出(x,y)(x,y)(x,y)中的其中一个
那么怎么求xxx呢?
到000距离为ddd的点一定有4d4d4d个
所以可以枚举这个d,第一个不满足的ddd就是xxx
可以参考代码理解
code:
#include<bits/stdc++.h>
#define N 2000050
using namespace std;
int gs[N], cnt[N], t;
int check() {for(int i = 1; i <= t; i ++) if(gs[i] != cnt[i]) return 0;return 1;
}
int main() {scanf("%d", &t);int b = 0;for(int i = 1; i <= t; i ++) {int x;scanf("%d", &x); cnt[x] ++;b = max(b, x);}int x = 0, y = 0;for(int i = 1; i <= t; i ++)if(cnt[i] < i * 4) {x = i; break;}for(int n = x; n <= t; n ++) if(t % n == 0) {int m = t / n, y = n + m - b - x;if(abs(n - x) + abs(m - y) == b) {memset(gs, 0, sizeof gs);for(int i = 1; i <= n; i ++)for(int j = 1; j <= m; j ++)gs[abs(i - x) + abs(j - y)] ++;if(check()) {printf("%d %d\n%d %d", n, m, x, y);return 0;}}}puts("-1");return 0;
}
CF1004D Sonya and Matrix相关推荐
- D. Sonya and Matrix
本文参考自: 原文地址 D. Sonya and Matrix time limit per test 2 seconds memory limit per test 256 megabytes in ...
- Codeforces Round #495 (Div. 2) D. Sonya and Matrix[思维构造]
D. Sonya and Matrix 题意:给定t个数,要求构造一个矩阵,以0为中心,以菱形的方法依次+1扩展 思路: 假设0的坐标为(x,y),则有 max=n-x+m-y max已知, n,m枚 ...
- Codeforces 1080E - Sonya and Matrix Beauty - Manacher
Codeforces 1080E - Sonya and Matrix Beauty - Manacher 题解链接 https://lucien.ink 题目链接 https://codeforce ...
- Sonya and Matrix Beauty
标题 考虑枚举左右边界,我们考虑形成的n个字符串.首先一个串能重排成回文串首先要满足出现次数为奇数的字符至多只有一个,如果我们把字符串hashhash,那么还有满足能构成一个回文串,跑manacher ...
- 搜索 —— 暴力搜索
[暴力搜索] 暴力搜索,就是将所有情况都举出,并判断其是否符合题目条件.其基本方法是分析题意后,找到一个合适的维度列举每一个元素,以完成题目. 一般主流的 OJ 中,1000ms 的时间限制下可以运行 ...
- HZNU 2019 Summer training 8
A - Petya and Origami CodeForces - 1080A 题意:制造一份邀请函需要2份a物品,5份b物品,8份c物品,一个盒子里面有k份物品(可以为a或b或c)问你制造n份邀请 ...
- Android 自定义View ——Matrix (矩阵)
Matrix的作用: Matrix类包含一个3x3矩阵,用于转换坐标 Matrix (矩阵) 的原理很遗憾自己目前也是含糊的很,这里就不说了,记录自己在项目使用的方法, 这里就简单的记录下Matrix ...
- Codeforces 903F Clear The Matrix(状态压缩DP)
题目链接 Clear The Matrix 题意 给定一个$4 * n$的矩形,里面的元素为$'.'$或$'*'$.现在有$4$种正方形可以覆盖掉$'*'$,正方形的边长分别为$1,2,3,4$. 求 ...
- ie旋转滤镜Matrix
旋转一个元素算是一个比较常见的需求了吧,在支持CSS3的浏览器中可以使用transform很容易地实现,这里有介绍:http://www.css88.com/archives/2168,这里有演示ht ...
最新文章
- PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)
- CF703D Mishka and Interesting sum(求区间出现次数偶数次数的异或和)
- R语言Kolmogorov-Smirnov假设检验(正态性检验):检验数据的正态性
- 营销型网站优化攻略分享
- 360极速浏览器使用postman
- javascript里用php,php中使用javascript - 程序园
- $.getJSON()应用
- XMLHelper 辅助类
- matlab经验正交分解函数EOF的实现—基于Climate Data Toolbox操作
- 使用ffmpeg合并.h264文件
- linux 卸载vnc,realvnc的卸载
- SOLIDWORKS教程:solidworks设计绘图的七大实用技巧
- 用VMware克隆CentOS 6.4后HWaddr和UUID的设置
- Git之http方式永久保存用户名密码
- 联想拯救者电脑高清壁纸
- Java 判断是否为大写字母
- 【Visual Studio 2019 - Unknown override specifier error】Problems when compiling dbghelp.h
- excel数据多列排序
- 使用APM破解Imminent rat病毒后我们学到的东西
- 深度学习之目标检测学习笔记——1、基本概念