日期:2023年10月2日星期一
S08695韩润琦
目录:
1.比赛概况
2.比赛过程
3.题解报告
(1)数字降级
思路
STD
(2)分组
思路
STD
(3)抢夺地盘
思路
STD
(4)闯关
思路1
STD1
思路2
STD2
- 比赛概况
比赛共有四道题,满分400,赛时拿到50分。其中第一题50分,其余全部0分。
- 比赛过程
比赛开始时先把题目大体看了一遍,发现第一题是最简单的,于是就从T1开始做。
T1做题过程:这道题目其实完全是想复杂了, 我先是发现所有的偶数的情况答案一定都为1,因为它一定可以整除2,而2又是一个素数,所以我先写了一个判断偶数的if,然后直接输出1,再return 0就可以了(其实,根据唯一分解定理,所有的合数都满足此情况,直接判断哪些是素数就可以了)。接着我便开始处理奇数的情况,我先是写了一个for遍历每个素数,然后每个去除n,接着我就发现了一个问题,就是:有两种情况:(1)我用除出来的这个数再接着往下遍历计算,可是i的值正在随着for变化,
我无法判断是继续往下除或是始终用这个i来除,抑或是舍弃这个商,用原来的n来除下一个i。所以我拿了两个数组来存我的这些数据,最后来遍历取min。
总而言之,我写了一堆废代码,一道18行就能AC的题目我写了70行,还WA了。
T2做题过程:情况和T1很像,也是写了一大堆无用的代码。我是先把输入进去的数组sort了一下,然后就那首元素(也就是最小的那个)去往后找递增序列。
于是,我拿了一个find函数,去二分查找去找下一个元素。我还拿了一个flag的数组准备用它来记录是否还递增以及其不再递增和位置,然后拿到a数组里去取内容,
再用sum累加。我还写了“zhaoshu”和“minn”两个函数来查找下一次开始的位置。但测试的时候我无论输入什么数据都没有输出,于是此题没有成绩。
T3做题过程: 这一道题目大眼看过去很明显是一道DP的题目,而且是熟悉的线性DP的合唱队列问题,但因为忘了线性DP的模板所以此题也是0分。以后因该加强背诵。
T4做题过程:此题因为时间原因,没有完成所以也是0分。
- 题解报告
- 第一题:数字降级
情况:赛中50分,已补题。
题意:题目很简单,就是求一个数需要除几次,才能变成素数。
赛时本题想法:根据唯一分解定理,可以知道任意一个大于等于 的数字,都可以找到另一个数字将它除成质数。因此可以直接判断输入的数字是否为质数,如果为质数输出 0 ,否则输出 1 。
直接给出AC代码
代码:
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main() {
ll n;
cin >> n;
for (int i = 2; i <= n / i; i++) {
if (n % i == 0) {
cout << 1 << endl;
return 0;
}
}
cout << 0 << endl;
return 0;
}
- 第二题:分组
情况:赛中0分,已补题。
题意: 寻找上升序列,然后找到不上升的位置,那最小的节点,最后把最大值相加。
赛时本题想法:已在比赛过程中详细说明,再次不做过多赘述。
题解:考虑有多少个小组分数可以至少为 1,这些小组中必须有一个0 。
所以假设 0有 x个,那么就说明有x 个小组分数至少为1 ,此时答案增加 x(这一步是考虑这些小组对答案的贡献)。
再考虑有多少个小组分数可以至少为2 ——这些小组必须有一个1 ,并且小组分数至少为2 的小组的数量一定小于等于小组分数至少为 1的小组数量,所以涉及到一个求 min 的操作。
直接给出AC代码
代码:
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>
using namespace std;
#define TIE ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
typedef pair<int, int> pii;
typedef long long ll;
typedef unsigned long long ull;
const int N = 1e5 + 10, M = 1e5 + 10;
const double PI = acos(-1.0);

2178

被折叠的 条评论
为什么被折叠?



