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

AB水题,

C - Skill Up

题意:

  • 初始时 \(m\) 个算法的能力均为 \(0\),\(n\) 次中每次可以花费 \(c_i\) 元提升 \(m\) 个算法的能力(提升程度可能不等),问 \(m\) 个算法能力都提升到不低于 \(x\) 的最少花费。

思路:

一开始想写DP的,但发现数据范围不是很大 \((n\le 15)\) ,那么直接枚举即可了

int n, m, x;
int c[15], a[15][15];
int M[15], Min = 1e9, cost;
void chmin(int &a, int b) { return (void)(a > b ? a = b : a = a); }
void chmax(int &a, int b) { return (void)(a < b ? a = b : a = a); }
bool check() {
for (int i = 0; i < m; ++i) if (M[i] < x) return 0;
return 1;
}
void dfs(int i) {
if (i == n) {
if (check()) chmin(Min, cost);
return ;
}
cost += c[i];
for (int j = 0; j < m; ++j) M[j] += a[i][j];
dfs(i + 1);
cost -= c[i];
for (int j = 0; j < m; ++j) M[j] -= a[i][j];
dfs(i + 1);
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
cin >> n >> m >> x;
for (int i = 0; i < n; ++i) {
cin >> c[i];
for (int j = 0; j < m; ++j) cin >> a[i][j];
}
dfs(0);
cout << (Min == 1e9 ? -1 : Min);
}

D - Teleporter

题意:

  • \(1\sim n\) 个城镇每个城镇有一个传送点可以传送到其他城镇,问从第一个城镇出发传送 \(k\) 次后所在的城镇。

思路:

模拟一下样例就知道传送过程中肯定存在环,那么我们标记环路起点,加上传送次数对环路长度的模值即可,需要注意有可能先在一些城镇间传送后才进入环路。

const int N = 2e5 + 10;
ll n, k;
ll a[N], pre[N];
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
cin >> n >> k;
for (int i = 1; i <= n; ++i) cin >> a[i];
int now = 1;
ll cnt = 0;
while (k--) {
now = a[now];
if (pre[now])k %= cnt - pre[now];
pre[now] = cnt++;
}
cout << now;
}

E - Colorful Blocks

题意:

  • 给 \(n\) 个方块染色,可以使用 \(m\) 个颜色,要求最多有 \(k\) 对相邻方块同色。

思路:

\(ans = \sum\limits_{i = 0}^km*C_{n-1}^i*(m - 1)^{n-1-i}\)

解释一下,第 \(1\) 个方块可以染 \(m\) 种颜色,从余下 \(n - 1\) 个方块中选取 \(i\) 个方块,这 \(i\) 个方块组成同色的 \(i\) 对方块,它们的颜色与左相邻的方块相同,其余的 \(n - 1 - i\) 个方块因为不与左相邻方块同色,每个可以染 \(m - 1\) 个颜色。

代码书写上用逆序处理一下,同时独立出 \(add + mul\) 模块防止写错细节

const int N = 2e5 + 10, mod = 998244353;
ll fac[N];
ll add(ll a, ll b) {return (a + b) % mod;}
ll mul(ll a, ll b) {return a * b % mod;}
ll qpow(ll a, ll b) {
ll ans = 1;
for (; b; b >>= 1, a = mul(a, a)) if (b & 1) ans = mul(ans, a);
return ans;
}
ll inv(ll n) {return qpow(n, mod - 2);}
ll C(ll n, ll m) {
return mul(fac[n], mul(inv(fac[m]), inv(fac[n - m])));
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
fac[0] = 1;
for (int i = 1; i < N; ++i) fac[i] = mul(fac[i - 1], i);
ll n, m, k;
cin >> n >> m >> k;
ll ans = 0;
for (int i = 0; i <= k; ++i)
ans = add(ans, mul(m, mul(C(n - 1, i), qpow(m - 1, n - 1 - i))));
cout << ans;
}

F - Bracket Sequencing

题意:

  • 能否将一些括号串编排为合法串。

思路:

这道题不会,参考了一下这个大佬的博客:Here

详细思路:GYM - 101341A

const int M = 1e6 + 100;
int l[M], r[M];
int id[M], tp[M]; int main() {
int n; cin >> n;
for (int i = 0; i < n; i++) {
string s; cin >> s;
int x = 0, y = 0;
for (char c : s) {
if (c == '(') ++x;
else if (x) --x;
else ++y;
}
l[i] = x, r[i] = y, id[i] = i;
if (y == 0) tp[i] = 1;
else if (x == 0) tp[i] = 4;
else if (x >= y) tp[i] = 2;
else tp[i] = 3;
}
sort(id, id + n, [&] (int a, int b) {
if (tp[a] != tp[b]) return tp[a] < tp[b];
if (tp[a] == 2) {
if (r[a] != r[b]) return r[a] < r[b];
else return l[a] > l[b];
}
if (tp[a] == 3) return l[a] > l[b];
return false;
});
int sum = 0;
for (int i = 0; i < n; i++) {
sum -= r[id[i]];
if (sum < 0) break;
sum += l[id[i]];
}
cout << (sum == 0 ? "Yes" : "No");
}

AtCoder Beginner Contest 167 (A~F,DEF Good)的更多相关文章

  1. Atcoder Beginner Contest 156E(隔板法,组合数学)

    #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ; ; long long fac[N] ...

  2. AtCoder Beginner Contest 254(D-E)

    Tasks - AtCoder Beginner Contest 254 D - Together Square 题意: 给定一个N,找出所有不超过N的 ( i , j ),使得( i * j )是一 ...

  3. Atcoder Beginner Contest 155D(二分,尺取法,细节模拟)

    二分,尺取法,细节模拟,尤其是要注意a[i]被计算到和a[i]成对的a[j]里时 #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> ...

  4. Atcoder Beginner Contest 140E(多重集,思维)

    #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;multiset<long long&g ...

  5. Atcoder Beginner Contest 139E(模拟,思维)

    #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;int n;int a[1007][1007] ...

  6. AtCoder Beginner Contest 086 (ABCD)

    A - Product 题目链接:https://abc086.contest.atcoder.jp/tasks/abc086_a Time limit : 2sec / Memory limit : ...

  7. AtCoder Beginner Contest 127 D,E,F

    D Integer Cards 题意:先给出n个数字,然后可以有m次操作,每次操作以数字对(x,y)表示最多能选x个数字把它变成y,问经历m次操作后n个数字和最大为多少? 解法:一个明显正确的做法是: ...

  8. 【AtCoder Beginner Contest 181】A~F题解

    越学越菜系列 于2020.11.2,我绿了(错乱) A - Heavy Rotation 签到题,奇数Black,偶数White. code: #include<bits/stdc++.h> ...

  9. AtCoder Beginner Contest 085(ABCD)

    A - Already 2018 题目链接:https://abc085.contest.atcoder.jp/tasks/abc085_a Time limit : 2sec / Memory li ...

  10. AtCoder Beginner Contest 084(AB)

    A - New Year 题目链接:https://abc084.contest.atcoder.jp/tasks/abc084_a Time limit : 2sec / Memory limit  ...

随机推荐

  1. 七天.NET 8操作SQLite入门到实战 - 第三天SQLite快速入门

    前言 今天我们花费一个小时快速了解SQLite数据类型.SQLite常用命令和语法. 七天.NET 8操作SQLite入门到实战详细教程 第一天 SQLite 简介 第二天 在 Windows 上配置 ...

  2. freeswitch设置多个execute_on_media

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. fs中有非常多的接口和通道变量,使用方式多变. 官方文档有时候也仅仅是介绍了最基本的使用方法和格式. 环境 centos:CentO ...

  3. “古剑山”第一届全国大学生网络攻防大赛-Crtpto | Misc WP

    Crypto babyRSA 题目信息 p=105570604806073931560404187362816308950408774915960751676958845800335871518600 ...

  4. CompletableFuture入门

    CompletableFuture入门 1.Future vs CompletableFuture 1.1 准备工作 先定义一个工具类 import java.nio.file.Files; impo ...

  5. 【UniApp】-uni-app-CompositionAPI传递数据

    前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-传递数据 那么了解完了uni-app-传递数据之后,这篇文章来给大家介绍一下 uni-app-CompositionAPI传递数据 首 ...

  6. 解密视频魔法:将ExternalOES纹理转化为TEXTURE_2D纹理

    在使用OpenGL ES进行图形图像开发时,我们常使用GL_TEXTURE_2D纹理类型,它提供了对标准2D图像的处理能力.这种纹理类型适用于大多数场景,可以用于展示静态贴图.渲染2D图形和进行图像处 ...

  7. 华企盾DSC苹果电脑-认证用户提示“不是认证成功的账户”

    出现该问题说明客户端连不上服务器,一般来说是网络原因,可按照下面方法排查 ​ 1.先检查网络是否通能否正常上网或者换一个网络试试 2.查看服务器是否启动 3.客户测试连接是否成功端口是否填成了5580 ...

  8. 基于WebRTC的局域网文件传输

    基于WebRTC的局域网文件传输 WebRTC(Web Real-Time Communications)是一项实时通讯技术,允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点P2P ...

  9. vulnhub - tornado - wp

    coverY: 0 tornado 信息收集 目标开放了80,22端口. 访问80网页,是默认页面: 目录枚举 用dirsearch没有什么发现,换gobuster发现了一个bluesky目录.访问如 ...

  10. java桌面小闹钟

    写了个桌面的小闹钟,在运行环境可以编译,但是打包成jar文件,想用批处理命令直接调用报错"找不到或无法加载主类". 需求 为防止整天久坐,编写一个桌面闹钟.该闹钟功能很简单,一个小 ...