- 为了换Ubuntu的时候能够更加方便,
不用再用手重新打一遍代码,丢几个Gedit配置……
External Tools
-
gdb compile (F2)
#!/bin/sh fullname=$GEDIT_CURRENT_DOCUMENT_NAME name=`echo $fullname | cut -d. -f1` g++ -o $name $fullname -g -Wall -Wextra -D LOCAL gnome-terminal -x bash -c "gdb $name -silent;echo 'Nobody knows you better than I know...';read"
-
compile (F3)
#!/bin/sh fullname=$GEDIT_CURRENT_DOCUMENT_NAME name=`echo $fullname | cut -d. -f1` g++ $fullname -o $name -Wall -Wextra -D LOCAL -fsanitize=address
-
run (F4)
#!/bin/sh fullname=$GEDIT_CURRENT_DOCUMENT_NAME name=`echo $fullname | cut -d. -f1` dir=$GEDIT_CURRENT_DOCUMENT_DIR gnome-terminal -x bash -c "time $dir/$name; echo;echo 'Nobody knows you better than I know...';read"
Snippets
-
fast read (Ctrl+R)
namespace IO { const int N=1<<20; char buf[N],*l=buf,*r=buf; inline char gc() { if(l==r) r=(l=buf)+fread(buf,1,N,stdin); return *(l++); } inline int read() { int x=0,s=1; char ch=gc(); while(!isdigit(ch)) {if(ch=='-') s=-1;ch=gc();} while(isdigit(ch)) {x=x*10+(ch^48);ch=gc();} return x*s; } template <typename T> inline void read(T &x) { int s=1;x=0; char ch=gc(); while(!isdigit(ch)) {if(ch=='-') s=-1;ch=gc();} while(isdigit(ch)) {x=x*10+(ch^48);ch=gc();} x*=s; } inline char readc() { char ch=gc(); while(ch<=32) ch=gc(); return ch; } inline int reads(char *s) { char *point=s;*point=gc(); while(*point<=32) *point=gc(); while(*point>32) *(++point)=gc(); *point='\0'; return point-s; } }
-
在单位字符串长度大于 \(30\) 的时候,
scanf
的效率会高于reads
。 -
ch>32
貌似比isalnum(ch)
和ch!=' '&&ch!='\n'
要快一点。——测试 on 2021.2.22 17:07
-
-
fast basic code (Tab:include,Ctrl+B)
#include <iostream> #include <cstdio> namespace IO { const int N=1<<20; char buf[N],*l=buf,*r=buf; inline char gc() { if(l==r) r=(l=buf)+fread(buf,1,N,stdin); return *(l++); } inline int read() { int x=0,s=1; char ch=gc(); while(!isdigit(ch)) {if(ch=='-') s=-1;ch=gc();} while(isdigit(ch)) {x=x*10+(ch^48);ch=gc();} return x*s; } } using namespace std; using IO::read; int main() { #ifdef LOCAL freopen("c.in","r",stdin); //freopen("c.out","w",stdout); #endif $0 return 0; } // by pycr
-
read (Ctrl+Shift+R)
inline int read() { int x=0,s=1; char ch=getchar(); while(ch<'0'||ch>'9') {if(ch=='-') s=-1;ch=getchar();} while(ch>='0'&&ch<='9') {x=x*10+(ch^48);ch=getchar();} return x*s; }
-
basic code (Ctrl+Shift+B)
#include <iostream> #include <cstdio> using namespace std; inline int read() { int x=0,s=1; char ch=getchar(); while(ch<'0'||ch>'9') {if(ch=='-') s=-1;ch=getchar();} while(ch>='0'&&ch<='9') {x=x*10+(ch^48);ch=getchar();} return x*s; } int main() { #ifdef LOCAL freopen("c.in","r",stdin); //freopen("c.out","w",stdout); #endif $0 return 0; } // by pycr
-
test code (Tab:test)
#include <iostream> #include <cstdio> using namespace std; inline int read() { int x=0,s=1; char ch=getchar(); while(!isdigit(ch)) {if(ch=='-') s=-1;ch=getchar();} while(isdigit(ch)) {x=x*10+(ch^48);ch=getchar();} return x*s; } int main() { #ifdef LOCAL freopen("c.in","r",stdin); #else freopen("$1.in","r",stdin); freopen("$2.out","w",stdout); #endif $0 return 0; }
对拍
RANDOM.cpp
int n=random(1e5)+1; //随机生成整数序列
int m=1e9;
for(int i=1;i<=n;i++) {
seq[i]=random(2*m+1)-m;
}
for(int i=1;i<=n;i++) { //随机生成区间
int l=random(m+1);
int r=random(m+1);
if(l>r) swap(l,r);
printf("%d %d\n",l,r);
}
for(int i=2;i<=n;i++) { //随机生成树
int f=random(i-1)+1;
int val=random(1e9)+1;
printf("%d %d %d\n",f,i,val);
}
CHECK.cpp
#include <cstdio>
#include <iostream>
#include <ctime>
using namespace std;
int main() {
int cnt=0;bool pass=true;
#if 1
printf("Compiling...\n\n");
system("g++ MINE.cpp -o SOL");
system("g++ ANS.cpp -o ANS");
system("g++ RANDOM.cpp -o RANDOM");
printf("Compiled successfully!\n\n");
#endif
while(cnt<1000) {
system("./RANDOM");
double mine_start=clock();
system("./MINE");//system("time ./MINE");
double mine_end=clock();
double ans_start=mine_end;
system("./ANS");//system("time ./ANS");
double ans_end=clock();
double mine_time=(mine_end-mine_start);
double ans_time=(ans_end-ans_start);
if(system("diff MINE.out ANS.out")) {
printf("Case:%d Wrong Answer!\n\n",++cnt);
pass=false;
break;
}
else printf("Case:%d Accept!\nMINE_TIME: %.3lfms\nANS_TIME: %.3lfms\n\n",++cnt,mine_time,ans_time);
}
if(pass) cout<<"Congratulations!!!"<<endl;
else cout<<"What a pity..."<<endl;
return 0;
}