Java/C++/C Jottings 简短笔记
清凉一度
喜欢经典,经典是时间的产物。
总觉得自己还小,干什么都还早。有道是“记得少年骑木马,转眼已是白头人”当我认识到这一点的时候,特别后悔没有珍惜时间。这里面的笔记是,很长时间以来对我自己的提升,自己的学习过程,大家的阅读和评论是对我的一丝认可,一点激励。
展开
-
Java写程序两个小技巧
1. String.format(“%02d”, year) year格式化为至少2位十进制整数 譬如 int year = 5; 结果为05 2. 在Java中也有类似ASCLL码的用法 if(hour>57){ System.out.print(String.format(“%02d”,(int) hour-55)); ...原创 2018-04-14 20:34:27 · 144 阅读 · 0 评论 -
sort排序的vector使用 与 vector的基本用法
C++中vector和set都是非常方便的容器,sort方法是algorithm头文件里的一个标准函数,能进行高效的排序,默认是按元素从小到大排序将sort方法用到vector和set中能实现多种符合自己需求的排序首先sort方法可以对静态的数组进行排序#include<iostream>using namespace std;int main(){ int a[1...原创 2019-03-14 16:28:38 · 5749 阅读 · 1 评论 -
最少乘法次数(模拟)
<< 是按位移中的左位移,向左移动几位就是乘以2的几次方>> 是按位移中的右位移,向右移动几位就是除以2的几次方当然这种运算要把位移的数转换成2进制题目描述:给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘。如2^4: 2 * 2=22(第一次乘),2 ^ 2 * 2^2 =2 ^ 4(第二次乘),所以最少共2次。2^...原创 2019-03-10 15:06:37 · 418 阅读 · 0 评论 -
快速幂算法模板||取余运算
快速幂算法模板求 mkm^kmk%p,时间复杂度 O(logkkk)。int qmi(int m, int k, int p){ int res = 1, t = m; while (k) { if (k&amp;amp;amp;amp;amp;1) res = res * t % p; t = t * t % p; k &amp;amp;amp;amp;gt;&amp;amp;am原创 2019-03-13 23:03:18 · 198 阅读 · 0 评论 -
Memset函数的使用
Memset函数的使用头文件:C:&lt;memory.h&gt;/&lt;string.h&gt;C++:&lt; cstring &gt;话说刚开始使用memset的时候一直以为memset是对每一个int赋值的,心里想有了memset还要for循环对数组进行初始化干嘛。但其实memset这个函数的作用是将数字以单个字节逐个拷贝的方式放到指定的内存中去memset(dp,0,size...原创 2019-03-07 16:57:04 · 1943 阅读 · 1 评论 -
Ctype库中的函数
关于cctype头⽂件⾥的⼀些函数刚刚在头⽂件那⼀段中也提到,cctype本质上是C语⾔标准函数库中的头⽂件 #include<ctype.h> ,其实并不属于C++新特性的范畴,在刷PAT⼀些字符串逻辑题的时候也经常⽤到,但是很多⼈似乎不了解这个头⽂件中的函数,所以在这⾥单独提⼀下~可能平时我们判断⼀个字符是否是字⺟,可能会写: char c; cin >> c...原创 2019-03-07 18:30:43 · 389 阅读 · 0 评论 -
归并排序和快速排序
归并排序归并排序的基本思想是将若干个序列进行两两归并,直至所有待排序记录都在一个有序序列为止这个图很有概括性,来自维基2016-07-15_归并排序.gif我们也可以用递归的思想,每次合并就是一次递归首先,将一整个序列分成两个序列,两个会分成4个,这样分下去分到最小单位,然后开始合并void Merge(int arr[], int reg[], int start, int end)...原创 2019-03-11 12:49:05 · 134 阅读 · 0 评论 -
bfs与dfs Template
bfs 一般题目中找搜索最短路径 且每一步路径都是一样的 优先考虑bfs 搜索效率会比较高 ,不是像dfs传个参数就完事了 一般都是用结构体来存储这个状态的信息。void bfs(起始点){ 将启示点放入队列中; 标记起点访问; while(如果队列不为空){ 访问队列中队首元素; 删除队首元素; for(x 所有相邻点){ if(该点未被访问过且合法){ 将...原创 2019-03-19 22:06:35 · 188 阅读 · 0 评论 -
结构体上的构造函数与赋值
node(int xx,int yy,int dd){//构造函数 x = xx; y = yy; d = dd; } q.push(node(sx,sy,0));for(int i = 0;i <= 4;i++){ int pre = now.x + cross[i]; int pry = now.y + stra[i]; if(!vis[sx][sy] &a...原创 2019-03-19 23:03:17 · 1185 阅读 · 0 评论 -
矩阵快速幂(标准模板)
题目描述给定n*n的矩阵A,求A^k输入输出格式输入格式:第一行,n,k第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第j列的元素输出格式:输出A^k共n行,每行n个数,第i行第j个数表示矩阵第i行第j列的元素,每个元素模10^9+7输入输出样例输入样例#1:2 11 11 1输出样例#1:1 11 1说明n&lt;=100, k&lt;=10...原创 2019-03-15 19:48:45 · 292 阅读 · 0 评论 -
竞赛上出现Presentation Error的一点经验
现在很多学校校内都有Online Judge平台(类似ACM平台),通常在电脑上写的程序运行成功后,在Online Judge平台上同样能Accepted。但是有时候,明明电脑上运行的结果正确,但在OJ平台上却会出错,当然,最常见也最纠结的,估计也就是Presentation Error。Presentation Error,和老师讨论了一下修改了代码,得到了关于这个错误的一点新的认识。想到这个问...转载 2019-03-11 23:34:07 · 2522 阅读 · 0 评论 -
记一次枚举的坑
蒜头君给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。比如,对于数列1 2 3 4,这个问题的答案就是 2,因为 3 = 2 + 1, 4 = 1 + 3输入格式共两行,第一行是数列中数的个数 n(1 ≤ n ≤ 100),第二行是由 n 个不大于10000 的正整数组成的数列,相邻两个整数之间用单个空格隔开。输出格式一个整数,即数列中等于其他两个数之和的数的个数。输出...原创 2019-03-08 09:54:07 · 855 阅读 · 0 评论 -
生理周期 计蒜客里面的坑(枚举)
人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为 2323 天、2828 天和 3333 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的...原创 2019-03-08 10:54:22 · 329 阅读 · 0 评论 -
STL的小技巧(持续更新)
map集合的使用:遍历 map<string,int>::iterator it; it = mp.begin(); while(it != mp.end()){ cout << it->first << " " << it->second << endl; it ++; }技巧...原创 2019-03-20 19:50:18 · 237 阅读 · 0 评论 -
位运算(基础)
前言众所周知,位运算是我们学计算机必学的东西,前人用二进制、位运算给我们了一个操作简单的计算机,但我们却很少接触位运算了。今天介绍一些位运算在算法中的运用。位运算基础&amp;amp;amp;按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0|按位或两个相应的二进制位中只要有一个为1,该位的结果值为1^按位异或若参加运算的两个二进制位值相同则为0,否则为1~取反~是一元运...原创 2019-03-13 19:39:21 · 297 阅读 · 0 评论 -
min_element()和max_element()函数的使用
min_element()和max_element头文件:#include作用:返回容器中最小值和最大值。max_element(first,end,cmp);其中cmp为可选择参数!max函数|C++返回数组中的最大值——max_element函数在头文件 #include 中,返回的是迭代器,所以输出值的话要在前面加 *第三个参数cmp可写可不写, max_element()...原创 2019-03-19 10:32:07 · 15185 阅读 · 2 评论 -
反序输出技巧
蒜头君最近被要求参加一个数字游戏,要求他把看到的一系列整数(长度不一定,以 0 结束,最多不超过 100 个),记住了然后反着念出来(表示结束的数字 0 就不要念出来了)。这对蒜头君的那点记忆力来说实在是太难了,所以请你帮他编程解决这个问题。输入格式一行内输入一系列整数(大小在 [1,10^9]之内),以 0 结束,用空格来分隔。输出格式一行内倒着输出这一系列整数,以空格间隔。样例输入...原创 2019-03-09 18:21:39 · 1166 阅读 · 0 评论 -
C++STL中函数next_permutation的使用
next_permutation函数:组合数学中经常用到排列,这里介绍一个计算序列全排列的函数:next_permutation(start,end),和prev_permutation(start,end)。这两个函数作用是一样的,区别就在于前者求的是当前排列的下一个排列,后一个求的是当前排列的上一个排列。至于这里的“前一个”和“后一个”,我们可以把它理解为序列的字典序的前后,严格来讲,就是对...原创 2019-03-09 12:03:53 · 1759 阅读 · 0 评论 -
String,StringBuffer与StringBuilder的区别??
String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常...转载 2018-04-17 21:56:17 · 122 阅读 · 0 评论 -
两种Java集合遍历方法
ArrayList<String> list=new ArrayList<String>();int a=Integer.parseInt(sc.nextLine());//int a=sc.nextInt();for(int i=0;i<8;i++){ list.add(sc.nextLine());}对于集合的两种遍历方法①对于java SE...原创 2018-04-13 17:55:23 · 194 阅读 · 0 评论 -
C++与C语言当中的一些编程技巧
对于C++与C语言当中的一些技巧 后续会一直更新,首先来说说字符变为数字的方法: ①int c=str[length-1]-48; 对于每个数字占5个字符宽度,向右对齐 ②原创 2018-05-22 11:30:03 · 398 阅读 · 0 评论 -
对于C++里面数字字符与数字相互转换
//这个例子比较简单,可以使用string接收输入,再用(sin[i]-'0' == j) 把字符串分成数字,因为不管什么样的数据类型都无法放1000位的整数 string sin; int ans[10] = {0}; cin &amp;amp;gt;&amp;amp;gt; sin; for (int i=0;i&amp;amp;lt;sin.length();i++) { for...原创 2018-05-30 20:11:04 · 27998 阅读 · 0 评论 -
C++里面的小技巧(持续更新)
C/C++ 取整函数ceil(),floor()在这里插入代码片原创 2019-01-20 00:08:11 · 646 阅读 · 0 评论 -
c++中的atoi()和stoi()函数的用法和区别
相同点:①都是C++的字符处理函数,把数字字符串转换成int输出②头文件都是#include&lt;cstring&gt;不同点:①atoi()的参数是 const char* ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const char类型的,而stoi()的参数是const string,不需要转化为 const char*;②stoi(...转载 2018-12-30 15:23:47 · 1811 阅读 · 0 评论 -
C++/C语言中数学知识
输入格式:输入在一行中顺序给出 2 个整数 C1 和 C2。注意两次获得的时钟打点数肯定不相同,即 C1 &amp;amp;amp;amp;lt; C2,并且取值在 [0,10710^7107 ]。输出格式:在一行中输出被测函数运行的时间。运行时间必须按照 hh:mm:ss(即2位的 时:分:秒)格式输出;不足 1 秒的时间四舍五入到秒。int n = ((b - a) + 50) / 100;注意得分点:...原创 2018-12-30 18:10:29 · 549 阅读 · 0 评论 -
C++: string 中find函数的用法以及string::npos的含义
问题:有两个字符串a、b, 现想判断a字符串是否包含b字符串,该如何设计程序?思路:此处需要用到string库中的find函数与npos参数。先说说string::npos参数:npos 是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type 许多容器都提供这个东西。取值由实现决定,一般是-1,这样做,就不会存在移植的问题了。再来说说fin...原创 2018-12-30 19:33:13 · 589 阅读 · 1 评论 -
使用ACSII来统计字符的多少
把数字字符转换为ACSII码把ACSII码转换为数字/*第一种写法*/ for(int i = 0;i < str1.length();i++){ if(str1[i] >= 'a' && str1[i] <= 'z'){ arr1[(int)(str1[i])]++; } }/*第二种写法*/ for (int i = 0; i <...原创 2018-12-31 17:48:31 · 122 阅读 · 0 评论 -
转换为大小写字符
转换为大小写字符:方法一: string str1; getline(cin,str1); transform(str1.begin(), str1.end(), str1.begin(), ::toupper); string str1; getline(cin,str1); transform(str1.begin(), str1.end(), str1.begin(), ::...原创 2018-12-31 17:52:50 · 251 阅读 · 0 评论 -
带路径压缩的并查集模板:
带路径压缩的并查集模板:class UnionFind{public: vector<int>father; UnionFind(int num){//num表示元素的个数 for(int i = 0; i < num; i++){ father.push_back(i);//箭头指向自己 } }...原创 2019-05-16 07:45:59 · 395 阅读 · 0 评论