电脑操作知识备忘

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

[toc]

Python2瞎学

教程,写了个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
'''
这是多行注释,使用单引号
python a.py >>a.txt
'''
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
14
15
16
17
18
19
-Wall
开启提示
-std=c++11
-O2
一定要大写……
-m32
32位程序,配合gdb32
-Wl,--stack=SIZE
扩栈
-g3
如果只是g的话,gdb的时候没有宏
-Dxxx
定义xxx这个宏

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
感觉直接写cpp比较好
然后唯一要讲的点就是
if(system("diff a.out a.ans")) break;

卡常命令

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

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
#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;

造题三件套

以下的共用一段head

1
2
3
4
5
6
7
8
9
10
11
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mem(x,val) memset(x,val,sizeof x)
#define fo(i,l,r) for(int i=(l),I=(r);i<=I;i++)
#define fd(i,r,l) for(int i=(r),I=(l);i>=I;i--)
template<typename T>inline bool chmax(T&a,const T&b){return a<b?a=b,1:0;}
template<typename T>inline bool chmin(T&a,const T&b){return a>b?a=b,1:0;}
template<typename T> string tostr(const T& v){stringstream ss;ss<<v;return ss.str();}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
ll rd(ll l,ll r){return l+rng()%(r-l+1);}

造数据器

1
2
3
4
5
6
7
8
9
10
11
12
13
string proname="vp";
for(int i=1;i<=9;i++)
{
string file="data\\"+proname+tostr(i);
string in=(file+".in"),out=(file+".out");
string cmd=proname+".exe <"+in+" >"+out;
freopen(in.c_str(),"w",stdout);
//content
fclose(stdout);
system(cmd.c_str());
}

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
44
/*
lemon:
* argv[1]:输入
* argv[2]:选手输出
* argv[3]:标准输出
* argv[4]:单个测试点分值
* argv[5]:输出最终得分
* argv[6]:输出错误报告
CCR(转自oi-wiki,但实测后更改了argv1/4):
* argv[1]:输入
* argv[2]:标准输出
* argv[3]:选手输出
* argv[4]:在这里输出结论
Line1:输出最终得分比率 (0 ~ 1)
Line2:输出错误报告
*/
const int N=1e3+10;
int cnt[N][N];
int main(int argc,char*argv[])
{
freopen(argv[1],"r",stdin);
FILE *std = fopen(argv[2],"r");
FILE *out = fopen(argv[3],"r");
freopen(argv[4],"w",stdout);
int n,m,k;scanf("%d%d%d",&n,&m,&k);
int tmp;fo(i,1,n) scanf("%d",&tmp);
fo(i,1,m)
{
int x,y,c;scanf("%d%d",&x,&y);fscanf(out,"%d",&c);
if(c==0){ printf( string("0\nhe is weaker than Rose_king").c_str() );return 0; }
cnt[x][c]++,cnt[y][c]++;
}
fo(x,1,n)
{
int mi,mx;mi=mx=cnt[x][1];fo(j,2,k) chmin(mi,cnt[x][j]),chmax(mx,cnt[x][j]);
if(mx-mi>2)
{
printf( ("0\nWA on point: "+tostr(x)+", dif="+tostr(mx-mi)).c_str() );
return 0;
}
}printf("1\nGood job\n");
}//CF1240F Football

数据改名器

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
fo(i,1,99)
{
string now=tostr(i);
string cmd="ren "+now+".a"+" "+now+".out";
system(cmd.c_str());//cout<<cmd<<endl;
}
//---------------------------------------------------------------------------
int mxn[]={10,20,30,40,50,60,100,500};
int mxm[]={10,20,30,40,50,60,50,100};
char str[1000];int id[100];
int main()
{
string proname="b";
fo(i,0,111)//atcoder专用
{
string now=tostr(i);while((now.size())<3) now="0"+now;
string cmd="ren "+tostr(i>3)+"_"+now+".txt"+" "+tostr(i)+".in";system(cmd.c_str());
freopen((tostr(i)+".in").c_str(),"r",stdin);
int n,m;scanf("%d%d%s",&n,&m,str+1);fclose(stdin);
int mi=8;fo(i,0,7) if(n<=mxn[i] and m<=mxm[i]){ mi=i;break;}
string file=tostr(mi)+"_"+tostr(++id[mi]);
string in=(file+".in"),out=(file+".out");
cmd="ren "+tostr(i)+".in"+" "+in;system(cmd.c_str());
system((proname+".exe <"+in+" >"+out).c_str());
}
}

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