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...