emmm
更一下对拍吧……
毕竟对拍可以让暴力价值提高不少
@echo off :loop rand.exe > cx.in cx1.exe < cx.in > cx1.out cx0.exe < cx.in > cx0.out fc cx1.out cx0.out if not errorlevel 1 goto loop pause goto loop
就这个意思 cx1 cx2 一个你的技巧算法,一个暴力之类的……
rand是随机数据,我习惯用pascal编写……
存成 .bat 文件,放在一个文件夹中
举个栗子吧:
普通的线性素数筛法和一个个判断
洛谷模板题
c++线筛:
#include <iostream> #include <cstring> #include <cstdio> using namespace std; bool bl[10000100]; int ss[10000100]; int t=0,n,m; void seive(int n) { memset(bl,true,sizeof(bl)); bl[0]=false; bl[1]=false; for (int i = 2; i <= n; i++) { if (bl[i]) ss[++t]=i; for (int j = 1; j <= t && i*ss[j] <= n;j++) { bl[i*ss[j]]=false; if (!(i % ss[j])) break; } } } int main() { ios::sync_with_stdio(false); cin >> n >> m; seive (n); for (int i = 1; i <= m; i++) { int x; cin >> x; if (bl[x]) cout << "Yes" << endl; else cout << "No" << endl; } return 0; }
c++暴力:
#include <iostream> #include <cmath> #include <cstdio> using namespace std; int n,m; bool is(int x) { for (int i = 2; i <= sqrt(x); i++) if (x%i==0) return false; return true; } int main() { ios::sync_with_stdio(false); cin >> n >> m; for (int i = 1; i <= m; i++) { int x; cin >> x; if (is(x)) cout << "Yes" << endl; else cout << "No" << endl; } return 0; }
pascal随机:
var n,m,i:longint; begin randomize; n:=random(1000)+10; m:=random(100)+5; writeln(n,‘ ‘,m); for i:=1 to m do writeln(random(n-1)+1); end.
然后放进一个文件夹中:
运行后就可以看见如下结果:
但如果程序不同,就会这样:
就这样,对拍结束了……
注意:
- 保证暴力的正确性!!!很重要
- 不要加文件!!!不要对拍后忘记加回文件!!!
- 对拍后看看.in 和 .out 如果是空的证明程序错了
- 时间!!!rand文件不要开太大,否则超过暴力时限后会极慢……不要用最后几分钟对拍,保证时间游刃有余。