⭐Toyota Programming Contest 2023#8(AtCoder Beginner Contest 333)
前言:
好的,比赛的时候给比赛忘了,少跑二十多分钟,好在这次题目都比较简单,也算是迅速赶上了
顺带一提,为了赶时间貌似没有一题是用C++写的……
模拟只会猜题意,贪心只能过样例;数学上来先打表,DP一般看规律;组合数学靠运气,计算几何瞎暴力;图论强行套模板,数论只会GCD;递推莫名UKE,递归堆栈往外溢;深搜茫然TLE,广搜队列MLE;二分查找总CE,叉堆结果必RE;高精算法找规律,做完全都OLE;数据结构干瞪眼,水题也都WA;长知识也不容易,考试一来全懵B!
目录:
点击题目跳转
第一题
A - A
- 题目分析:
遍历比较即可 - 代码实现:
C++代码
void solve() {
int n,i;
cin >> n;
for(i=0;i<n;++i)cout << n;
}
C++代码
void solve() {
char s1, s2, t1, t2;
cin >> s1 >> s2;
cin >> t1 >> t2;
if(s1 > s2)s2 += 5;
if(t1 > t2)t2 += 5;
s1 = s2 - s1 > 2 ? (s2 - s1) % 2 + 1 : s2 - s1;
t1 = t2 - t1 > 2 ? (t2 - t1) % 2 + 1 : t2 - t1;
if(s1 == t1)cout << "Yes";
else cout << "No";
}
第三题
C - C
- 题目分析:
- 这题的确可以用数学的方式做,但是出于条件限制怎么做都不理想,题目数据限制在333个,我们直接打表
- 代码部分:
Python代码
a=[]
for i in range(1,20):
for j in range(i,20):
for k in range(j,20):
a.append(int(i*'1')+int(j*'1')+int(k*'1'))
a.sort()
print(a[0:334])#接着输出即可
第四题
D - D
- 题目分析:
- 这题只需以1为根找到1的最大子树并用总节点数减去它即可
- 代码实现:
C++代码
int dfs(vector<vector<int>> &tree, int node, int fa) {
int ans = 1;
for(auto &x : tree[node]) {
if(x != fa) {
int k = dfs(tree, x, node);
if(node != 1)ans += k;
else ans = max(ans, k + 1);
}
}
return ans;
}
void solve() {
int n, m, i, j, a, b;
cin >> n;
vector<vector<int>>qwq(n + 1);
for(i = 1;i < n;++i) {
cin >> a >> b;
qwq[a].emplace_back(b);
qwq[b].emplace_back(a);
}
m = dfs(qwq, 1, 1);
cout << n - m+1;
}
比赛时用的代码
A.
n=int(input())
print(str(n)*n)
B.
A={'AB':1,
'AC':2,
'AD':2,
'AE':1,
'BA':1,
'BC':1,
'BD':2,
'BE':2,
'CA':2,
'CB':1,
'CD':1,
'CE':2,
'DA':2,
'DB':2,
'DC':1,
'DE':1,
'EA':1,
'EB':2,
'EC':2,
'ED':1,
}
a=input()
b=input()
if A[a]==A[b]:print("Yes")
else: print("No")
C.
a=[]#一个很长的表
print(a[int(input())-1])
D.
//@author Allergy
//@email Allergy527@gmail.com
//@workspace src\bin\p1395.rs
//@data 2023/12/13 14:08:21
fn main() {
let t = 1;
//let mut input = String::new();std::io::stdin().read_line(&mut input).unwrap();let t:i32=input.parse().unwrap();
let _ = (0..t).for_each(|_| solve());
}
fn solve() {
let mut input = String::new();
std::io::stdin().read_line(&mut input).unwrap();
let n: usize = input.trim().parse().unwrap();
let mut qwq: Vec<Vec<usize>> = vec![vec![]; n + 1];
for _ in 0..n - 1 {
//读输入
let mut input = String::new();
std::io::stdin().read_line(&mut input).unwrap();
let mut input = input.trim().split_whitespace();
//建树
let (a, b): (usize, usize) = (
input.next().unwrap().parse().unwrap(),
input.next().unwrap().parse().unwrap(),
);
qwq[b].push(a);
qwq[a].push(b);
}
//处理
let x= bfs(&qwq, 1, 1);
println!("{}",x.0-x.1);
}
fn bfs(t: &Vec<Vec<usize>>, node: usize, fa: usize) -> (usize, usize) {
let mut ans = (1,0); //子树和,所有中最大的那个和
for &son in t[node].iter() {
if son != fa {
let k = bfs(t, son, node);
ans.0 += k.0;
if fa == 1 {
ans.1=ans.1.max(k.0);
}
}
}
ans
}
- 题解 Beginner AtCoder Contest 333beginner atcoder contest 333 题解beginner atcoder contest contest programming beginner atcoder beginner atcoder contest 296 beginner atcoder contest 295 beginner atcoder contest abcde beginner atcoder contest 335 beginner atcoder contest 328 beginner atcoder contest 334 beginner atcoder contest 310