补题链接:Here

A - Div

题意:N 个不一样的糖,请问有多少种分法给 A,B两人

水题,写几组情况就能知道输出 \(N - 1\) 即可

B - Palindrome with leading zeros

题意:给定一个字符串,问是否可以在字符串前加若干个 0 使字符串回文

先判断一下字符串回文否?本身就回文就无需处理,不然字符串后面有几个 0 就加上多少,然后再判断

C - Compass Walking

题意:在一个二维坐标轴上,给定一个长度 R ,请问是否有最小步数(每步只能走 R,但坐标可以非整数)到达 \((X,Y)\)

思路:

假设 \(d\) 为 起点\((0,0)\) 至 \((X,Y)\) 的欧几里得距离,则容易想到以下三种情况

  • 答案为 \(1\) ,如果 \(d = R\)
  • 答案为 \(2\) ,如果 \(d \ne R\) 并且 \(d < R\)
  • \(\lceil \frac{d}{R} \rceil\) ,其他情况

其实这里 第一种情况和第三种情况可合并写:ceil(d / R)

void solve() {
double R, X, Y;
cin >> R >> X >> Y;
double d = sqrt(X * X + Y * Y);
if (d < R) cout << 2;
else
cout << ceil(d / R);
}

D - Send More Money

题意:给定 \(3\) 个字符串 \(N_1,N_2,N_3\) 试问是否有数字能代替某种字母使得 \(N_1 + N_2 = N_3\)

思路:

首先,如果出现 \(10\) 种以上的字母,那么肯定是无法解决的,直接输出 UNSOLVABLE 即可

对于剩下的情况来说,可以尝试把数字分配给字母,然后 check 一下 \(N_1 + N_2 = N_3\) 。

\(10 ! = 3628800\) 是可执行范围内

注意别给首位分配 \(0\) 即可

void solve() {
map<char, int> ch;
string s, t, w;
cin >> s >> t >> w;
for (char c : s) ch.emplace(c, 0);
for (char c : t) ch.emplace(c, 0);
for (char c : w) ch.emplace(c, 0);
if (ch.size() > 10) {
cout << "UNSOLVABLE";
return;
}
int p[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
do {
string a, b, c;
int i = 0;
for (auto it = ch.begin(); it != ch.end(); ++it, i++)
it->second = p[i];
for (char x : s) a.push_back(ch[x] + '0');
for (char x : t) b.push_back(ch[x] + '0');
for (char x : w) c.push_back(ch[x] + '0');
ll A = stoll(a), B = stoll(b), C = stoll(c);
if (a[0] != '0' && b[0] != '0' && c[0] != '0' && A + B == C) {
cout << a << "\n"
<< b << "\n"
<< c << "\n";
return;
}
} while (next_permutation(p, p + 10));
cout << "UNSOLVABLE";
}

E - Unique Color

题意:

思路:用 DFS 搜索一下即可

// Murabito-B 21/04/12
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 100005;
int n, c[N], cnt[N], good[N];
vector<int> to[N];
void dfs(int u, int fa) {
if (cnt[c[u]] == 0) good[u] = 1;
cnt[c[u]]++;
for (int i = 0, v; i < to[u].size(); i++)
if ((v = to[u][i]) != fa) dfs(v, u);
cnt[c[u]]--;
}
void solve() {
cin >> n;
for (int i = 1; i <= n; ++i) cin >> c[i];
for (int i = 1, u, v; i < n; ++i) cin >> u >> v, to[u].push_back(v), to[v].push_back(u);
dfs(1, 0);
for (int i = 1; i <= n; ++i)
if (good[i]) cout << i << "\n";
}
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
solve();
return 0;
}

F题表示是懵逼的,做不来

AtCoder Beginner Contest 198 个人题解(AB水题,C思维,D思维+全排列,E题DFS搜索,F懵逼)的更多相关文章

  1. KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解

    KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...

  2. AtCoder Beginner Contest 022 A.Best Body 水题

    Best Body Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://abc022.contest.atcoder.jp/tasks/abc02 ...

  3. AtCoder Beginner Contest 069【A,水,B,水,C,数学,D,暴力】

    A - K-City Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement In K-city, ...

  4. 2018.09.08 AtCoder Beginner Contest 109简要题解

    比赛传送门 水题大赛? 全是水题啊!!! T1 ABC333 就是判断是不是两个数都是奇数就行了. 代码: #include<bits/stdc++.h> using namespace ...

  5. AtCoder Beginner Contest 089完整题解

    A - Grouping 2 Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement There a ...

  6. Atcoder Beginner Contest 138 简要题解

    D - Ki 题意:给一棵有根树,节点1为根,有$Q$次操作,每次操作将一个节点及其子树的所有节点的权值加上一个值,问最后每个节点的权值. 思路:dfs序再差分一下就行了. #include < ...

  7. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  8. AtCoder Beginner Contest 153 题解

    目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...

  9. AtCoder Beginner Contest 148 题解

    目录 AtCoder Beginner Contest 148 题解 前言 A - Round One 题意 做法 程序 B - Strings with the Same Length 题意 做法 ...

  10. AtCoder Beginner Contest 154 题解

    人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...

随机推荐

  1. 【Javaweb】了解link标签

    link标签的属性 标签就是定义文档和外部的关系,常见用途是链接样式表.通常指存在于head部分. 规定被连接文档的位置 <link rel='stylesheet' href='./ease. ...

  2. 自研、好用的ORM 读写分离功能使用

    Fast Framework 作者 Mr-zhong 代码改变世界.... 一.前言 Fast Framework 基于NET6.0 封装的轻量级 ORM 框架 支持多种数据库 SqlServer O ...

  3. [AGC030D] Inversion Sum

    Problem Statement You are given an integer sequence of length $N$: $A_1,A_2,...,A_N$. Let us perform ...

  4. 终结篇:==和equals有什么区别?

    == 和 equals 有什么区别?这个问题本身不难,但是被问到的频率很高,且大部分人的回答都不够全面,让人听了有种"恨铁不成钢"的感觉,所以今天咱们就来好好聊聊这个问题. 1.典 ...

  5. .NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题

    背景 随着公司微信相关业务场景的不断拓展,从最初的一个微信移动应用.然后发展成微信公众号应用.然后又有了微信小程序应用.但是随着应用的拓展,如何保证相同用户的微信用户在不同应用中登录的同一个账号呢?今 ...

  6. Spring Boot内置的一些工具类

    1.断言Assert工具类 // 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行 // 参数 message 参数用于定制异常信息. void notNull(Obje ...

  7. Codeforces Round #426 (Div. 2) problem C

    C. The Meaningless Game time limit per test 1 second memory limit per test 256 megabytes input stand ...

  8. NetSuite 开发日记 —— 事务处理行限制

    一.创建行限制 在 NetSuite 中处理事务时,一次可访问的记录.事务处理或数据行数限制为 10,000.除非另有说明,此限制适用于所有交易类型.超过 1,000 行可能会对 Netsuite 的 ...

  9. ElasticSearch之Clear cache API

    本方法用于清理缓存. 命令样例如下: curl -X POST "https://localhost:9200/testindex_001/_cache/clear?pretty" ...

  10. Python——第五章:随机模块random

    1.浮点数random.random() 的返回值是在 [0, 1)(左闭右开区间)内的随机浮点数.这意味着它可以取到 0,但不包括 1.所以,random.random() 可以返回 0,但不能返回 ...