反思与总结__C++
.
苏格拉没底——
一沙一世界
展开
-
vector
#include<vector>//initvector<int> v;vector<int> v(n);//值随机 vector<int> v(n,0/inf);v.push_back(5);v.size();v.pop_back();v.clear();v.insert(v.begin(),-1);//插入一个-1 v.insert(v.begin(),10,-1)//插入10个-1v.resize(10);//将v的大小调...原创 2020-08-31 16:55:38 · 80 阅读 · 0 评论 -
自用模板总结(adding)
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<queue> #include<stack> #include<vector> #include<map> #include<set>// attention// 暴力破解 f.原创 2020-12-02 22:15:25 · 205 阅读 · 0 评论 -
string
#include<string>//initstring str="";string str(10,'A');str += c;str = str + char(c);//funcstr.substr(pos);str.substr(pos,length);str.find(s) != string::npos str.insert(pos,str2);str.insert(pos,char);str.insert(pos,num,char);str.clear().原创 2020-08-31 16:55:14 · 79 阅读 · 0 评论 -
map
#include<map>map<string,int> mp;//自动按照键值升序 mp["abcd"] = 1;mp.clear();mp.begin();mp.end();mp.size();mp.empty();//查找有两种,一种是用find,一种用count//用find查找时如果没找到则返回mp.end() 找到则返回对应位置的迭代器 //用count查找找到返回1 找不到返回0 mp.count(key);mp.find(key);.原创 2020-08-27 10:29:37 · 91 阅读 · 0 评论 -
queue
#include<queue>queue<int> q;q.push(a);q.front();q.back();q.pop();q.size();q.empty(); //优先队列 堆priority_queue<int> q;priority_queue<int,vector<int>,less<int> > q;priority_queue<int,vector<int>,gre.原创 2020-08-31 16:54:56 · 62 阅读 · 0 评论 -
pair
#include<map>//pair就相当于只含有两个变量的结构体,不同的是它可以直接比较大小 //struct pair{// // string first;// int second;//};pair<string,int> p("abc",1); //因为相当于结构体,所以访问内部的变量用 . p.firstp.second p1 = p2p1 > p2 先按照first比,相等在按照second比 ...原创 2020-08-27 10:28:49 · 65 阅读 · 0 评论 -
set
#include<set>//init set<int> st;//funcst.insert(a);st.begin();//第一个元素的地址 st.end();//st.count(key)//某一个key是否出现过 0 1 st.erase(st.begin());st.erase(st.begin(),st.end());st.erase(key);//集合特有的erase是按照值消除//string特偶的是按照长度 str.erase(st.原创 2020-08-31 16:55:28 · 103 阅读 · 0 评论 -
大佬的板子
#include <stack>#include <set>#include <map>#include <queue>#include <string>#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <math.h>using namespac..翻译 2021-05-31 21:22:01 · 104 阅读 · 0 评论 -
二分查找
int A[N];int bsearch(int A[],int l,int r,int x){ while(l<=r){ int mid=(l+r)/2; if(A[mid]==x) return mid; else if(A[mid]<x) l=mid+1; else r=mid-1; } return -1;}原创 2021-03-24 17:51:21 · 60 阅读 · 0 评论 -
DevC++常用快捷键及小技巧及误区
Ctrl+/ 快速对一行进行注释,拉中的范围也可以,再次进行则取消注释Ctrl+w 关闭Ctrl+s 保存Ctrl+m 新开一页Ctrl+b 打开文件所在位置Ctrl+f 搜索与替换Ctrl+n 新建Ctrl+d Ctrl+e 删除、复制一行Ctrl+z Ctrl+y 撤销与还原Ctrl+shitf+w 全部关闭Ctrl+shift+s 全部保存Ctrl+...转载 2019-12-05 21:58:09 · 2287 阅读 · 0 评论 -
天梯赛注意事项
格式错误 有的时候题目隐含的条件是要你输出两行的,即使第二行什么也没有,也得输出。答案错误可能涉及特殊值的处理 或者 题意与你本身的思维不一致原创 2023-07-08 00:11:08 · 174 阅读 · 0 评论 -
位运算基础
int a; a*1.0 a*1ll1<<n = 2^n n<<1 = n*21>>n = 1 / (2^n) n>>1=n/2判断一个数是不是偶数 n%2 == 0 n&1 == 1判断一个数是不是偶数其实就是看其对应的二进数的最后一位是不是1 , 是1 就是奇数,是0就是偶数if(a&1) cout<<odd;else ...原创 2020-08-31 16:56:51 · 86 阅读 · 0 评论 -
求余数运算
转自mod:模。意思就是求余数。 比如说:5 mod 3=2, 100 mod 11=1 读作:五模三余二,一百模十一余一 这是标准的公式化写法,大家可能不太熟悉,但是知道意思了,其实也很简单。引入Mod,主要是可以用数学公式来写,而且可以把求余数的问题化简成为普通的四则运算的问题,也比较容易表达。 在讲如何求余之前,先来普及一下余数的一些性质。 首先就是余数的...转载 2020-03-11 17:08:26 · 4883 阅读 · 2 评论 -
更相减损术求gcd
可半者半之 16,24 ----- 8 ,12 #include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#include<string>using namespace std;...原创 2020-08-31 17:06:24 · 249 阅读 · 0 评论 -
ax+by=c有解
参考a b x y 均为整数如果ax+by=c 有解 那么c一定是gcd(a,b)的倍数 否则无解假设 ax+by=gcd 的解为 (x0,y0)则 可得到 ax+by=c 的解为 ( c/gcd*x0,c/gcd*y0)然后由特解求通解设 c/gcd*x0+s1 c/gcd*y0-s2 为原方程的一组解,带入并联立ax+by=c得s1/s2=b/a...翻译 2020-03-04 22:43:19 · 3795 阅读 · 0 评论 -
拓展欧几里得定理
参考贝祖定理:如果a b是整数,那么一定存在整数x y使得ax+by=gcd(a,b) 即如果ax+by=c有解,那么c一定是gcd的倍数(c一定能整除gcd,c%gcd==0)如果ax+by=1有解,那么gcd(a,b)=1.欧几里得辗转相除求a b的最大公约数gcd(a,b)=gcd(b,a%b)int gcd(int a,i...翻译 2020-03-04 22:35:43 · 197 阅读 · 0 评论 -
cstring
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#include<string>using namespace std;const int maxn=10010;const int N=...原创 2020-02-13 21:41:09 · 118 阅读 · 0 评论 -
cstdio/stdio.h 的区别/ gets(s+1)的注意事项
#include<stdio.h>//#include<cstdio>using namespace std;const int maxn=10010;const int N=10;//如果是.h 会进行四舍五入//下面那个直接切断 int main(){ double db=3.25; printf("%.1f",db); return ...原创 2020-02-13 13:56:22 · 465 阅读 · 0 评论 -
区间贪心
区间不相交问题:给出n个开区间(x,y),从中选出尽可能多的开区间,使得这些开区间间两两没有交集。首先考虑最简单的情况,如果开区间I1被开区间I2包含,如果选I1那么就有更大的空间去容纳其他的开区间。把所有开区间按左端点从小到大排序,左端点相等的按右端点从小到大排序,这样选择的时候如果遇见左端点相等的就会自动区间长度较小的。#include<cstdio>#includ...翻译 2020-02-08 13:47:38 · 186 阅读 · 0 评论 -
任意进制之间的转换模板
//由m进制转换为n进制//思路 先由m进制转换为10进制 按权展开式//再由10进制转换为n进制 辗转相除法,保留每一步的余数//手动建立映射,便于编写过程 string m2n(string str){ int hashch[256]; for(int i=0;i<=9;i++) hashch[i+'0']=i; for(int i=10...翻译 2020-02-06 15:10:55 · 123 阅读 · 0 评论 -
恢复基因链 (20分)
世界上最富有的人想必大家都已经知道了,是garden,由于garden钱实在是太多了,他投了大量的钱给科学研究室,但是最近科学研究室发现了一些缺失的基因链,他们一时间不能马上恢复这个基因链,于是,garden打算重金悬赏能恢复这些基因链的勇士。 首先给出一条字符串,仅含有’A’,‘C’,‘G’,‘T’,’?’,5种字符,其中?代码缺失的基因,已知该基因为猛犸象基因,即基因链中,ACGT每一种核苷酸...原创 2020-02-06 12:49:03 · 684 阅读 · 0 评论 -
单词加密解析 (15分)
输入一个英文单词(由六个小写英文字母组成),按照下列过程将该单词加密:先将英文单词中的小写字母转换为对应的大写字母,再将该大写字母的ASCII码对10整除后取其余数,从而得到一个六位整数密码。输入格式:输入在一行中给出1个由六个小写英文字母组成的英文单词。输出格式:按照规则转换成一个六位整数密码,并输出转换的过程。输入样例:friday1输出样例:f->F->...原创 2020-02-05 21:14:49 · 2195 阅读 · 0 评论 -
Wifi密码 (10分)
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。谢谢合作!!~”—— 老师们为了促进学生学习也是拼了…… 本题就要求你写程序把一系列题目的答案按照卷子上给出的对应关系翻译成 wifi 的密码。这里简单假设每道选择题都有 4 个选项,有且只有 1...原创 2020-02-05 20:58:01 · 340 阅读 · 0 评论 -
环状序列/用求余实现折返
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>//环状序列 using namespace std;const int maxn=10010;const int N=10;int less_(c...原创 2020-02-05 20:56:01 · 132 阅读 · 0 评论 -
lower_bound/前提有序/采用二分查找
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#include<vector>#include<set>using namespace std;const int maxn=...原创 2020-02-05 20:54:57 · 183 阅读 · 0 评论 -
结构体的构造函数
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int maxn=10010;const int N=10;struct bign{ i...原创 2020-02-05 20:54:14 · 4267 阅读 · 0 评论 -
sstream/stringstream/ss/字符串输入流
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#include<sstream>using namespace std;const int maxn=10010;const int N=...原创 2020-02-05 20:53:40 · 1023 阅读 · 0 评论 -
组合数/浮点误差/求两点间距离
struct point{ double x,y };double dist(point a,point b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));} long long C(int n,int m){ if(m<n-m) m=n-m; long long res=1; for(int...原创 2020-08-31 17:08:17 · 113 阅读 · 0 评论 -
Big Number
大整数运算,没有办法用已有的数据来进行运算的时候模拟加减乘除运算的过程大整数又称为高精度整数 即 基本数据类型无法储存其精度的整数 数组中的每一位代表了存放的整数中的每一位整数的高位存储在数组的高位,整数的低位存储在数组的低位因为在进行运算的时候都是从整数的低位枚举到高位的 思维相和struct bign{ int d[1000]; int len; bign...原创 2020-01-30 17:06:45 · 746 阅读 · 0 评论 -
素数Prime
质数即素数 除了1和它本身以外没有其他的因子的数合数 除了1和它本身以外,还有其他的因子1既不是质数,也不是合数a/b=k...r a=k*b+r r=a%b k=a/b素数 (对于介于1到n的任意的一个数a n%a!=0 都除不尽) 1<a<n n%a!=0余数不为零 除不尽 n%a!=0余数为零 能整除 n%a==0如果一个数n除了1...原创 2020-01-29 20:10:42 · 724 阅读 · 0 评论 -
找1到100内的素数
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int maxn=10010;const int N=10;int prime[100+10],p...原创 2020-01-28 21:03:02 · 631 阅读 · 0 评论 -
数字黑洞
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn=10010;const int N=10;bool cmp(int a,int b){ return a>b;...翻译 2020-01-27 20:47:18 · 118 阅读 · 0 评论 -
分数的四则运算
Fraction 分数 minus - multiply * add dividestruct Fraction{ int up,down;};Fraction reduction(Fraction t){ if(t.down<0){ t.down*=-1; t.up*=-1; } if(t.up==0){ t.do...原创 2020-01-27 20:46:33 · 157 阅读 · 0 评论 -
求最大公约数gcd
求解最大公约数常用欧几里得算法即辗转相除法a / b =k....r 则 a=kb+ra与b的最大公约数 就是b与r的最大公约数 r=a%b即 gcd(a,b)=gcd(b,a%b)0与任何数a的最大公约数是其本身,gcd(a,0)=0所以辗转相除的时候的边界即为b为零的时候.当传入的数据不是a>b的时候,第一步递归会调整位置int gcd(int a...原创 2020-01-27 17:24:00 · 254 阅读 · 0 评论 -
ctype.h
菜鸟教程https://www.runoob.com/cprogramming/c-function-isprint.htmlisalpha(ch)isdigit(ch)isupper(ch)islower(ch)toupper(ch)tolower(ch)#include<iostream>#include<cstdio>#includ...原创 2020-08-31 17:03:40 · 78 阅读 · 0 评论 -
入门-3
#define LOCAL#include<iostream>#include<stdio.h>#define INF 0x3f3f3f3fusing namespace std;struct Node{ int next;}node[100005];int n,m;int main(){ #ifdef LOCAL freopen...原创 2020-10-07 23:09:23 · 70 阅读 · 0 评论 -
time.h/debug-计时测试-条件编译-文件读入-输入输出重定向
#define LOCAL#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int maxn=10010;int main(){ #ifdef LOCAL freopen("test.in","r",stdin); freop...原创 2020-10-07 23:09:02 · 110 阅读 · 0 评论 -
dp3
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int maxn=10010;//最大连续子列和 //状态 dp[i] 表示以A[i]结尾的最大连续子序列的和//边界条件 dp[1]=A[i]//状态转移方程 dp[i] dp[i-1...原创 2020-08-31 17:08:04 · 162 阅读 · 0 评论 -
dp2
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int maxn=10010;//最大连续子列和 //状态 dp[i] 表示以A[i]结尾的最大连续子序列的和//边界条件 dp[1]=A[i]//状态转移方程 dp[i] dp[i-1...原创 2020-08-31 17:07:54 · 117 阅读 · 0 评论 -
dp1
在进行递归的过程中 往往会出现重复计算,而这个过程会比较浪费时间,往往会浪费掉2^n的时间复杂度,为了避免重复的计算,可以采用保留中间结果的方式来使时间复杂度降低到n方。#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int maxn=1...原创 2020-08-31 17:07:33 · 196 阅读 · 1 评论