电脑操作知识备忘

电脑操作知识备忘
网站推介:搜索国际算法名称

[toc]

Python瞎学

教程,写了个csp划分的88pt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# coding=utf-8
'''
这是多行注释,使用单引号
这是多行注释,使用单引号
'''
print "--------------输入-------------"
n,tp=map(int,raw_input().split());
s=map(int,raw_input().split());
print "--------------字符串-------------"
x="akc"
y="is king"
print x,y #换行输出
print x,y, #不换行带空格输出
print y[0:5] #输出is ki
print "--------------列表-------------"
list=['runoob',786,2.23*3,786,2.23*3,786,2.23*3,786,2.23*3]
del list[3]
print list[0:len(list):1]
print list[0:len(list):3]
# append(元素)、extend(多个元素)
# min(list),max(list),len(list),cmp(list)
# count(元素)、insert(位置,元素)
# index(元素),都是找首次出现
# remove(位置)
# pop(位置,默认末尾),移除并返回那个元素
# reverse()、sort()
list_2d=[[[0]*10]*10]*2
test = ['a','','b','','c','','']
test = [i for i in test if i != ''] # ['a', 'b', 'c']
print "--------------字典-------------"
dict={}
dict['one']="This is one"
dict[2]="This is two"
print dict # 输出完整的字典
print dict.keys() # 输出所有键
print dict.values() # 输出所有值
print "--------------循环语句-------------"
fruits=[11,'banana','apple','mango','gogo']
for i in range(0,len(fruits*3),2):print (fruits*3)[i],
else: print ""
for i in range(len(fruits)):print fruits[i],
else: print ""
print "--------------条件语句-------------"
name="ptyhon"
if name=="python":
print 'welcome boss'
elif name=="gaygay":
print "fine"
else:
print name
print "--------------函数-------------"
#strings,tuples,和numbers是不可更改的对象,而list,dict等则是可以修改的对象
cnt=0;
def gcd(x,y):
global cnt
cnt=cnt+1
if(y==0): return x;
else: return gcd(y,x%y);
print gcd(15,27),cnt

Linux命令瞎学

1
sudo chmod -R 777 name #得到里面所有文件的权限

编译

1
2
3
4
5
6
7
8
9
10
11
12
13
-Wall
开启提示

-std=c++11

-O2
一定要大写……

-m32
32位程序,配合gdb32

-Wl,--stack=SIZE
扩栈

gdb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
查看调用参数
info args

查看局部变量
info locals

查看函数栈
bt

每步操作都显示变量值
display

frame xxx
配合bt,跳转

linux下对拍

1
2
3
4
5
6
7
8
//感觉直接写cpp比较好
while(1)
{
freopen("z.txt","w",stdout);
int n=rand()%1000;write(n);fclose(stdout);
system("./a >a.out");system("./a_ok >a.ans");
if(system("diff a.out a.ans")) break;
}

卡常

1
2
3
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#pragma GCC target ("avx2")

SPJ板子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
FILE *in, *stand, *out, *score, *report;
template<typename T>
string tostr(const T& v)
{
stringstream ss;
ss << v;
return ss.str();
}
/*
* argv[1]:输入
* argv[2]:选手输出
* argv[3]:标准输出
* argv[4]:单个测试点分值
* argv[5]:输出最终得分
* argv[6]:输出错误报告
*/
int main(int argc,char*argv[])
{
in = fopen(argv[1],"r");
out = fopen(argv[2],"r");
stand = fopen(argv[3],"r");
score = fopen(argv[5], "w");
report = fopen(argv[6], "w");
int n;fscanf(in,"%d",&n);
int cnt=0;bool bk=0;
for(int i=1;i<=n;i++)
{
double a,b;
fscanf(stand,"%lf\n",&a);
fscanf(out,"%lf\n",&b);
if(a*2<b or b*2<a)
{
cnt++;
if(cnt==11)
{
fprintf(score,"0");
fprintf(report, ("expected: "+tostr(a)+", found: "+tostr(b)+", line: "+tostr(i)+" (11th error)").c_str() );
bk=1;break;
}
}
}
if(!bk) fprintf(score,"%s",argv[4]),fprintf(report,"Good job");
}

数据改名器板子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template<typename T>
string tostr(const T& v)
{
stringstream ss;
ss << v;
return ss.str();
}
int main(int argc,char*argv[])
{
for(int i=1;i<=55;i++)
{
string now;
if(i<=9) now="0"+tostr(i);
else now=tostr(i);

string cmd="ren "+now+".a"+" "+now+".out";
system(cmd.c_str());
//cout<<cmd<<endl;
}
}

O(1)快速乘

1
2
3
4
5
ll MUL(ll x,ll y)
{
ll tmp=(long double)x/MOD*y+0.5;tmp=a*b-tmp*MOD;
return tmp<0?tmp+MOD:tmp;//利用LIMIT这个模数相同,做差得精确值
}

出题造数据器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ll rd(ll l,ll r)
{
if(l>r) puts("error");
if(l==r) return l;
return l+(RAND_MAX*rand()+rand())%(r-l+1);
}
char num[2];
void main()
{
int mxn=qread(),mxk=qread(),mik=qread();
for(int i=1;i<=9;i++)
{
string file="data\\vp";num[0]='0'+i;
string in=(file+num+".in"),out=(file+num+".out");
string cmd="vp.exe <"+in+" >"+out;

freopen(in.c_str(),"w",stdout);

fclose(stdout);
system(cmd.c_str());
// freopen(out.c_str(),"r",stdin);int num=qread();fclose(stdin);
// if(num==0) i--;
}
}

循环展开的高妙技巧

猫锟的代码

1
2
3
4
5
6
#define A if((--j)&=s2)ans+=f[j+low]*g[s2-j];else break;
for(int j=s2;;)
{
A A A A A A A A A A A A A A A A
ans%=D;
}

超级IO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
namespace fastIO
{
#define BUF_SIZE 100000
#define OUT_SIZE 100000
#define ll long long
bool IOerror=0;
inline char nc()
{
static char buf[BUF_SIZE],*p1=buf+BUF_SIZE,*pend=buf+BUF_SIZE;
if(p1==pend)
{
p1=buf;
pend=buf+fread(buf,1,BUF_SIZE,stdin);
if(pend==p1){IOerror=1;return -1;}
}
return *p1++;
}
inline bool blank(char ch){return ch==' '||ch=='\n'||ch=='\r'||ch=='\t';}
inline void read(int &x)
{
bool sign=0;
char ch=nc();
x=0;
for(;blank(ch);ch=nc());
if(IOerror)return;
if(ch=='-')sign=1,ch=nc();
for(;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';
if(sign)x=-x;
}
inline void read(ll &x)
{
bool sign=0;
char ch=nc();
x=0;
for(;blank(ch);ch=nc());
if(IOerror)return;
if(ch=='-')sign=1,ch=nc();
for(;ch>='0'&&ch<='9';ch=nc())x=x*10+ch-'0';
if(sign)x=-x;
}
char ss[1000000*15],tt[20];
int ssl,ttl;
inline int Flush()
{
fwrite(ss+1,sizeof(char),ssl,stdout);
ssl=0;
return 0;
}
inline int print(int x)
{
if(!x)ss[++ssl]='0';
if(x<0)ss[++ssl]='-',x=-x;
for(ttl=0;x;x/=10)tt[++ttl]=char(x%10+'0');
for(;ttl;ttl--)ss[++ssl]=tt[ttl];
return ss[++ssl]='\n';
}
inline int print(ll x)
{
if(!x)ss[++ssl]='0';
if(x<0)ss[++ssl]='-',x=-x;
for(ttl=0;x;x/=10)tt[++ttl]=char(x%10+'0');
for(;ttl;ttl--)ss[++ssl]=tt[ttl];
return ss[++ssl]='\n';
}
#undef OUT_SIZE
#undef BUF_SIZE
};
using namespace fastIO;

本文基于 知识共享署名-相同方式共享 4.0 国际许可协议发布
本文地址:http://zory.ink/posts/7de4.html
转载请注明出处,谢谢!