一些乱七八糟的东西

很久以前总结的一些乱七八糟的东西.
NOIp注意事项
http://debug18.com/posts/before-noip2016/

  • set

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    begin()--返回指向第一个元素的迭代器
    clear()--清除所有元素
    count()--返回某个值元素的个数
    empty()--如果集合为空,返回true
    end()--返回指向最后一个元素的迭代器
    equal_range()--返回集合中与给定值相等的上下限的两个迭代器
    erase()--删除集合中的元素
    find()--返回一个指向被查找到元素的迭代器
    get_allocator()--返回集合的分配器
    insert()--在集合中插入元素
    lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
    key_comp()--返回一个用于元素间值比较的函数
    max_size()--返回集合能容纳的元素的最大限值
    rbegin()--返回指向集合中最后一个元素的反向迭代器
    rend()--返回指向集合中第一个元素的反向迭代器
    size()--集合中元素的数目
    swap()--交换两个集合变量
    upper_bound()--返回大于某个值元素的迭代器
    value_comp()--返回一个用于比较元素间的值的函数
  • 求最大公约数

1
2
3
4
5
int gcd(int A,int B)
{
if (B==0) return A;
return gcd(B,A%B);
}

  • 位运算
    1
    2
    3
    4
    5
    6
    "&":相同位的两个数字都为1,则为1;若有一个不为1,则为0。
    "|"相同位只要一个为1即为1。
    "^"相同位不同则为1,相同则为0。
    "<"左移,相当于*2
    ">"右移,相当于/2
    "~"取反,1变0,0变1。

  • strlen();求字符串长度
  • substr用法。

1
2
3
4
5
6
7
int main()
{
string s="ABAB";
cout << s.substr(2) <<endl ; //输出AB
cout << s.substr(0,2) <<endl ; //同上
cout << s.substr(1,2) <<endl ; //输出BA
}

  • getline(cin,s);字符串s读到行结束
  • getline(cin,s,’#’);//一直输入,按#结束

1
2
3
4
5
6
7
size(); //返回实际个数
empty(); //判断是否为空
push(item); //压栈
top(); //返回栈顶元素
pop(); //将栈顶元素删除
s1.swap(s2); //将两个栈元素交互
s1 == s1; //判断是否相等

* sqrt(sqr(b[x][1]-b[y][1])+sqr(a[x][2]-a[y][2])),2点之间距离公式

求n在模p意义下的逆元(p为质数) n^(p-2)%p

约瑟夫问题 http://www.cnyali-lk.com/Josephus/