其他知识点

64位整数乘法

利用 \(a \times b \bmod p=a\times b-\lfloor \frac{a\times b}{p}\rfloor \times p\)

ull calculate(ull a,ull b,ull p){
	a%=p; b%=p;
	ull c=(long double)a*b/p;
	ull x=a*b,y=c*p;
	long long ans=(long long)(x%p)-(long long)(y%p);
	if(ans<0) ans+=p;
	return ans;
}

汉诺塔

\(3\)塔:\(d_n=2d_{n-1}+1\)
\(4\) 塔:\(f_n=\min\limits_{1\le i<n}\{2*f_i+d_{n-i}\}\)
可以推广至 \(n\)\(m\) 塔。

奇偶数码

奇数码:逆序对个数的奇偶性相同。
偶数码:逆序对数之差与两个局面下空格所在行数之差奇偶性相同。
同样可以扩展至 \(n\times m\) 的网格。

始终对于序列某个位置操作

对顶堆 Acwing128

后缀表达式

无括号,唯一确定。

遇到数就入栈,遇到运算符就取出栈顶两个数进行运算,把结果入栈,直到栈中只剩下一个数。复杂度 \(O(n)\)

中缀表达式

计算可以先转后缀,然后按照上述方法计算后缀即可。遇到数就输出,遇到左括号就把左括号入栈,如果遇到右括号就不断取出栈顶并输出,直到栈顶为左括号,然后将左括号出栈。如果遇到运算符,只要栈顶符号的优先级不低于新符号,就不断取出栈顶并输出,最后把新符号入栈,优先级:乘除 > 加减 > 左括号。

基本知识点

1GB=1024MB,1MB=1024KB,1KB=1024B 1B=8bit

指针 int *p;

int x;
p=&x;
p++; Ox384e->Ox3853 //偏移量取决于x占几个字节 char 1 int 4 long 8
(*p)++<=>x++ 

引用 int& ans=dp[i][j][k];

typedef long long ll;
typedef int a[9];
queue<a> s;
memcmp(goal,s,sizeof(s));
memcmp(goal,s+1,sizeof(s+1));
memcmp(goal+1,s+1,/*字节*位数*/);//e.g. int 4   4*n 
//0是相同 1不同 
char a[20][20]
for(int i=1;i<=1;i++)
fgets(a[i],20,stdin);
//一行不知道有多少 
string line;
getline(cin,line);
stringstream ss(line);
ss>>n;
while(ss>>x) 
struct Node {
	int u,v;
	Node() {
		u = 1;
		v = 2;
	}
	Node(int u1, int v1) : u(u1), v(v1) {}
};
int main() {
	Node n(3,8);
	Node n1;
	
	Node *p = new Node(4, 7);
	return 0;
}

g++ -o a a.cpp -O2 -Wall

luogu@用法: @用户名

输入输出

  1. 整数用 %\(d\) 输出,实数用 %\(f\) 输出。比如 %\(.1lf\),就是输出一位小数。
  2. scanf 用法 scanf("%d%d",&a,&b); 别忘记 & 符号
    c \(\to\) char \(~~\) s \(\to\) char[] \(~~\) d \(\to\) int \(~~\) ld \(\to\) long
    lld \(\to\) long long \(~~\) f \(\to\) float \(~~\) lf \(\to\) double Lf $\to $ long double
    可以限制长度输入输出 scanf("%3d",&a); printf("%5d",a); scanf("%3s",a);
    注意第三个无 & 符号,读入不含空格换行和 TAB。
    限制种类 scanf("%[abcd],a");
  3. 整行输入 getline(cin,str);

vector

  1. 尾部复制:copy(v1.begin(),v1.end(),back_inserter(v2));
  2. 初始化
vector<int> primes {2, 3, 5, 7, 11, 13, 17, 19}; 
vector<int> a(100);
vector<double> values(20, 1.0);

第二种方法就塞了 \(100\)\(0\) 进去。

posted @ 2024-02-27 12:04  Mirasycle  阅读(2)  评论(0编辑  收藏  举报