AtCoder Beginner Contest 173 A~D 题解

news/2024/11/15 19:45:31/文章来源:https://www.cnblogs.com/stanleys/p/18403445/abc173

A - Payment

题目大意

如果使用价值\(1000\)元的纸币(假设有)支付\(N\)元,服务员会找多少钱?

\(1\le N\le 10000\)

输入格式

\(N\)

输出格式

一行,即服务员找的钱数。

样例

输入 输出
1900 100
3000 0

分析

特判:
如果\(N\)除以\(1000\)能整除,那么不需要找钱,输出\(0\)
如果有余,输出\(1000 - (n\mod1000)\)

代码

#include <cstdio>
using namespace std;int main(int argc, char** argv)
{int n;scanf("%d", &n);if(n % 1000 == 0) puts("0");else printf("%d\n", 1000 - n % 1000);return 0;
}

B - Judge Status Summary

题目大意

某人完成了某道算法竞赛题,有ACWATLERE四种结果(status)。题目有\(N\)个测试样例,测试结果分别为\(S_1, S_2, \dots, S_N\),请分别统计并输出ACWATLERE的个数。(格式详见输出格式)

\(1\le N\le 10^5\)
\(S_i\)ACWATLERE

输入格式

\(N\)
\(S_1\)
\(S_2\)
\(:\)
\(S_N\)

输出格式

AC x [AC的个数]
WA x [WA的个数]
TLE x [TLE的个数]
RE x [RE的个数]

注意:这里的“乘号”不是“×”,而是英文字母“x”!

样例

样例输入1

6
AC
TLE
AC
AC
WA
TLE

样例输出1

AC x 3
WA x 1
TLE x 2
RE x 0

ACWATLERE分别有\(3, 1, 2, 0\)个。

样例输入2

10
AC
AC
AC
AC
AC
AC
AC
AC
AC
AC

样例输出2

AC x 10
WA x 0
TLE x 0
RE x 0

他全都AC了……

分析

要统计个数,可以用别的方法,但我个人喜欢偷懒,使用了map(似乎大材小用了……)

代码

#include <iostream>
#include <string>
#include <map>
using namespace std;map<string, int> cnt;int main(int argc, char** argv)
{ios::sync_with_stdio(false);int n;cin>>n;for(int i=0; i<n; i++){string s;cin>>s;cnt[s] ++;}cout<<"AC x "<<cnt["AC"]<<endl;cout<<"WA x "<<cnt["WA"]<<endl;cout<<"TLE x "<<cnt["TLE"]<<endl;cout<<"RE x "<<cnt["RE"]<<endl;return 0;
}

C - H and V

题目大意

给定\(H\)\(W\)列的方格。在第\(i\)\(j\)列(\(1\le i\le H\), \(1\le j\le W\))的方格是\(c_i\)\(_,\)\(_j\)。它可能是#(黑色)或.(白色)。
可以选某些行和列(都可以不选),将行和列上的方格全部涂成红色。

给定整数\(K\)。有多少种选法使图中只剩\(K\)个黑方格?

\(1\le H, W\le 6\)
\(1\le K\le HW\)
\(c_i\)\(_,\)\(_j\)#.

输入格式

\(H~W~K\)
\(c_{1,1}~c_{1,2}~\dots~c_{1,W}\)
\(c_{2,1}~c_{2,2}~\dots~c_{2,W}\)
\(\vdots\)
\(c_{H,1}~c_{H,2}~\dots~c_{1,W}\)

输出格式

一行,即符合条件的选法数量。

样例

样例输入1

2 3 2
..#
###

样例输出1

5

有五种方法:

  • \(1\)行和第\(1\)
  • \(1\)行和第\(2\)
  • \(1\)行和第\(3\)
  • \(1\)\(2\)
  • \(3\)

样例输入2

2 3 4
..#
###

样例输出2

1

只有一种方法:啥也不干!

样例输入3

2 2 3
##
##

样例输出3

0

无解。

样例输入4

6 6 8
..##..
.#..#.
#....#
######
#....#
#....#

博主提示:这是最大的数据,如果程序在本地运行此样例没有超时,则提交后不会TLE!

样例输出4

208

分析

本题没有巧妙的方法,且数据范围较小,所以使用二进制法枚举行和列。
因为输入颜色只有黑或白,所以题目中“涂成红色”只要涂成白色(.)即可。

代码

#include <cstdio>
#include <cstring>
#define maxn 6
using namespace std;char c[maxn][maxn];
int h, w, k;
int cnt = 0;int main(int argc, char** argv)
{scanf("%d%d%d", &h, &w, &k);for(int i=0; i<h; i++)scanf("%s", c[i]);int m1 = 1 << h, m2 = 1 << w, ans = 0;for(int hs=0; hs<m1; hs++)for(int ws=0; ws<m2; ws++){char tmp[maxn][maxn]; // 不能修改原数组,所以复制一个数组memcpy(tmp, c, sizeof(c));for(int i=0; i<h; i++) // 行if(hs & (1 << i)) for(int j=0; j<w; j++) // 列tmp[i][j] = '.';for(int i=0; i<w; i++) // 列if(ws & (1 << i)) for(int j=0; j<h; j++) // 行tmp[j][i] = '.'; // 注意:绝对不能写成tmp[i][j]!int cnt = 0;for(int i=0; i<h; i++)for(int j=0; j<w; j++) if(tmp[i][j] == '#')cnt ++;if(cnt == k) ans ++;}printf("%d\n", ans);return 0;
}

D - Chat in a Circle

题目大意

\(N\)个人要在某地会和,编号为\(i\)的人的友情值为整数\(A_i\)。这些人要围成一圈,每人到达该地后会在某个位置插入圈子。每个人的舒适度是入圈时相邻两个人的友情值中较小的一个(第一个人的舒适度为\(0\))。现在,由你决定他们的入圈顺序和插入位置,问:\(N\)个人的最大舒适度之和是多少?

\(2\le N\le 2\times10^5\)
\(1\le A_i\le 10^9\)

输入格式

\(N\)
\(A_1~A_2~\dots~A_N\)

输出格式

一行,即\(N\)个人的最大舒适度之和。

样例

样例输入1

4
2 2 1 3

样例输出1

7

最大的舒适度之和为\(0+3+2+2=7\)
舒适度

样例输入2

7
1 1 1 1 1 1 1

样例输出2

6

分析

贪心算法。先从大到小排序(这是顺序),再将每个人在舒适度最大的地方入圈。
priority_queue搞定。

代码

#include <cstdio>
#include <queue>
#include <algorithm>
#define maxn 200005
using namespace std;int a[maxn], n;struct Position
{int lf, rf, comfort;inline Position(int l, int r){lf = l, rf = r;comfort = min(l, r);}inline bool operator<(const Position& p) const{return comfort < p.comfort;}
};priority_queue<Position> q;inline bool cmp(int x, int y) {return x > y;}int main(int argc, char** argv)
{scanf("%d", &n);for(int i=0; i<n; i++)scanf("%d", a + i);sort(a, a + n, cmp);q.push(Position(a[0], a[1]));long long res = a[0];for(int i=2; i<n; i++){Position p = q.top();if(q.size() > 1) q.pop();res += p.comfort;q.push(Position(a[i], p.lf));q.push(Position(a[i], p.rf));}printf("%lld\n", res);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/794182.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AtCoder Beginner Contest 188 A~D 题解

A - Three-Point Shot 题目大意 有两个球队,分别得到\(X\)分和\(Y\)分,问得分较少的球队能否在获得三分后超越对方。 \(0\le X,Y\le 100\) \(X \ne Y\) \(X\)和\(Y\)都是整数。 输入格式 \(X~Y\) 输出格式 如果能,输出Yes;否则,输出No。 样例X Y 输出3 5 Yes分析 这个不用…

Eclipse安装包下载慢解决方法

最近开始学习Java,使用经典的Eclipse IDE,结果发现下载太慢……问题分析Eclipse的下载依赖于其他镜像,(在我这里)默认为朝鲜的镜像(可能在不同电脑中默认不同):点击Select Another Mirror:选择中国的镜像:

程序无法启动,因为您的计算机缺少msvcr71.dll。

背景 打开CrystalTile2这个软件出现此提示。 解决 有很多解决办法,最简单粗暴也是见效最快的就是直接从网上下载dll文件放到对应位置。 下载 https://msvcr71.dll-box.com/zh/自己存了一份,以免网址失效(虽然按道理来说一般不会失效)。 https://www.123pan.com/s/EhW3jv-IW…

Panasonic Programming Contest 2020 C (Sqrt Inequality) 题解

题目大意 输入三个整数\(a\),\(b\),\(c\),如果 \(\sqrt a + \sqrt b < \sqrt c\) 成立,输出Yes,否则输出No。 样例 输入 #1 2 3 9输出 #1 No\(\sqrt 2 + \sqrt 3 < \sqrt 9\) 不成立。 输入 #2 2 3 10输出 #2 Yes\(\sqrt 2 + \sqrt 3 < \sqrt 10\) 成立。 分析 错…

CodeForces Round #621 ABC (1307A+1307B+1307C) 题解

A. Cow and Haybales 题面 The USA Construction Operation (USACO) recently ordered Farmer John to arrange a row of n haybale piles on the farm. The \(i\)-th pile contains \(a_i\) haybales. However, Farmer John has just left for vacation, leaving Bessie all o…

Python函数之*[参数名]和**[参数名]的用处

一、*[参数名] 调用 合法调用 普通调用 *参数名一般写成*args, 如: def func(*args):print(args)可以试着调用func: >>> func(1) (1,) >>> func() () >>> func(1, 2, 3) (1, 2, 3) >>> func(dict(), set(), str(), int()) ({}, set(), ,…

discuz3.4文件包含漏洞

首先查看修复:可以看到新增代码preg_match("/^[\w-]+\.php$/i", $parse[path])) 来验证path是否为php文件,这个应该是修复路径遍历导致的文件读取漏洞。还有require ./.$_ENV[curapp]..php;这里应该是另外一个漏洞,因为$parse[path]和$_ENV[curapp]没有关联。 然后…

河道漂浮物识别检测系统

河道漂浮物识别检测系统依据智能视频分析,视频图像信息内容自动分析和识别,不用人工操纵;检测漂浮物(塑料泡沫、包装袋、堤岸漂浮植物种类等)生物群落等),精确提交检测结果,储存有关信息,便捷查验管理。河道漂浮物识别检测系统实时监控河面状况,对违法行为开展警报、…

厨师帽厨师服口罩穿戴人脸识别-智慧食安监督系统

厨师帽厨师服口罩穿戴人脸识别就是指在监管前提下提早设定查验区域,当规定区域有不戴厨师帽不穿戴厨师服或者口罩,系统自动会警报。厨师帽厨师服口罩穿戴人脸识别-智慧食安监督系统根据视频智能分析商品,在数据分析系统优化计算方法服务中,扩展了非厨房工作人员 进入后厨以…

web 开发(4)- 数据库sql

sql创建数据库sudo mysql 进入 mysql> create database book_01安装 mysqlclient sudo apt-get install libmysqlclient-dev sudo apt-get update 远程控制SQL得到远程密码 sudo cat /etc/mysql/debian.cnf 获取IP地址 ifconfig sudo mysql 问题一,不允许远程控制 先进入本…

隧道视频监控智能分析系统

隧道视频监控智能分析系统是道路交通方式不可缺少的监管手段,隧道视频监控智能分析系统有效进行交通违法和紧急事件的全自动识别和交通出行流量的全自动数据分析,并依据城市路口、城市道路、高速路、道路、公安机关监控、隧道、公路桥梁、地下停车场等各类实际路面生态环境开…

煤矿皮带急停报警监测系统 煤矿皮带运行监控系统

煤矿皮带急停报警监测系统运用煤矿地底现场已有摄像头的视频监控画面图像,赋能现场传统摄像机具备Ai识别分析报警、监管和鉴别工作人员、机器设备、自然环境等使用标准、皮带锚索、煤矸石砖、堆煤、非法运输等异常现象、工作人员没戴安全头盔、擅自离岗、路面浓烟、水、影片等…