比赛链接: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. CTF常见编码及加解密(超全)

    @ 目录 前言 常见CTF编码及加解密 补充 ASCII编码 base家族编码 MD5.SHA1.HMAC.NTLM等类似加密型 1.MD5 2.SHA1 3.HMAC 4.NTLM 5.类似加密穷举 ...

  2. Docker学习笔记之使用Docker数据卷

    Docker数据卷将数据存储到主机而非容器,多个容器需要共享数据时,常常使用数据卷. 1. 为容器设置数据卷(不指定主机目录) 2. 容器与主机之间.容器与容器之间共享数据卷(指定主机目录) 3. 使 ...

  3. 一次snapshot迁移引发的Hbase RIT(hbase2.1.0-cdh6.3.0)

    1. 问题起因 通过snapshot做跨集群数据同步时,在执行拷贝脚本里没有指定所有者及所有组,导致clone时没有权限,客户端卡死.master一直报错,经过一系列操作后,导致RIT异常. 2. 异 ...

  4. mysql—if函数

    在mysql中if()函数的具体语法如下:IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值. 开始实 ...

  5. Windows+.Net Framework+svn+IIS在Jenkins上的自动化部署入门

    关于Jenkins的使用及安装,上一篇文章我已经介绍过了,Windows+.NetCore+git+IIS在Jenkins上的自动化部署入门.这篇主要是在jenkins如何安装SVN和MSBuild. ...

  6. [Usaco2016 Dec]Moocast

    原题链接https://www.lydsy.com/JudgeOnline/problem.php?id=4749 可以对于每个点\(i\),往跟\(i\)距离小于等于\(p[i]\)的点\(j\)都 ...

  7. HTTP Keep-Alive模式客户端与服务器如何判定传输完成

    目录 长连接是什么 服务器如何知道已经完全接受客户端发送的数据 客户端如何知道已经完全接受服务端发送的数据 Transfer-Encoding transfer-coding与Content-Leng ...

  8. uni-app开发经验分享十五: uni-app 蓝牙打印功能

    最近在做uni-app项目时,遇到了需要蓝牙打印文件的功能需要制作,在网上找到了一个教程,这里分享给大家. 引入tsc.js 简单得引入到自己所需要得页面中去,本次我们只要到了标签模式,他同时还有账单 ...

  9. 大促密集,CDN如何保障电商体验如丝般顺滑?

    简介: 前不久,阿里云技术天团空降CSDN在线峰会,对核心技术竞争力进行解读.其中,阿里云高级技术专家曾福华分享了<双11: CDN如何保障电商大促如丝般顺滑>的议题.俗话说:养兵千日,用 ...

  10. 小白都看得懂的Javadoc使用教程

    Javadoc是什么 官方回答: Javadoc is a tool for generating API documentation in HTML format from doc comments ...