比赛链接:https://atcoder.jp/contests/abc173/tasks

A - Payment

题意

计算只用 $1000$ 元支付某个价格 $n$ 的找零是多少。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
int n; cin >> n;
cout << (1000 - n % 1000) % 1000 << "\n";
}

B - Judge Status Summary

题意

给出 $n$ 个不外乎为 "AC", "WA", "TLE", "RE" 的字符串,统计四个字符串的个数。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
int n; cin >> n;
map<string, int> mp;
for (int i = 0; i < n; i++) {
string s; cin >> s;
++mp[s];
}
for (auto s : {"AC", "WA", "TLE", "RE"})
cout << s << " x " << mp[s] << "\n";
}

C - H and V

题意

给出一个 $h \times w$ 的黑白方阵,可以选择将一些行和列涂红,问使得方阵中刚好有 $k$ 个黑方块的方案个数。

题解一

$dfs$ 枚举所有情况。

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 10; int h, w, k, ans;
char C[N][N];
bool choose_row[N];
bool choose_col[N]; void dfs(int row, int col) {
if (row <= h) {
choose_row[row] = true;
dfs(row + 1, col);
choose_row[row] = false;
dfs(row + 1, col);
} else if (col <= w) {
choose_col[col] = true;
dfs(row, col + 1);
choose_col[col] = false;
dfs(row, col + 1);
} else {
char MP[N][N] = {};
for (int i = 1; i <= h; i++)
for (int j = 1; j <= w; j++)
MP[i][j] = C[i][j];
for (int i = 1; i <= h; i++)
if (choose_row[i])
for (int j = 1; j <= w; j++)
MP[i][j] = '.';
for (int i = 1; i <= w; i++)
if (choose_col[i])
for (int j = 1; j <= h; j++)
MP[j][i] = '.';
int cnt = 0;
for (int i = 1; i <= h; i++)
for (int j = 1; j <= w; j++)
if (MP[i][j] == '#')
++cnt;
if (cnt == k) ++ans;
}
} int main() {
cin >> h >> w >> k;
for (int i = 1; i <= h; i++)
for (int j = 1; j <= w; j++)
cin >> C[i][j];
dfs(1, 1);
cout << ans << "\n";
}

题解二

将每行或列的选取状态压缩为二进制的 $0$ 或 $1$,枚举行和列的所有状态,每次只考虑未涂的行和列的方块。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
int h, w, k; cin >> h >> w >> k;
char MP[h][w] = {};
for (int i = 0; i < h; i++)
for (int j = 0; j < w; j++)
cin >> MP[i][j];
int ans = 0;
for (int maskR = 0; maskR < (1 << h); maskR++) {
for (int maskC = 0; maskC < (1 << w); maskC++) {
int cnt = 0;
for (int i = 0; i < h; i++)
for (int j = 0; j < w; j++)
if (!((maskR >> i) & 1) and !((maskC >> j) & 1) and MP[i][j] == '#')
++cnt;
if (cnt == k) ++ans;
}
}
cout << ans << "\n";
}

D - Chat in a Circle

题意

可以将 $n$ 个数按照任意顺序插进一个空圈中,每次插入一个数的收益为相邻数的最小值,问最大收益为多少。

题解

先用较大的一半数构成一个圈,然后将剩下较小的一半数插入两个较大的数之间,注意最后插入的较小数的收益与 $n$ 的奇偶性有关。

代码

#include <bits/stdc++.h>
using ll = long long;
using namespace std;
int main() {
int n; cin >> n;
int a[n] = {};
for (int i = 0; i < n; i++)
cin >> a[i];
sort(a, a + n, greater<int>());
ll ans = 0;
int half = (n + 1) / 2;
ans += accumulate(a, a + half - 1, 0LL);
ans += accumulate(a + 1, a + 1 + n - half, 0LL);
if (n % 2 == 0)
ans -= a[half], ans += a[half - 1];
cout << ans << "\n";
}

AtCoder Beginner Contest 173的更多相关文章

  1. AtCoder Beginner Contest 173 题解

    AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...

  2. AtCoder Beginner Contest 173 E Multiplication 4 分类讨论 贪心

    LINK:Multiplication 4 害怕别人不知道我有多菜 那就上张图: 赛时 太慌了 (急着AK 题目不难却暴露我的本性 根本不思考无脑写 wa了还一直停不下来的debug 至少被我发现了1 ...

  3. AtCoder Beginner Contest 173 E - Multiplication 4 (思维)

    题意:有\(n\)个数,从中选\(k\)个数累乘,求最大的乘积\((mod\ 10^9+7)\). 题解: 1.假如全是负数,并且选奇数个,那么从小到大选. 2.否则,考虑当前状态,假如\(k\)是奇 ...

  4. AtCoder Beginner Contest 173 D - Chat in a Circle (贪心)

    题意:有一个空环和\(n\)个点,每次可以选择一个点放在空环上,并且获得周围两个点中最小的那个的权值,问能获得的最大的权值是多少? 题解:我们每次都优先放最大的进去,注意每次放的时候都要将这个点放在当 ...

  5. AtCoder Beginner Contest 173 C - H and V (二进制枚举)

    题意:有一张图,.表示白色,#表示黑色,每次可以将多行和多列涂成红色(也可不涂),问有多少种方案,使得剩下黑点的个数为\(k\). 题解:又学到了新的算法qwq,因为这题的数据范围很小,所以可以用二进 ...

  6. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  7. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  8. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  9. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

随机推荐

  1. Go GRPC 入门(二)

    前言 最近较忙,其实准备一篇搞定的 中途有事,只能隔了一天再写 正文 pb.go 需要注意的是,在本个 demo 中,客户端与服务端都是 Golang,所以在客户端与服务端都公用一个 pb.go 模板 ...

  2. Server 2012 R2 Standard 安装运行PCS7时出现“无法启动此程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll”解决方法

    网上看到了这篇文章https://www.jianshu.com/p/21f4bb8b5502,根据思路自己尝试,解决了丢失的问题.提示[计算机中丢失api-ms-win-crt-runtime-l1 ...

  3. 【JDBC核心】批量插入

    批量插入 批量执行 SQL 语句 当需要成批插入或者更新记录时,可以采用 Java 的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理.通常情况下比单独提交处理更有效率. JDBC 的批量 ...

  4. 超过varchar定义长度

    mysql> select version();+------------+| version() |+------------+| 5.1.73-log |+------------+1 ro ...

  5. Java-Servlet知识总结

    目录 Servlet概述 为什么要学习Servlet 什么是 Servlet 工作流程 生命周期 处理请求的方法 HttpServletRequest 和 HttpServletResponse Ht ...

  6. CodeMonkey少儿编程第2章 turnTo对象

    目标 了解对象的概念 了解方法与对象的关系 掌握turnTo指令的用法 在开始本章的学习之前,我们先来复习一下上一章的知识点. 在第1章中,我们学会了在这个游戏中最简单的两个指令. step x 其中 ...

  7. centos7虚拟机开启端口后 外部不能访问的问题

    转载 https://blog.csdn.net/u012045045/article/details/104219823 虚拟机新开了5005端口,系统内部是显示开了的(wget 192.168.4 ...

  8. 15V转5V转3.3V转3V芯片,DC-DC和LDO

    15V电压是属于一般电压,降压转成5V电压,3.3V电压和3V电压,适用于这个电压的DC-DC很多,LDO也是有可以选择的.LDO芯片如PW6206,PW8600等.DC-DC芯片如:PW2162,P ...

  9. 1.5V转3.3V升压电路图和1.5V转3.3V的电源芯片

    1.5V转3.3V的电路图需要材料:PW5100芯片,2个贴片电容,1个贴片电感.即可组成一个DC-DC同步升压高效率电路图,可提供稳定的3.3V输出电压. 1.5V转3.3V的电源芯片 1.5V转3 ...

  10. 动态改变div标签中的内容

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...