NOIP2018游记

出师

(1)

起床看见洛谷首页上显示的“距NOIP2018还有-1天”时,差点把嘴里的一口早饭喷了出来。

不过又想一下,要是一大早看见个“距NOIP2019还有365天”,估计瞬间会感觉压力山大。。。

(2)

进考场前竟然下起了倾盆大雨,从地铁站出来后,举着伞转了一个小时才找到考场,期间不停的被地图坑。

(我才不会告诉你浪费这么多时间的真正原因是使用迭代加深搜索找考场。)

进了考场发现有惊喜。。。机房竟然有网!有网!结果在考试前网断了。。。然后开始调整编辑器,以至于没注意到别人都开始打代码了。。。

第一题,水题,鉴定完毕。

分析:可能连模拟都算不上,直接从头到尾扫描一遍即可。

但虽说是水题,也有一些坑点:

  1. 读入要用 string + cin + getline()!

    读入要用 string + cin + getline()!

    读入要用 string + cin + getline()!

    重要的事情说三遍!

    @垃圾一个 就是在这一点上炸了。

  2. 判断时要自编函数或alnum,不能用ctype.h中的isprint()函数,要用isalnum()函数。

    如果你问”isprint()函数是什么”或”isalnum()函数是什么”,请自行忽略这段话并自觉编写判断函数。

    别问我为什么,Luogu自测只有20分。

代码:

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
#include<iostream>
#include<string>
using namespace std;

bool check(char c) {
if('0' <= c && c <= '9') {
return true;
}
if('a' <= c && c <= 'z') {
return true;
}
if('A' <= c && c <= 'Z') {
return true;
}
return false;
}

int main() {
string s;
getline(cin, s);

int len = s.length();

int ans = 0;
for(int i = 0; i < len; i++) {
if(check(s[i])) {
ans++;
}
}
cout << ans << endl;

return 0;
}

第二题,暴力枚举,鉴定完毕。

分析:

  1. 先计算好每一个军营的气势,同时累加双方的气势总和(输入后处理)

  2. 枚举每一个军营,检查若将工兵放在此位置是否可减少双方差距,并更新最小值与位置。

  3. 输出位置

写第一遍时大概思路就酱。

运行结果:

样例#1:Pass

样例#1:Pass

样例#3:
Beng!

又看了一下数据范围,对于 100% 的数据,n ≤ 10 ^ 5,ci,s1,s2≤10^9。

10^9?

“十年OI一场空,没开long long 见祖宗”,这话果然没错。

除int main()外的所有int皆换成long long,OK。

PS:如

1
2
3
4
5
#define int long long
signed main() {
//some code
return 0;
}

之类的旁门左道,为了安全起见,大家不要滥用哦QwQ。有本事你写个typedef int long long看报不报错

第三题。。。

我这种小蒟蒻怎么可能作对前三题呢QwQ,又怎么可能想到DP正解QwQ

所以我挥手打了贪心。。。当我发现第三个样例没过时已经来不及了

先说说贪心具体思路:

  1. 将学生按照到达时间从小到大排个序
  2. 用一个光标变量记录目前接到了第几个学生,如果还有人没被接到,就继续循环知道所有人都被接到为止。
  3. 每次循环时检查当前这个人是否值得带,若值得则将光标后移。
  4. 每次循环后将时间加上开车所需要的时间。
  5. 最后累加总等待时间并输出。

答案正确率:玄学

到各大网站上测之,30分有之,80分有之,一切随缘。

第四题本蒟蒻骗了分,没脸来这胡说了。。。

总结

咳咳咳。。。

(1)考试策略的应用

亏得我这只小蒟蒻还在进考场前看了1h AK NOI 的各位dalao 呕心沥血写的各种考场策略,结果一进考场简直就像接受了A级记忆删除,什么都忘得一干二净:

  1. 一,二题打完过了样例就去打第三题。(double-plus-scared)
  2. 第三题贪心死活过不了第三个点还执迷不悟认为就是贪心。
  3. 第四题明明有子任务放着不做打随机数。

(2)考场心态的调整

众所周知,在NOIP考场这种地方要想保持心态稳定是不可能的。然而如果吓得完全写不出代码就凉凉了。总结就是一定要冷静冷静冷静再冷静,一定不要像某人一样,贪心错了都想不到半个动规。

最后,祝大家:

1
2
3
while(NOIP2019.rp < NOIP2019.rp + 1) {
NOIP2019.rp++;
}

文章作者: Helium
文章链接: https://keepthethink.github.io/archives/3769932704/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Heliumの博客