AGC 016 C - +/- Rectangle
结合了贪心的构造真是妙啊2333
一开始推式子发现 权是被多少个w*h矩形覆盖到的时候 带权和 <0 ,权都是1的时候带权和 >0,也就是说被矩形覆盖的多的我们要让它尽量小。
但这个好像并没有什么乱用的样子QWQ,不过这却引导出了我的第一个想法:能否选出尽量少的特殊点使得他们等于 -w*h,而其他不是特殊点的位置等于1,并且每个w*h的矩阵都包含至少一个特殊点。
再想一想发现让 i%w==0 且 j%h==0 的点 (i,j) 作为特殊点是最优的了(可能有相同效果的方案但是没有更优的了).
于是先这么填然后看最后的总和是否>0输出答案。。。
果断的交了一发,于是WA了 QWQ
那么问题出在哪里呢?
主要是没有动手算。
于是便有了代码注释上的正解QWQ (这里补充一下代码注释里的原理,如果y=1的话那么后面那个-1占的权重太大了很可能会使结果<=0,让y变大就相当于让-1的绝对值减小,使得 y - 1/w/h 与 y 的相对差尽量小,小到可以忽略的时候就是正解啦)
// n/w * m/h 个特殊点
// 设特殊点权值为x,其他点为y,那么满足:
// x + y *(w*h-1) < 0 => x = y * (1 - w*h) - 1
// n/w * m/h * (x-y) + y * n * m > 0 #include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=505; int a[N][N],n,m,w,h,v;
ll sum=0; int main(){
scanf("%d%d%d%d",&n,&m,&w,&h),v=1000*(1-w*h)-1;
for(int i=w;i<=n;i+=w)
for(int j=h;j<=m;j+=h) a[i][j]=v;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]) sum+=(ll)a[i][j];
else sum+=(ll)1000,a[i][j]+=1000; if(sum<=0){ puts("No"); return 0;} puts("Yes");
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++) printf("%d ",a[i][j]);
puts("");
} return 0;
}
AGC 016 C - +/- Rectangle的更多相关文章
- 【Atcoder】AGC 016 C - +/- Rectangle
[题意]给定大矩阵的边长H和W,给每格填数(<=|10^9|),要求大矩形总和为正数,而每个h*w的小矩形总和为负数,求构造方式. [算法]数学 [题解]结论题. ★当h|H&& ...
- AGC 016 F - Games on DAG(状压dp)
题意 给你一个有 \(n\) 个点 \(m\) 条边 DAG 图,点的标号和拓扑序一致. 现在有两个人进行博弈,有两个棋子分别在 \(1, 2\) 号点上,需要不断移动到它指向的点上. 如果当前两个点 ...
- AtCoder Grand Contest 016 C - +/- Rectangle
题目传送门:https://agc016.contest.atcoder.jp/tasks/agc016_c 题目大意: 给定整数\(H,W,h,w\),你需要判断是否存在满足如下条件的矩阵,如果存在 ...
- AGC 016C.+/- Rectangle(思路 构造)
题目链接 首先想到同样例1的构造方式.即不得不填负的格子填\(-h*w\),其余填\(1\).直接这样能过二三十个点. 只这样不对.比如1 4 1 3,会输出无解(会填[1 1 -3 1]).怎么改呢 ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数016,xld,xld轮廓
<zw版·Halcon-delphi系列原创教程> Halcon分类函数016,xld,xld轮廓 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“ ...
- 周末惊魂:因struts2 016 017 019漏洞被入侵,修复。
入侵(暴风雨前的宁静) 下午阳光甚好,想趁着安静的周末静下心来写写代码.刚过一个小时,3点左右,客服MM找我,告知客户都在说平台登录不了(我们有专门的客户qq群).看了下数据库连接数,正常.登录阿里云 ...
- [LeetCode] Perfect Rectangle 完美矩形
Given N axis-aligned rectangles where N > 0, determine if they all together form an exact cover o ...
- [LeetCode] Max Sum of Rectangle No Larger Than K 最大矩阵和不超过K
Given a non-empty 2D matrix matrix and an integer k, find the max sum of a rectangle in the matrix s ...
- [LeetCode] Smallest Rectangle Enclosing Black Pixels 包含黑像素的最小矩阵
An image is represented by a binary matrix with 0 as a white pixel and 1 as a black pixel. The black ...
随机推荐
- 【BZOJ】3779 重组病毒
[算法]Link-Cut Tree+线段树(维护DFS序) [题解]整整三天……T_T 这篇题解比较资瓷:permui 这道题虽然树形态没有变化,但用lct写的原因在于把题目中的操作一进行了神转化:每 ...
- 【BZOJ】1229 [USACO2008 Nov]toy 玩具
[算法]三分+贪心 [题解] 数据范围小的版本:餐巾计划 这题不是使用最小费用流的下凸函数,因为这题是要满足最大流,那么这题到底在三分什么? 三分的这个函数,其实是总费用随卖出玩具量变化而变化的函数, ...
- 2015多校第6场 HDU 5354 Bipartite Graph CDQ,并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5354 题意:求删去每个点后图是否存在奇环(n,m<=1e5) 解法:很经典的套路,和这题一样:h ...
- 经典卷积网络模型 — LeNet模型笔记
LeNet-5包含于输入层在内的8层深度卷积神经网络.其中卷积层可以使得原信号特征增强,并且降低噪音.而池化层利用图像相关性原理,对图像进行子采样,可以减少参数个数,减少模型的过拟合程度,同时也可以保 ...
- 手机User-Agent
iPhone 6(IOS 8.1.2):Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_2 like Mac OS X) AppleWebKit/600.1.4 (KH ...
- C#面向对象(OOP)入门—第二天—多态和继承(继承)
介绍: 第一天的内容主要是不同情形下的方法重载.这一部分则主要讲面向对象中继承的概念.首先用一个要点图形来定义继承. 继承 一个简单的例子: ClassA: class ClassA:ClassB { ...
- OpenCV利用矩阵实现图像旋转
利用OpenCV的矩阵操作实现图像的逆时针旋转90度操作 代码 Mat src = imread("C:\\Users\\fenggl\\Desktop\\测试.jpg",MREA ...
- python 基础习题
1.8<<2等于? 8 ---> 1000 32 ---> 100000 -----------结果--- 32 2.通过内置函数计算5除以2的余数 print(dir()) ...
- [PAT] 1142 Maximal Clique(25 分)
1142 Maximal Clique(25 分) A clique is a subset of vertices of an undirected graph such that every tw ...
- 利用flex布局来column分布
html代码 <div class='items'> <div class='item'></div> <div class='item'></d ...