比赛链接:https://codeforces.com/contest/1371

A. Magical Sticks

题意

有 $n$ 根小棍,长度从 $1$ 到 $n$,每次可以将两根小棍连接起来,问最多有多少根小棍长度相同。

题解

如:1 2 3 4 5,相同长度最多的情况为 1+4  2+3  5 。

即 $(1 + n - 1), (2 + n - 2), \dots$,所以答案为 $\lfloor \frac{n - 1}{2} \rfloor + 1$ 。

代码

#include <bits/stdc++.h>
using namespace std; void solve() {
int n; cin >> n;
cout << (n - 1) / 2 + 1 << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}

B. Magical Calendar

题意

日历的一行为一周,问当一周的天数从 $1$ 到 $r$ 时,连续涂 $n$ 天的形状共有多少种。

题解

当 $r_i < n$ 时,连续涂 $n$ 天的形状共有 $r_i$ 种,因为第一天可以从 $r_i$ 个点开始涂,且形状都不相同;

当 $r_i \ge n$ 时,此时无论从哪一天开始涂,形状都是一条长方形。

所以:

  • 若 $r<n$,答案即 $1+2+ \dots + r = \frac{r(r+1)}{2}$
  • 若 $r \ge n$,答案即 $1+2+ \dots + (n - 1) + 1 = \frac{n(n-1)}{2} + 1$

代码

#include <bits/stdc++.h>
using ll = long long;
using namespace std; void solve() {
ll n, r; cin >> n >> r;
cout << (r < n ? r * (r + 1) / 2 : n * (n - 1) / 2 + 1) << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}

C. A Cookie for You

题意

有 $a$ 个香草饼干,$b$ 个巧克力饼干,第一种客人有 $n$ 个,第二种客人有 $m$ 个。

第一种客人行动如下:如果香草饼干的个数多于巧克力饼干,吃一个香草饼干,否则吃一个巧克力饼干。

第二种客人行动如下:如果香草饼干的个数多于巧克力饼干,吃一个巧克力饼干,否则吃一个香草饼干。

如果一个客人要吃的饼干没有了,他就会生气,判断是否存在一种使所有客人都不会生气的方案。

题解

简化一下两种客人的行动:

第二种客人每次都会吃最少的一种饼干,一定会使两种饼干中的最小值发生变化,所以第二种客人吃的饼干数不会多于初始时两种饼干中的最小值。

第一种客人可以视为哪个多吃哪个,不一定会使两种饼干的最小值发生变化,所以应先让第二种客人吃最少的一种饼干,余下的饼干总数不少于第一种客人的个数就可以了。

代码

#include <bits/stdc++.h>
using ll = long long;
using namespace std; void solve() {
ll a, b, n, m; cin >> a >> b >> n >> m;
cout << (a + b >= n + m and min(a, b) >= m ? "Yes" : "No") << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}

D. Grid-00100

题意

向 $n \times n$ 的空方阵中填入 $k$ 个 $1$,使得每行、列 $1$ 的个数的最值差最小。

题解

首先最容易想到的是先按中央斜对角线填:

但是斜对角线长度不一,接下来就会变成这样:

此时第 $6$ 个 $1$ 显然填右上角最合适,即:

由此猜测从中央左下方和右上角依次填对角线。

值得一提的是,如果将左下角的对角线和右上角对应的对角线连起来,长度和中央对角线是相同的,同为 $n$,由此有了下面的简化写法。

代码

#include <bits/stdc++.h>
using namespace std; void solve() {
int n, k; cin >> n >> k;
cout << (k % n == 0 ? 0 : 2) << "\n";
int MP[n][n] = {};
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if (k > 0) {
MP[j][(i + j) % n] = 1;
--k;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
cout << MP[i][j];
cout << "\n";
}
} int main() {
int t; cin >> t;
while (t--) solve();
}

Codeforces Round #654 (Div. 2)的更多相关文章

  1. Codeforces Round #654 (Div. 2) A~E 题解

    LINK:CF R 654 div2 前言:F题是一个线段树分类讨论的题目 比赛的时候没看 赛后感觉没什么意思 所以咕掉了. 记事:第一次笼统的写一场比赛的题目 可能是我这场比赛打的太差了 题目不难 ...

  2. Codeforces Round #654 (Div. 2) B. Magical Calendar (结论)

    题意:你需要在长度从\(1\)~\(k\),宽度无限的网格图中造图形(每个点四周必须连通),问最多能造出多少种不同的图形. 题解:感觉没什么好说的,就是画图找规律,如果\(r\ge n\)的话(即没有 ...

  3. Codeforces Round #654 (Div. 2) D. Grid-00100 (构造)

    题意:构造一个\(n\)x\(n\)只含\(0\)和\(k\)个\(1\)的矩阵,统计每一行每一列\(1\)的sum,然后构造一个权值最大行和最小行的差的平方加权值最大列和最小列的差的平方的最小和(\ ...

  4. Codeforces Round #654 (Div. 2) C. A Cookie for You (思维)

    题意:有\(a\)个蛋糕,\(b\)个巧克力,第一类人有\(n\)个,总是吃多的东西(若\(a>b\),吃蛋糕,否则吃巧克力),第二类人有\(m\)个,总是吃少的,可以随便调整这两类人吃的顺序, ...

  5. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  6. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  7. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  8. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  9. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

随机推荐

  1. python virtualenv 基本使用

    下载 pip install virtualenv 校验是否成功 virtualenv --version 使用 创建env环境 要写一个新项目,使用env先创建环境 cd xx\xx\xx\ # 进 ...

  2. Linux SSH , SCP 建立信任关系(免密传输)

    最近有个需求,Jenkins需要将war传输到各个项目节点中,所以需要远程执行各个节点的shell脚本.但是中间有个输入密码的过程,在自动化部署中是行不通的,故需要增加免密登录.具体如下: 如果想在  ...

  3. SDUST数据结构 - 19级期末考试

    判断题: 选择题: 函数题: 6-1 统计二叉树叶子结点个数: 题目: 裁判测试程序样例: #include <stdio.h> #include <stdlib.h> typ ...

  4. WPF NET5 Prism8.0的升级指南

    前言 ​ 曾经我以学习的目的写了关于在.NET Core3.1使用Prism的系列文章.NET Core 3 WPF MVVM框架 Prism系列文章索引,也谢谢大家的支持,事实上当初的版本则是Pri ...

  5. 哈佛商学院MBA管理课程

    课程示例:向上管理 课程 什么是向上管理? 了解自己和上司 建立合作关系 与上司进行有效沟通 管理糟糕的上司 向上管理课程内容: 全部课程目录 全部为离线文件(可有偿提供) 包括课程的全部内容,视频. ...

  6. 【ELK】elastalert 日志告警

    一.环境 系统:centos7 elk 版本:7.6.2 1.1 ElastAlert 工作原理 周期性的查询Elastsearch并且将数据传递给规则类型,规则类型定义了需要查询哪些数据. 当一个规 ...

  7. 备份和还原Windows DHCP服务器

    在本教程中,您将学习如何使用DHCP控制台和PowerShell备份和还原Windows DHCP服务器. 您是否曾经经历过DHCP服务器崩溃或故障?在设备开始重新启动之前,一切都会平静. 用户将抱怨 ...

  8. CentOS 7.2系统安装步骤

    CentOS 7.2系统安装步骤 1.把系统U盘插到服务器上,然后启动服务器进入BIOS界面选择U盘启动. 根据服务器的不同,进入BIOS界面的按钮也不一样,主流的有F10.F11.F12.F2.ES ...

  9. Golang调用windows下的dll动态库中的函数 Golang 编译成 DLL 文件

    Golang调用windows下的dll动态库中的函数 package main import ( "fmt" "syscall" "time&quo ...

  10. Centos 7 安装 erlang

    https://www.cnblogs.com/swyy/p/11582309.html https://blog.csdn.net/qq_20492999/article/details/81254 ...