• 个人简介

    #有需要可以Copy

    set & map

    set<int> st;
    map<string,int> mp;
    mp[key] = value;//插入键值
    

    随机数造数据

    #include
    using namespace std;
    int main(){
    	freopen( "test.in" , "w" , stdout );
    	srand( int ( time ( 0 ) ) );
    	int n, m, p, a;
    	n = rand() % 10000;
    	m = rand() % 10000;
    	cout << m << endl;
    	cout << n << endl;
    	while( m-- ){
    		p = rand() % 10000;
    		a = rand() % 10000;
    		cout << p << ' ' << a << endl;
    	}
    	fclose( stdout );
    }
    

    万能开头:

    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
    
    }
    

    关于vector:

    vector<int> v;//创建一个空vector
    v.push_back(x)//向尾部增加一个元素x
    v.insert(pos,x)//向pos地址指向元素前增加一个元素x
    v[i]//访问第i位元素
    v.pop_back()//删除向量中最后一个元素
    v.clear()//清空向量中所有元素
    v.empty()//判断向量是否为空
    v.size()//返回向量中元素的个数
    v.begin()//返回量头指针(迭代器),指向第一个元素
    v.end()//返回量尾指针(迭代器),指向第一个元素+1位置
    v.erase(v.begin()+i)//删除第i位位置的元素
    

    全排列函数:

    next_permutation(数组头地址,数组尾地址);//求下一个全排列
    prev_permutation(数组头地址,数组尾地址);//求上一个全排列
    

    排列数组(sort函数):

    sort(a(begin),a(end)+size);//默认小到大
    sort(a(begin),a(end)+size,greater<int>());//大到小
    sort(a(begin),a(end)+size,less<int>());//小到大
    
    与字符相关的函数
    
    ``none
    getchar()//输入单个字符
    putchar()//输出单个字符
    islower(x)//判断x是否为小写字母
    isupper(x)//判断x是否为大写字母
    isdigit(x)//判断x是否为数字
    isalpha(x)//判断x是否为字母
    

    builtin内建函数

    __builtin_ffs(x)//返回x中最后一个为1的位是从后往前的第几位
    __builtin_popcount(x)//x中1的个数
    __builtin_ctz(x)//x末尾0的个数,x=0时结果未定义
    __builtin_clz(x)//x前导0的个数,x=0时结果未定义
    __builtin_parity(x)//x中1的奇偶性
    ```二分查找核心代码
    
    ```none
    int dp[30000];
    int n;
    int fun(int k){
        int l=0,r=n-1,m=l+r/2;
        while(l<r){
            if(k==dp[m]){
                return m;
            }else if(k>dp[m]){
                l=m+1;
            }else{
                r=m-1;
            }
        }
        return -1;
    }
    

    最大公因数&最小公因数

    a=al*gcd(a,b)
    b=bl*gcd(a,b)
    lcm(a,b)=al*gcd(a,b)*bl
    
    a*b=gcd(a,b)*lcm(a,b)
    

    斐波那契数列

    int dfs( int a ){
        if( a == 1 || a == 2 ){
            return 1;
        }
        return dfs( a - 1 ) + dfs( a - 2 );
    }
    

    二分查找法

    binary__search()![]
    
    #include<bits/stdc++.h>
    using namespace std;
    
    int n, q;
    string s[1000];
    
    bool find( string a , int len , int k){//s[k]------------被查找
    if( s[k].size() < len ){
    return false;
    }
    for( int i = s[k].size() - len,i1 = 0; i < s[k].size(); i++ , i1++ ){
    if( s[k][i] != a[i1] ){
    return false;
    }
    }
    return true;
    }
    
    bool cmp( string a, string b ){
    if( a.size() == b.size() ){
    return a < b;
    }else{
    return a.size() < b.size();
    }
    }
    
    int main() {
    cin >> n >> q;
    for( int i = 0; i < n; i++ ){
    cin >> s[i];
    }
    sort( s, s+n ,cmp);
    for( int i = 0; i < q; i++ ){
    int a;
    cin >> a;
    string str;
    cin >> str;
    bool flag = true;
    for( int i = 0; i < n; i++ ){
    if( find(str,a,i) ){
    cout << s[i] << endl;
    flag = false;
    break;
    }
    }
    if( flag ){
    cout << -1 << endl;
    }
    }
    return 0;
    }
    
  • 通过的题目

  • 最近活动

    This person is lazy and didn't join any contests or homework.

题目标签

顺序结构
21
小学生C++趣味编程
20
一本通编程启蒙
6
来源
3
基础语法
3
分支结构
2
二维数组
2
指针
1