-
个人简介
#有需要可以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