情况

时间:2024年7月6日21:30image.png

思路

A - Problem Generator

题意

给出轮数,一些现有的代表问题难度的字符串,要求ABCDEFG每个难度乘轮次要够,至少要添加几个问题数量。

思路

简单题,统计一下现在有多少个计数,求和缺了多少。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void solve()
{
int n, m;
cin >> n >> m;
int a[2000] = {0};
for (int i = 0; i < n; ++i)
{
char s;
cin >> s;
int num = s - 'A';
a[num] += 1;
}
int ans = 0;
for (int i = 0; i < 7; ++i)
{
if (m - a[i] > 0)
ans += m - a[i];
}
cout << ans << endl;
}

问题

刚开始循环条件写错了wa1.不能无脑补全!而且竟然CPH过了就离谱。

B - Choosing Cubes

题意

带索引的一些立方体,会有一个喜欢的立方体,每个立方体生成一个数字。按数字递减排列后,删除前k个最大的立方体。判断喜欢的立方体是否被删去:YES、NO、MAYBE

思路

sorting题

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void solve()
{
int n, f, k;
cin >> n >> f >> k;
PII p[N];
for (int i = 1; i <= n; ++i)
{cin >> p[i].first;p[i].second = i;}
sort(p + 1, p + n + 1);
int aft = 0;
for (int i = 1; i <= n; ++i){
if(p[i].second==f)
aft = i;
}
if(p[n-k+1].first>p[aft].first)cout << "NO"<<endl;
else if (p[n - k + 1].first == p[aft].first && p[n - k].first == p[aft].first)
cout << "MAYBE" << endl;
else cout << "YES" << endl;
}

C - Sofia and the Lost Operations

题意

给出改之前的数组和改之后的数组,并给出改的值,但不知道改的位置,问你改的值能否产生一种方案完成从改之前到改之后。

思路

比赛中:
先找需要改哪些值。
产生一个需要的数组。
找最后的值(m-1)在不在这个需要的数组。因为这个值一定会最后修改
找需要改的值在不在d中
少给了绝对不可以。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
void solve()
{
int n;
cin >> n;
vector<int> ann(n);
vector<int> bnn(n);
for (int i = 0; i < n; ++i)
{
cin >> ann[i];
}
for (int i = 0; i < n; ++i)
{
cin >> bnn[i];
}
int m;
cin >> m;
vector<int> cnn(m);
for (int i = 0; i < m; ++i)
{
cin >> cnn[i];
}
map<int, int> mp;
for (int i = 0; i < n; ++i)
{
mp[bnn[i]]++;
}
if (mp[cnn[m - 1]] == 0)
{
cout << "NO" << endl;
return;
}
map<int, int> mp2;
for (int i = 0; i < n; ++i)
{
if (ann[i] != bnn[i])
{
mp2[bnn[i]]++;
}
}
for (int i = m - 1; i >= 0; --i)
{
if (mp2[cnn[i]] != 0)
{
mp2[cnn[i]]--;
}
}

for (auto &[x, y] : mp2)
{
if (y != 0)
{
cout << "NO" << endl;
return;
}
}
cout << "YES" << endl;
}

其实不用开第一个Map的,写的有点麻烦了

问题

这题问题很多
1、开数组过大,解决方法:全局数组+memset
2、TLE on test 2 了,没办法,改用map和vector来优化了。
C++中的map用法详解_c++ map-CSDN博客
C++ for auto用法以及map利用迭代器赋值_for auto map-CSDN博客