C、C++语言
X丶
这个作者很懒,什么都没留下…
展开
-
C++ 使用bind方法,在类里面使用带有非静态cmp函数的sort
#include <iostream>#include <algorithm>#include <functional>using std::placeholders::_1;using std::placeholders::_2;class A {public: bool cmp(int x, int y) { ... } void test() { auto bound_cmp=bind(&.原创 2021-07-12 14:28:02 · 240 阅读 · 0 评论 -
离散化--个人总结
使用离散化的一般情况:1⃣️ 数据的值的范围太大,但数据的量并不多2⃣️ 值的大小不重要,重要的是值之间的大小关系离散化一般方法:1⃣️ 排序2⃣️ 去重3⃣️ 形成新的映射例子:https://www.cnblogs.com/farewell-farewell/p/5330429.html常用到的STL库函数:unique(start,end...原创 2019-11-16 20:48:15 · 163 阅读 · 0 评论 -
在线查询第K个元素
分块思想(参考算法笔记):假设数组大小为N,那么我们把数组分成 block_num = sqrt(N)个块【向上取整】,每个块的范围是block_size= sqrt(N)【向下取整】,用block[i]记录第 i 块的元素个数,然后再开一个数组 table[i] 记录数值为 i 的元素个数添加元素 x 的时候,计算元素对应的块号为idx =x / block_size ,然后令 block[idx]+=1 , table[x] +=1删除元素 x 的时候,计算元素对应的块号为...原创 2021-03-07 10:50:23 · 125 阅读 · 0 评论 -
Find More Coins(记录背包的选择)
1068 Find More Coins (30 point(s))Eva loves to collect coins from all over the universe, including some other planets like Mars. One day she visited a universal shopping mall which could accept all kinds of coins as payments. However, there was a special原创 2021-03-05 13:45:08 · 180 阅读 · 0 评论 -
最长不下降子序列(推广问题)
最长不下降子序列问题的定义:在一个序列中,找到一个最长的子序列,其中这个序列是非递减的我们可以把这个非递减推广,其实非递减就是一种顺序,那么我们可以把定义推广到:给出一个顺序序列、目标序列中,在目标序列中找到一个最长的子序列,其中这个子序列是符合给出顺序的子序列解决这个推广的问题,我们可以把这个顺序序列的每一个元素映射到一个递增序列假设顺序序列为X、Y、Z,那么我们可以把它映射到 0、1、2(用Hash表实现)然后目标序列为 XYXXZXYZ,我们从上面的Hash表中找到它对应的序列为.原创 2021-03-01 11:24:11 · 140 阅读 · 0 评论 -
Jugs (BFS解决方法)
JugsTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1449Accepted Submission(s): 480Problem DescriptionIn the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with the ...原创 2021-02-19 10:25:16 · 318 阅读 · 0 评论 -
codeup:问题 D: 最短路径
题目描述有n个城市m条道路(n<1000, m<10000),每条道路有个长度,请找到从起点s到终点t的最短距离和经过的城市名。输入输入包含多组测试数据。每组第一行输入四个数,分别为n,m,s,t。接下来m行,每行三个数,分别为两个城市名和距离。输出每组输出占两行。第一行输出起点到终点的最短距离。第二行输出最短路径上经过的城市名,如果有多条最短路径,输出字典序最小的那条。若不存在从起点到终点的路径,则输出“can't arrive”。样例输入3 3原创 2021-02-19 10:18:59 · 345 阅读 · 0 评论 -
迷宫问题输出超限反思
做了一题简单的迷宫题,但是OJ一直显示“输出超限”,一直找不到哪里出错后来发现,原来,我的习惯是:先判断合法性、设置标志,再进入下一层DFS,但是!!!在main函数进入DFS的第一层的时候,我忘记设置“标志”,这就违反了我上面“先标志,后进入”的原则,导致迷宫路径计算出错#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<algorithm>#include<string>#incl.原创 2021-02-01 18:56:49 · 172 阅读 · 1 评论 -
PAT 1074 Reversing Linked List
1074Reversing Linked List(25point(s))Given a constantKand a singly linked listL, you are supposed to reverse the links of everyKelements onL. For example, givenLbeing 1→2→3→4→5→6, ifK=3, then you must output 3→2→1→6→5→4; ifK=4, you must outpu...原创 2021-01-28 21:23:46 · 84 阅读 · 0 评论 -
PAT 1056 Mice and Rice (25point(s))(队列的使用)
1056Mice and Rice(25point(s))Mice and Riceis the name of a programming contest in which each programmer must write a piece of code to control the movements of a mouse in a given map. The goal of each mouse is to eat as much rice as possible in order t...原创 2021-01-28 17:47:41 · 96 阅读 · 0 评论 -
cin、getline的坑
cin、scanf 读取一个数据后,会遗留一个‘\n’在后面如果我们接着使用getline,就会把上面cin、scanf遗留下来的‘\n’读入。因为getline遇到‘\n’会读入结束,所以会读到一个空字符串如果我们需要在cin、scanf紧接着用getline,那么我们需要在cin、scanf后面加上一个getchar(),吃掉'\n'cin>>n;getchar();getline(cin,str);在循环使用getline的时候,不需要使用getchar(),因为ge原创 2021-01-25 13:24:28 · 373 阅读 · 0 评论 -
C++字符串数组排序技巧
#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<algorithm>#include<vector>#include<map>#include<unordered_map>#include<string>#include<unordered_set>#include<iterator>#include<sstream&g.原创 2021-01-25 11:11:07 · 5713 阅读 · 1 评论 -
把浮点型数值用科学计数法输出
#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<algorithm>#include<string>using namespace std;struct SCINUM { // 科学计数法结构体 string valid_num; //有效位 int pow;//指数 SCINUM() { pow = 0; }};SCINUM str2Sci(string num,int .原创 2021-01-21 13:37:52 · 1760 阅读 · 0 评论 -
求n!中含有质因子p的个数
定理:中含有质因子p的个数为,其中int cal(int n, int p) { int ans = 0; while (n != 0) { ans += n / p; n /= p; //相当与分母多乘一个p } return ans;}原创 2021-01-19 13:58:13 · 894 阅读 · 0 评论 -
大整数运算(必记)
大整数运算结构体struct bign { int d[maxn];//d的低位就是数值N的低位 int len;//大整数长度 //int symbol; bign() { memset(d, 0, sizeof(d)); len = 0; //symbol = 1; }};字符串转化为大整数型bign str2bign(char str[]) { bign num; int len = strlen(str); if (str[0] == '-')num.s原创 2021-01-19 13:24:47 · 212 阅读 · 0 评论 -
因子(约数)的个数
假设N = p * q ,那么p与q都是N的约数显然有,在1,2,... k ()中,如果N%k==0 ,那么就能找到N的一个或者两个约数当时,找到N的两个约数,k与n/k当时,找到N的一个约数,k#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<cstdio>#include<algorithm>#include<string.h>#include<...原创 2021-01-18 22:09:24 · 111 阅读 · 0 评论 -
质因子分解
以下思路参考《算法笔记》质因子分解:把一个正整数n写成一个或多个质数相乘的形式例如 6=2✖️3 ,180=2✖️2✖️3✖️3✖️5先说如何判断一个数n,是否在[2,n) 中存在它的因子:假设这个n存在因子为k[2,n),那么nmod k=0假设这个n存在因子为 k [2,n) ,那么n\mod k=0假设这个n存在因子为k[2,n),那么nmodk=0由于n×nk=n,所以nmod nk=0,所以k与nk都是n的因子,且min(k,nk)<n由于 n\times\frac{n}{k}原创 2021-01-16 16:51:39 · 358 阅读 · 0 评论 -
PAT计算出2~N所有素数
#define maxn 405000int prime[maxn]; //保存素数的数组bool flag[maxn]; //记录是否为素数int cnt;void getPrime(int n) { memset(flag, 0, sizeof(bool)*maxn); cnt = 0; for (int num = 2; num <= n; num++){ if (flag[num] == false) { //如果num是素数 prime[++cnt] = num;/.原创 2021-01-15 19:53:06 · 103 阅读 · 0 评论 -
C语言的分数运算(简单版)
#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<cstdio>using namespace std;typedef long long ll;class Fraction {public: ll up, down;// up、down分别是分子、分母 Fraction(ll x = 0, ll y = 1) { up = x; down = y; this->reduction.原创 2021-01-15 15:04:57 · 4767 阅读 · 0 评论 -
C语言float、double、longlong的输入输出格式
float : scanf("%f,&b); printf("%f", a);double : scanf("%lf", &a) ;printf("%f", a);long long :scanf("%lld",&a);printf("%lld",a);原创 2021-01-13 16:53:40 · 10019 阅读 · 0 评论