2020年2月17日早上8:00,CCF发布了关于举办NOI Online能力测试的通知。

为给选手提供一个锻炼的机会,CCF拟举办一场NOI Online能力测试。测试分为入门组和提高组,每组限额报名3万人,人数报满关闭系统,每组成功报名选手在同一时间参加线上测试。

(http://www.noi.cn/newsview.html?id=1174&hash=BBB849&type=1)

3月7日下午2:30,测试开始。
但我打开山西区的网址(123.56.244.106:8765)后,基本是这样的
⬇⬇⬇

图片说明

过了不久(下午3:40),学校oi队群里发来了某些欧皇的截图
⬇⬇⬇

图片说明

图片说明

图片说明

正当这时,noi发来通知,网址改到了:123.56.79.18:8765,但是...

图片说明

先看题吧,第一题——好像会,第二题——有思路,第三题——放弃
然后一看第一题:

【数据范围与提示】
对于测试点 1 ∼ 6:n ≤ 14。
对于测试点 7 ∼ 12:n 是 14 的倍数。
对于测试点 13 ∼ 18:n ≤ 100。
对于所有测试点:0 ≤ n ≤ 105。

果断打表得部分分:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    freopen("order.in","r",stdin);
    freopen("order.out","w",stdout);
    int n;
    cin>>n;
    if(n<3)    cout<<-1;
    else if(n==3) cout<<0<<" "<<0<<" "<<1;
    else if(n==4) cout<<0<<" "<<1<<" "<<0;
    else if(n==5) cout<<-1;
    else if(n==6) cout<<0<<" "<<0<<" "<<2;
    else if(n==7) cout<<0<<" "<<1<<" "<<1;
    else if(n==8) cout<<0<<" "<<2<<" "<<0;
    else if(n==9) cout<<0<<" "<<0<<" "<<3;
    else if(n==10) cout<<0<<" "<<1<<" "<<2;
    else if(n==11) cout<<0<<" "<<2<<" "<<1;
    else if(n==12) cout<<0<<" "<<0<<" "<<4;
    else if(n==13) cout<<0<<" "<<1<<" "<<3;
    else if(n%14==0) cout<<n/14<<" "<<n/14<<" "<<n/14;
    else if(n==33) cout<<1<<" "<<2<<" "<<6;
    else cout<<"-1";
    return 0;
 } 

以下是一个想得满分的思路(暂时想不出来)

#include<bits/stdc++.h>
using namespace std;
struct pt{
    int aa;
    int bb;
    int cc;
    int zx;
    int h;
}s[1000];
int mmin(int x,int y,int z){
    if(x!=y&&y!=z&&x!=z){
        if(min(x,y)==x) return min(x,z);
        else if(min(x,y)==y) return min(y,z);
    }
}
int main()
{
    freopen("order.in","r",stdin);
    freopen("order.out","w",stdout);
    int n,a,b,c;
    int sum=0;
    cin>>n;
    if(n<3){
        cout<<-1;
        return 0;
    } 
    for(a=0;7*a<=n-7;a++) {
        sum=0;
        for(b=0;4*b<=n-10;b++){
            for(c=0;3*c<=n-11;c++) {
                if((7*a+4*b+3*c)==n){
                    s[sum].aa=a;
                    s[sum].bb=b; 
                    s[sum].cc=c;
                    s[sum].h=a+b+c;
                    s[sum].zx=mmin(a,b,c);
                    sum++;
                } 
            }
        }
    }
    for(int i=0;i<n;i++){
        if(i-1>=0){
            if(s[i].zx>s[i-1].zx) {
                if(s[i].h>s[i-1].h) cout<<a<<" "<<b<<" "<<c;
                break;
            }
            else{
                cout<<-1;
                break;
            } 
        }
    }
    return 0;
 } 

于是我想上网站提交代码,却还是打不开。
就在这时,又改了一次网址:112.126.63.245:8765
于是我急忙打开网址,这次居然打开了,然后提交了打表版的第一题代码,就又⬇⬇⬇

图片说明

更令人意外的是:考试时间从3月7日下午2:30-6:00改到了6:00-9:30

但由于一只蝙蝠,导致我们在某软件上课,一周要上六天课&&下周还要用某软件月考,导致我敲键盘的手指和脑子变得僵硬,所以我去写作业了。
(这不扯犊子吗)

详细题解https://www.cnblogs.com/QYCbest/articles/12441222.html

总结
这次考试,网址换了三次(123.56.244.106:8765—123.56.79.18:8765—112.126.63.245:8765),网站很卡,题很难,我很菜。。。
以上为扯犊子

真正的总结:
1.重定向:freopen("输入文件名","r",stdin);
freopen("输出文件名","w",stdout);
2.贪心算法:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,是在某种意义上的局部最优解。
3.打表:一定要熟练,在实在解不出来题时再用(此乃下策)。
4.动态规划:将原问题分解,缩小成为子问题,设计该题的状态,确定初始值及边界值,寻找状态转移方程(递推式)。
5.一定要在平时多理解,多看书,少打游戏,多做题(辅助理解)

To be continued...