Atcoder C - +/- Rectangle(思维+构造)
题目链接:http://agc016.contest.atcoder.jp/tasks/agc016_c
题解:挺简单的构造,很容易想到的构造方法就是(h*w)的小矩阵里其他值赋值为1,最后一个赋值为(h*w)。这只是最基础的构造,然后
判断count - (H * W - count) * (h * w - 1)(count表示基础构造后正数的个数)是否大于0,如果大于0都可以构造,怎么构造就是将正的不断+1,负的不断-(h*w-1)
就行。如果小于等于0就要看初始的sum值(sum表示基础构造后全部数的和)如果sum大于0就行,否则不能构造。
#include <iostream>
#include <cstring>
using namespace std;
const int M = 5e2 + 10;
int mmp[M][M] , ans[M][M];
int main() {
int H , W , h , w;
cin >> H >> W >> h >> w;
for(int i = 1 ; i <= H ; i++) {
for(int j = 1 ; j <= W ; j++) {
ans[i][j] = 1;
}
}
for(int i = 1 ; i <= H ; i++) {
if(i % h == 0) {
for(int j = 1 ; j <= W ; j++) {
if(j % w == 0) {
ans[i][j] = -(h * w);
}
}
}
}
int count = 0 , cnt = 0;
for(int i = 1 ; i <= H ; i++) {
for(int j = 1 ; j <= W ; j++) {
if(ans[i][j] > 0) count++;
cnt += ans[i][j];
}
}
if(count - (H * W - count) * (h * w - 1) <= 0 && cnt <= 0) cout << "No" << endl;
else {
cout << "Yes" << endl;
int sum = 0;
for(int i = 1 ; i <= H ; i++) {
for(int j = 1 ; j <= W ; j++) {
sum += ans[i][j];
}
}
int num1 = count , num2 = H * W - count;
int dif = num1 - num2 * (h * w - 1);
if(sum <= 0) {
int gg = -sum;
int ad = gg / dif + 1;
for(int i = 1 ; i <= H ; i++) {
for(int j = 1 ; j <= W ; j++) {
if(ans[i][j] > 0) ans[i][j] += ad;
else ans[i][j] -= ad * (h * w - 1);
}
}
}
for(int i = 1 ; i <= H ; i++) {
for(int j = 1 ; j <= W ; j++) {
cout << ans[i][j] << ' ';
}
cout << endl;
}
}
return 0;
}
Atcoder C - +/- Rectangle(思维+构造)的更多相关文章
- AtCoder - 2282 (思维+构造)
题意 https://vjudge.net/problem/AtCoder-2282 告诉你sx,sy,tx,ty,问从s走到t,再从t走到s,再从s走到t,再从t回到s的最短路,每次只能上下左右选一 ...
- hdu4671 思维构造
pid=4671">http://acm.hdu.edu.cn/showproblem.php? pid=4671 Problem Description Makomuno has N ...
- 思维/构造 HDOJ 5353 Average
题目传送门 /* 思维/构造:赛后补的,当时觉得3题可以交差了,没想到这题也是可以做的.一看到这题就想到了UVA_11300(求最小交换数) 这题是简化版,只要判断行不行和行的方案就可以了,做法是枚举 ...
- Atcoder Grand Contest 031C(构造,思维,异或,DFS)
#include<bits/stdc++.h>using namespace std;int n,a,b,sum;void dfs(int x,int y,int ban){ if( ...
- Pythagorean Triples毕达哥斯拉三角(数学思维+构造)
Description Katya studies in a fifth grade. Recently her class studied right triangles and the Pytha ...
- AGC 016C.+/- Rectangle(思路 构造)
题目链接 首先想到同样例1的构造方式.即不得不填负的格子填\(-h*w\),其余填\(1\).直接这样能过二三十个点. 只这样不对.比如1 4 1 3,会输出无解(会填[1 1 -3 1]).怎么改呢 ...
- A Mist of Florescence CodeForces - 989C(思维构造)
题意: 让你构造一个图,使得A,B,C,D的个数为给定的个数,上下左右连通的算一个. 哎呀 看看代码就懂了..emm..很好懂的 #include <bits/stdc++.h> usin ...
- AtCoder Non-decreasing(数学思维)
题目链接:https://abc081.contest.atcoder.jp/tasks/arc086_b 题目大意:有n个数,最多可以执行2*n次操作,每次可以选择将ai加到aj上,最终使得该序列满 ...
- Educational Codeforces Round 53C(二分,思维|构造)
#include<bits/stdc++.h>using namespace std;const int N=1e6+6;int x[N],y[N];int sx,sy,n;char s[ ...
随机推荐
- Linux命令- echo、grep 、重定向、1>&2、2>&1的介绍
最近笔试遇到一道题,关于Linux命令的,题目如下 下面两条命令分别会有怎样的输出 echo hello 1>&2 |grep aaa echo hello 2>&1 ...
- Activiti6系列(2)- 运行和编译
前言 Activiti6.0在官网已经无法下载了,需要在Github上下载. 下载地址: https://github.com/Activiti/Activiti/releases/download/ ...
- 学习Python的相关资料
Learning python the hardway Python Tip社区啄木鸟社区编程指南社区 Python基础教程MIT 计算机科学及其导论Harward:计算机科学CS50Crossin的 ...
- JS中map()与forEach()的区别和用法
相同点: 1.都是循环遍历数组中的每一项 2.每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组) 3.匿名函数中的this都是指向window 4 ...
- Eclipse高级操作 远程调试
Eclipse高级操作 远程调试 JPDA是SUN JDK自带的远程调试机制.它提供了一套标准的调试接口,可以从虚拟机一级允许外界用特定协议探测虚拟机内部的运作细节.只要你装了JDK1.2以上的SUN ...
- [原创实践]IBM thinkpad T61制作和使用recovery光盘进行出厂系统恢复
制作系统恢复盘 之前制作了系统恢复光盘,包含Product recovery 光盘1和光盘2,rescure and recovery光盘. 联想笔记本XP系统有一个硬盘分区是用来做恢复的,双击硬盘即 ...
- redis高可用之DNS篇
1. 背景 例如,存在一套redis主从(主从节点在不同的主机上),应用程序通过主库的ip进行读写操作. 但是,主库一旦出现故障,虽然有从库,且从库提升为主库,但是应用程序如果想使用从库则必须修改配 ...
- 前端小知识-html5
一.伪类与伪元素 为什么css要引入伪元素和伪类:是为了格式化文档树以外的信息,也就是说,伪类和伪元素是用来修饰不在文档树中的部分 伪类用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根 ...
- C#自动计算字符串公式的四种方法
原地址:https://blog.csdn.net/ifu25/article/details/53292134 四种方式 简单粗暴:利用SQL数据库计算 功能强大:利用JavaScript计算 看不 ...
- 如何:从 bool? 安全地强制转换为 bool(C# 编程指南)
bool? 可以为 null 的类型可以包含三个不同的值:true.false 和 null.因此,bool? 类型不能用于条件语句,如 if.for 或 while.例如,此代码无法编译,并将报告编 ...