目录

  • A. Div
  • B. Palindrome with leading zeros
  • C. Compass Walking
  • D. Send More Money
  • E. Unique Color
  • F. Cube

A. Div

Problem

Solution

签到

第一反应隔板法,把 nnn 个物品用一个板子隔开,不能为空,答案就是 Cn−2+2−12−1=Cn−11=n−1C_{n-2+2-1}^{\ 2-1}=C_{n-1}^{\ 1}=n-1Cn−2+2−1 2−1​=Cn−1 1​=n−1。

Time

O(1)O(1)O(1)

Code

// Problem: A - Div
// Contest: AtCoder - AtCoder Beginner Contest 198
// URL: https://atcoder.jp/contests/abc198/tasks/abc198_a
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>using namespace std;
#define int long long
const int N = 50007;int n;signed main()
{scanf("%lld", &n);printf("%lld\n", n - 1);return 0;
}

B. Palindrome with leading zeros

Problem


Solution

签到

只有9位,暴力判断一下是不是回文串即可。

Time

O(n)O(n)O(n)

Code

// Problem: B - Palindrome with leading zeros
// Contest: AtCoder - AtCoder Beginner Contest 198
// URL: https://atcoder.jp/contests/abc198/tasks/abc198_b
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>using namespace std;
#define int long long
const int N = 50007;string n, s, ans;signed main()
{cin >> n;s = n;ans = "";reverse(n.begin(), n.end());if(s == n) {puts("Yes");return 0;}for(int i = s.length() - 1; i >= 0; -- i) {ans += "0";string tmp = ans + s;string tmp2 = tmp;reverse(tmp.begin(), tmp.end());if(tmp == tmp2) {puts("Yes");return 0;}}puts("No");return 0;
}

C. Compass Walking

Problem


Solution

签到

显然如果走整数步,差一点到达目的地(差距小于 2p),那么我们就可以少走一步,然后像一个圆规一样地走两步,走一个三角形,就一定能走任意距离到达最后的目的地。所以答案就是 ceil(distp)\text{ceil} (\cfrac{dist}{p})ceil(pdist​)。如果距离小于 2p,我们必须走一个三角形走两步到达,但是如果距离等于p,我们只需要走一步就可以到达。

Time

O(1)O(1)O(1)

Code

// Problem: C - Compass Walking
// Contest: AtCoder - AtCoder Beginner Contest 198
// URL: https://atcoder.jp/contests/abc198/tasks/abc198_c
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>using namespace std;
#define int long long
const int N = 50007;
const long double eps = 1e-8;int n;
int x, y, p;int sgn(double x)
{if(fabs(x) <= eps) {return 0;      }else if(x < 0) return -1;return 1;
}signed main()
{scanf("%lld%lld%lld", &p, &x, &y);double dist = sqrt(x * x + y * y);int ans = ceil(dist / p);if(sgn(dist - (double)p) == 0) {puts("1");}else if(sgn(dist - 2.0 * p) == -1) {puts("2");}else {printf("%lld\n", ans);}return 0;
}

D. Send More Money

Problem

Solution

其实就是一个字符向数字的映射,每一字母映射一个 0∼90\sim 90∼9 的数字,不能重复。显然如果出现的字母种类超过10就 NONONO 。数据保证不超过 101010 ,所以可以直接全排列每个字母匹配的数字是谁,暴力匹配,找到合法的答案就输出。

Time

O(10!×10)O(10!\times10)O(10!×10)

Code

// Problem: D - Send More Money
// Contest: AtCoder - AtCoder Beginner Contest 198
// URL: https://atcoder.jp/contests/abc198/tasks/abc198_d
// Memory Limit: 1024 MB
// Time Limit: 5000 ms
//
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>using namespace std;
#define int long long
const int N = 50007;
int mp[N];
int n, m, cnt;
string s[N];
int Ni[N];
bool zero;
int Hash[N];void init()
{for(int i = 1; i <= 10; ++ i) Hash[i] = i - 1;
}int work(string s)
{int res = 0;if(Hash[mp[s[0] - 'a']] == 0) {zero = true;return -1;}for(char ch : s) res = res * 10 + Hash[mp[ch - 'a']];return res;
}signed main()
{init();for(int i = 1; i <= 3; ++ i) {cin >> s[i];for(auto ch : s[i]) {if(mp[ch - 'a'] == 0) {mp[ch - 'a'] = ++ cnt;}}}if(cnt > 10) {puts("UNSOLVABLE");return 0;}do {zero = false;for(int i = 1; i <= 3; ++ i) Ni[i] = work(s[i]);if(zero == false && Ni[1] + Ni[2] == Ni[3]) {for(int i = 1; i <= 3; ++ i) printf("%lld\n", Ni[i]);return 0;}} while(next_permutation(Hash + 1, Hash + 1 + 10));puts("UNSOLVABLE");return 0;
}

E. Unique Color

Problem

Solution

显然从 1 到结点 xxx 的路径只有一条,我们直接从 1 开始DFS所有点即可,我们可以统计一下每种颜色的出现次数,如果当前搜到的的颜色只出现了一次,那么他就是一个好点。

Time

O(n)O(n)O(n)

Code

// Problem: E - Unique Color
// Contest: AtCoder - AtCoder Beginner Contest 198
// URL: https://atcoder.jp/contests/abc198/tasks/abc198_e
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)#include <bits/stdc++.h>using namespace std;const int N = 500007;int head[N], ver[N], edge[N], nex[N], tot;
int n, m, col[N], cnt[N];
vector <int> ans;void add(int x, int y)
{ver[tot] = y;nex[tot] = head[x];head[x] = tot ++ ;
}void dfs(int x, int fa)
{if(cnt[col[x]] == 1) {ans.push_back(x);}for(int i = head[x]; ~i; i = nex[i]) {int y = ver[i];cnt[col[y]] ++ ;if(y != fa)dfs(y, x);cnt[col[y]] -- ;}
}int main()
{memset(head, -1, sizeof head);scanf("%d", &n);for(int i = 1; i <= n; ++ i) {scanf("%d", &col[i]);}for(int i = 1; i <= n - 1; ++ i) {int x, y;scanf("%d%d", &x, &y);add(x, y);add(y, x);}cnt[col[1]] ++ ;dfs(1, 0);sort(ans.begin(), ans.end());for(auto it : ans) printf("%d\n" ,it);return 0;
}

F. Cube

Problem

Solution

显然就是一道旋转同构的Polya定理模板题。

Polya定理

对于一个置换 fff,C(f)=km(f)C(f)=k^{m(f)}C(f)=km(f),其中 kkk 为颜色数,m(f)m(f)m(f) 为 fff 的循环节。

在置换群中,等价类个数(方案数)等于所有置换 fff 的 km(f)k^{m(f)}km(f) 的平均数。

骰子只有旋转这一种置换,可以上下旋转或者左右旋转90° / 180°,所以我们只需要处理出来所有和为 SSS 的数,找到所有置换的循环节个数用Polya定理算一下即可。

对于一个骰子

AtCoder Beginner Contest 198 (A ~ F)题解相关推荐

  1. AtCoder Beginner Contest 260 A~F 题解

    ABC260 A~F [A - A Unique Letter](https://atcoder.jp/contests/abc260/tasks/abc260_a) 题目大意 输入格式 输出格式 样 ...

  2. AtCoder Beginner Contest 244 D~F 题解

    ABC244 D~F [D - Swap Hats](https://atcoder.jp/contests/abc244/tasks/abc244_d) 题目大意 输入格式 输出格式 样例 样例输入 ...

  3. AtCoder Beginner Contest 198 A~E题解

    ABC198 A~E [A - Div](https://atcoder.jp/contests/abc198/tasks/abc198_a) 题目大意 输入格式 输出格式 样例 分析 代码 [B - ...

  4. AtCoder Beginner Contest 246 A~E 题解 Bishop 2

    AtCoder Beginner Contest 246 A~E 题解 A Four Points 题意 给你矩形的三个顶点,输出剩下那个 思路 把横坐标和纵坐标分开,必会存在两个相同的数,横纵坐标就 ...

  5. AtCoder Beginner Contest 252 A~G 题解

    前言 这是我第一次写7题(A~G)的ABC题解,若有写得不好或者不到位的地方请多多指教,我将万分感激,感谢大家的支持! ABC252 A~G [A - ASCII code](https://atco ...

  6. AtCoder Beginner Contest 196 A~E题解

    ABC196 A~E [A - Difference Max](https://atcoder.jp/contests/abc196/tasks/abc196_a) 题目大意 输入格式 输出格式 样例 ...

  7. AtCoder Beginner Contest 242 C~E 题解

    ABC242 C~E [C - 1111gal password](https://atcoder.jp/contests/abc242/tasks/abc242_c) 题目大意 输入格式 输出格式 ...

  8. AtCoder Beginner Contest 192 A~D题解

    ABC192 A~D [A - Star](https://atcoder.jp/contests/abc192/tasks/abc192_a) 题目大意 输入格式 输出格式 样例 分析 代码 [B ...

  9. AtCoder Beginner Contest 205 A~E 题解

    ABC205 A~E [A - kcal](https://atcoder.jp/contests/abc205/tasks/abc205_a) 题目大意 输入格式 输出格式 样例 分析 代码 [B ...

最新文章

  1. java实现mysql的主从切换(第二部分)
  2. 数据库中的二级索引_普通索引_辅助索引
  3. 处理大并发之二 对epoll的理解,epoll客户端服务端代码
  4. svn不知道这样的主机 怎么解决_家里装修不知道怎么配置净水器,这几招教你轻松解决...
  5. 《深入实践Spring Boot》一3.3 使用Thymeleaf模板
  6. mysql查询表字段的个数
  7. Excel表结构模板生成MySql建表语句
  8. 数据结构与算法-进阶(十二)最短路径Dijkstra 算法
  9. 【致远FAQ】致远OA宕机之内存溢出
  10. 《程序员修炼之道-从小工到专家》读后感
  11. c语言 不同的io口组成数组,本章内容并行IO口电路结构认识C语言C语言基本语句C语.ppt...
  12. ASP.NET MVC5 使用NPOI导出ExceL 返回浏览器下载
  13. 马斯克指定接班人?传特斯拉大中华区CEO朱晓彤接任全球CEO,官方疑否认
  14. 诗歌(8)—梅花二首(其二)
  15. int类型变量的取值范围?
  16. eSIM卡和SIM卡的区别是什么?
  17. EXCEL--如何做多选对话框
  18. 卡西欧学生用计算机怎么玩,你真的会用计算器么?来玩转卡西欧计算器吧
  19. 微信流量主点击量与曝光量是什么意思
  20. 给我半首歌的时间,给你说明白Immutable List

热门文章

  1. 神经网络基础知识总结
  2. TLU-Net:表面缺陷自动检测的深度学习方法
  3. 浅谈RNN,LSTM和GRU
  4. 链表问题11——两个单链表相交的系列问题(二):找到两个无环链表的交点
  5. 【2019雅礼集训】【CF 960G】【第一类斯特林数】【NTT多项式】permutation
  6. Python的命名空间和作用域
  7. 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
  8. 这样就能用MathType编辑^符号
  9. [Android]ViewSwitcher使用范例
  10. Why HashMap Extends AbstractMap and Implement Map