概要
最近社团蛮多新人加入,然后有遇到一些问题,想说来跟大家分享一些小技巧
送出后的反馈
AC 程式码通过测值WA 程式码在某个测值(test case)中出现错误答案(有些会写在哪里一个test出错,例如WA on test2)TLE 程式码超过限制时间。通常是解法过于暴力,导致无法在限制时间内通过MLE 程式码超过记忆体限制,童常不要乱搞应该不太会遇到CE 编译错误,没有按照该程式的规矩钻写RE 执行时错误,通常为记忆体配置错误,像是超过阵列範围P.S. 题目里给的sample 通常与送出时测试的测值会不同,通过 sample 不代表一定会 AC !
解题常见的输入
通常题目会有几种方法来输入
test case :题目会先讲先输入t,就是执行t次
接下来会输入n,接下来的测值数量
通常,sample架构会长这样:
t
n a1 a2 .....an
n2 b1 b2 .....bn2
....总计有t排(不包含t那行)
程式码:
#include<iostream>using namespace std;int main(){ int t; cin>>t; while(t--)//执行t次 { int n; cin>>n; vector<int> v(n);//建立一个 含有n数量的阵列 for(int i=0;i<n;i++) cin>>v[i]; }}
直到EOF题目没有讲说什么时候结束
放在同个sample里(如果要你输入一次就结束,那会有sample1 、 sample2 每个sample 都只会有一项测值)
sample input架构大概长这样:
a b
d e
f g
output :
a1
b1
c1
程式码:
#include<iostream>using namespace std;int main(){ int a,b; while(cin>>a>>b)//当友直输入时就无限执行,直到程式结束(EOF) { //你的程式码 }}
输入 0 结束sample 有一长串,跟EOF型很像但结尾遇到 0 时结束
sample input架构大概长这样:
a b
a2 b2
a3 b3
0
程式码:
#include<iostream>using namespace std;int main(){ int a,b; while(1)//死迴圈 { cin>>a>>b if(a==0)//当输入 0 时,结束迴圈 { break; } //你的程式码 }}
一些解题的小技巧
除了题目给的测值,尽量自己想几个测值画图因为有些题目给的sample会误导你往错误的方向想
真的解不出来就先休息一下有可能成为解题关键!?
总比直接抄别人的code好