- 博客(330)
- 收藏
- 关注
原创 【acwing】92. 递归实现指数型枚举
递归搜索数的方式 (手动模拟) :从1开始,顺序访问每位数,是否选择,每位数有两种状态,选1或不选0.从1到n,顺序访问每位数,是否选择,每位数有两种状态,选1或不选0.当从1开始,不选1的时候。此时的根节点就为下一个数2,以此下去。
2023-12-12 22:10:16 576
原创 【acwing】算法指南蓝书_位运算_a^b_64位整数乘法
整数乘法是两个数a和b之间的乘法,将最小数b化为二进制,让a分别乘以b在二进制位数为1的系数,然后相加。幂运算是res = 1,因为类似a * a * a, 除非a为0,res = 1,可以让连乘进行下去。用加法实现乘法(龟速乘,原来两个数相乘为O(1),龟速乘为O(log)两个long long 数相加,不会爆long long。将b(十进制)转化为二进制的形式:如b=5,即101.整数乘法相当于有b个a相加,次数是。b的二进制位有O(logb)位。如b = 5, b = 101。
2023-12-07 16:47:38 1013
原创 VScode运行c语言代码出现“终端进程启动失败(退出代码: -1)终端将被任务重用,按任意键关闭”
在csnd搜索无果后,仔细看了下终端的报错提示如fig1,将cout输出改成了printf,发生终端正常运行了。但是为啥混用不行呢?博客提到通过安装其他扩展来直接运行代码。虽然,安装完扩展后,可以正常运行。但是,还是想知道为什么终端调试出现那样的问题。
2023-11-24 16:02:22 9427 2
原创 【PTA】1008 数组元素循环右移问题 (20分)
穿越隧道#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int a[N],b[N];int n,m;void inverse(int a[], int st, int ed){ for(int i = st,j = 0; j < ((ed-st)/2); i++,j++){ int t = a[i]; a[i] = a[ed - j - 1];
2022-05-10 22:04:48 189
原创 【PTA】1007 素数对猜想
穿越隧道题意:求两个素数(质数)之间的差值是否为2,若是,则ans++.且,最大的素数不能超过输入的NFloating point exception错误出现场合:求素数。错误原因:%0,导致出现这个错误。具体原理:因将cnt=1,而j从0开始,primes[0] = 0, 在if条件判断中i%primes[0] 开始报错#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int cnt
2022-05-07 22:51:33 225
原创 【PTA】1003 Emergency
穿越隧道AC版#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 10, M = N*N;typedef pair<int,int> pii;int h[N],e[M],ne[M],w[M],idx;void add(int a, int b, int c){ e[idx] = b; w[idx] = c; ne[idx] = h[a]; h[a] = idx++;}int dis
2022-05-05 21:24:24 289
原创 【PTA】1002 A+B for Polynomials
穿越隧道15scores失分原因:1.没有使用printf来保留一位小数,而是直接使用了cout2.格式错误,行末无空格,或许选择采用空格+数字,会比数字+空格的方式更好#include <bits/stdc++.h>#define x first#define y secondusing namespace std;const int N = 1e5 + 10;typedef pair<int,double> pii;pii a[N],b[N],ans[
2022-05-04 15:55:04 325
原创 【PAT】1001 A+B Format
穿越隧道因数据范围小,所以不需要用到高精度。通过vector和字符串来将a+b的结果,以英文格式输出#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int a,b;int main(){ cin >> a >> b; int c = a + b; vector<int> cc; if(c < 0){ c.
2022-05-04 14:56:46 126
原创 【2022天梯赛】L1-8 静静的推荐 & L2-1 插松枝 & L2-2 老板的作息表
L2-1 插松枝 Score 25栈+队列+vector+模拟#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;queue<int> q;stack<int> hez;vector<int> ans[N];int main(){ int n,m,k; cin >> n >> m >> k; for(int i = 0
2022-04-27 14:47:18 1367 1
原创 【acwing】1912. 里程表(思维|STL)
穿越隧道AC版因数据范围很大,依次遍历,按道理大概率会TLE.类似构造法、逆向思维。对于一个数字字符串:其数字元素全相同改变数字字符串的其中一个元素(除前导零),改变后的元素是否在数据范围内,若是,则答案++。atoll:字符串转为long long#include <bits/stdc++.h>using namespace std;// const int N = typedef long long ll;ll x,y;ll ans;map<int,in
2022-04-25 21:48:42 306 1
原创 【acwing】2003. 找到牛(思维)
穿越隧道O(n)只扫一遍#include <bits/stdc++.h>using namespace std;typedef pair<int,int> pii;const int N = 10;map<pair<pii,pii>,int> mp;int ans,cnt;string s;int main(){ cin >> s; int len = s.size(); // cout <&
2022-04-25 20:06:39 308
原创 【洛谷】P1162 填涂颜色(bfs)
穿越隧道关键对矩阵周围一圈的0进行判断哪些0和他联通,进行标记#include <bits/stdc++.h>#define x first#define y second using namespace std;typedef pair<int,int> pii;const int N = 2e2 + 10;int g[N][N];int n;pii q[N*N];bool st[N][N];bool vis[N][N];int dx[4] = {-
2022-04-22 21:09:28 328
原创 【洛谷】P2372 yyy2015c01挑战算周长(BFS)
穿越隧道算(x,y)坐标所在位置的连通块的周长。周长:判断四个方向有无X,是否越界,统计答案。#include <bits/stdc++.h>#define x first#define y secondusing namespace std;typedef pair<int,int> pii;const int N = 2e2 + 10;char g[N][N];int n,m;int x,y;int ans;pii q[N*N];bool st[
2022-04-22 16:11:00 207
原创 【洛谷】P1464 Function*(记忆化搜索)
穿越隧道输出有坑,ans和前面的部分要分开输出。。。。奇奇怪怪#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 25;//将搜索的结果,存起来就是记忆化搜索//防止重复递归,TLE ll path[N][N][N]; ll dfs(ll a, ll b, ll c){ if(a <= 0 || b <= 0 || c <= 0){ retu
2022-04-22 15:00:36 196
原创 【洛谷】P1036 [NOIP2002 普及组] 选数(DFS)
穿越隧道递归组合型的微变型#include <bits/stdc++.h>using namespace std;const int N = 1e2 + 10;int ans;int n,m;int res = 0;int a[N];bool st[N];int path[N];bool is_prime(int x){ for(int i = 2; i <= x/i; i++){ if(x % i == 0) return false; } retu
2022-04-22 14:17:15 203
原创 【洛谷】P1157 组合的输出(dfs)
穿越隧道题面微变型的递归枚举组合型#include <bits/stdc++.h>using namespace std;const int N = 30;int n,m;bool st[N];int path[N];void dfs(int u, int start){ if(u >= m){ for(int i = 0; i < m; i++){ printf("%3d",path[i]); } puts(""); return ;
2022-04-22 14:06:43 518
原创 【acwing】1135. 新年好***(dijkstra+堆优化)
穿越隧道预处理,再搜索出最小的答案。mlognmlog_nmlogn + 5!5!5!#include <cstring>#include <cstdio>#include <iostream>#include <algorithm>#include <queue>#define x first#define y secondusing namespace std;typedef pair<int,int>
2022-04-22 13:57:04 128
原创 【acwing】1125. 牛的旅行***(floyd)
穿越隧道1.floyd求出任意两点之间的最短距离2.求maxd[i],表示和i联通的且距离i最远的点的距离3.情况1:所有maxd[i]的最大值情况2:枚举在哪两个点之间连边。i,j,需要满足d[i,j] = INF.maxd[i] + dis[i,j] + maxd[j];#include <bits/stdc++.h>#define x first#define y second using namespace std;typedef pair<double,
2022-04-21 21:51:11 177
原创 【acwing】166. 数独****(DFS)
穿越隧道如何能正确的搜出所有的方案1.顺序2.剪枝搜索:1.优化搜索顺序大部分情况下,应优选搜索分支较少的节点2.排除等效冗余3.可行性剪枝4.最优性剪枝5.记忆化搜索(DP)在这题中使用了位运算优化(9位的01二进制数)求行、列与九宫格的交集状态(按位与运算)循环或lowbit运算O(1),返回最后一个11.优化搜索顺序:√(有)选择2.排序等效冗余 :×(无重复性情况)3.可行性剪枝:√(有)4.最优化剪枝:×(无)5.记忆化搜搜(DP):×(无)还
2022-04-21 16:48:00 870
原创 【acwing】165. 小猫爬山(DFS之剪枝)
穿越隧道搜索:1.优化搜索顺序大部分情况下,应优选搜索分支较少的节点2.排除等效冗余3.可行性剪枝4.最优性剪枝5.记忆化搜索(DP)在这题中1.优化搜索顺序:√(有)猫越重,分支可能越少。对猫的重量从大到小排序2.排序等效冗余 :×(无重复性情况)3.可行性剪枝:√(有)如果某辆车猫的重量超出了W(剪枝)4.最优化剪枝:√(有)如果新开车的数量已经大于ans,就直接退出5.记忆化搜搜(DP):×(无)#include <bits/stdc++.h>u
2022-04-21 15:54:15 885
原创 【acwing】1118. 分成互质组 ***(DFS)
穿越隧道递归组合型搜索+gcd#include <bits/stdc++.h>using namespace std;const int N = 1e2 + 10;int n;int p[N];int group[N][N];int ans = N;bool st[N];//判断当前每个数被用过。 int gcd(int a, int b){ return b ? gcd(b,a % b):a;} bool chk(int group[], int gc, int
2022-04-21 15:09:22 363 2
原创 【天梯赛】L2-040 哲哲打游戏 (25 point(s))(模拟)
穿越隧道用vector来模拟图模拟题意,阅读能力有待提高,题意读了很久。#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;vector<int> p[N];int n,m;int now = 1;//当前所在位置int record[N];//记录档案int main(){ cin >> n >> m; for(int i = 1; i <=
2022-04-21 11:11:12 2213
原创 【acwing】1459. 奶牛体操(模拟、思维)
穿越隧道模拟、思维#include <bits/stdc++.h>using namespace std;const int N = 2e2 + 10;int n,m;typedef pair<int,int> pii;map<pii,int> mp;int a[N][N];int ans;bool flag[N][N];int main(){ cin >> n >> m; for(int i = 0; i <
2022-04-21 09:03:03 406
原创 【天梯赛】 L2-028 秀恩爱分得快 (25 point(s))***(STL|排序)
穿越隧道大佬版参考了大佬的思路,又是被自己菜到的一天思路太妙了,大佬们的STL基础也超好。#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 10;int n,m;bool gender[N];//prevent timeout and out of space;int read(){ int input = 0, flag = 0; char a = getchar(); while((a
2022-04-20 22:30:25 231
原创 【天梯赛】L2-024 部落 (25 point(s))(并查集)
穿越隧道并查集的模板的微微变型。#include <bits/stdc++.h>using namespace std;const int N = 1e4 + 10;int n,m;int p[N];int find(int x){ if(x != p[x]){ p[x] = find(p[x]); } return p[x];}map<int,int> mp;int ans;int main(){ cin >> n; for(i
2022-04-20 20:42:09 381 1
原创 【acwing】1874. 哞加密(模拟)
穿越隧道对图中的每个点的8个方向,走两步。判断是否越界,若合法,则进行判断是否为ABB型字符串,且A不为M,B不为O;使用hash表存储字符串#include <bits/stdc++.h>using namespace std;const int N = 1e2 + 10;int n,m;string g[N];int dx[8] = {-1,-1,0,1,1,1,0,-1};int dy[8] = {0,1,1,1,0,-1,-1,-1};unordered_ma
2022-04-20 20:02:52 169
原创 【acwing】1353. 滑雪场设计*(枚举)
穿越隧道开始思路:对所有山的高度排序,取两个极值。但觉得不对劲,假如次大的、或者次小的,可能不符合题意。当第一次的最大值,减少一定高度时,说不定次大的山就成了最高山,反之同理。抱着侥幸心理交了一发,果然错了。后来,看了大佬博客,他们采用了穷举发,使得所有山的高度差都保持在17以内。#include <bits/stdc++.h>using namespace std;const int N = 1e3 + 10;int a[N];int ans;int n;int
2022-04-20 07:57:51 156
原创 【天梯赛】L2-023 图着色问题 (25 point(s))
穿越隧道23分bfs判断相邻的两个结点颜色是否相同,若相同,则No;并查集来判断v个点中,有多少个联通块。对每个连通块进行bfs.#include <bits/stdc++.h>using namespace std;const int N = 5e5 + 10;//开1e3,则最后一个测试点段错误 int h[N],e[N],ne[N],idx;int v,m,k;void add(int a, int b){ e[idx] = b, ne[idx] = h[a],
2022-04-19 16:21:03 173 3
原创 【天梯赛】L2-022 重排链表 (25 point(s))**(模拟)
L2-022 重排链表 (25 point(s))野生版(12分)可能是因为按照值来进行排序,然后进行交叉输出。可能它的样例是按照地址?#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;int n,addre;//int a[N];struct node{ int da; string add; string ne;}a[N];bool cmp(node aa, node bb){
2022-04-19 15:08:21 417 1
原创 【acwing】850. Dijkstra求最短路 II*
穿越隧道堆是stl中的堆,非手写。当m和n处于一个量级时,且n的数据量不能够开数组时,可以选择堆优化和邻接表的Dijkstra.当m是n2n^2n2时,且n2n^2n2的大小的数组不会超内存时,可以选择邻接矩阵。需反复记忆#include <bits/stdc++.h>using namespace std;const int N = 2e5 + 10;typedef pair<int,int> pii;int n,m;int h[N],e[N],w[N],
2022-04-19 15:04:46 202
原创 【2021年天梯赛】吉老师的回归 |包装机 |病毒溯源 |清点代码库 |还原文件
7-9 包装机 (25 point(s))栈和队列的模拟题#include <bits/stdc++.h>using namespace std;const int N = 5e2 + 10;int a[24];string str[N];map<int,int> mp;stack<char> st;queue<char> q[N];queue<char> ans;int main(){ int n,m,s; cin
2022-04-19 13:50:39 473
原创 【天梯赛】 L2-020 功夫传人 (25 point(s))(bfs)
穿越隧道思路来源于:大佬博客计算得道者(k=0)的所有功力总合。图的广度遍历,算出每个结点的功力值。最后,计算答案。#include <bits/stdc++.h>using namespace std;const int N = 5e5 + 10;typedef long long ll;int h[N],e[N],ne[N],w[N],idx; void add(int a, int b){ e[idx] = b, ne[idx] = h[a], h[a] = i
2022-04-18 17:03:30 184
原创 【天梯赛】L2-019 悄悄关注 (25 point(s))
穿越隧道map的应用#include <bits/stdc++.h>using namespace std;const int N = 5e4 + 10;//若只开5e3,最后一个样例段错误。只是关注的人,还有悄悄关注的人的id<=1e4map<string,int> mp,mmp; string ans[N];int main(){ int n; scanf("%d",&n); for(int i = 0; i < n; i++){
2022-04-18 15:58:19 353 2
原创 【天梯赛】L2-016 愿天下有情人都是失散多年的兄妹 (25 point(s))(DFS)
穿越隧道开始,想的是并查集。若是并查集的话,则有两个根节点,很复杂。看了大佬们的博客后,首先对子女和父母建立图(建立的图为有向图),然后用dfs分别对 情侣两个人进行搜索搜索他们的祖先,记录是否访问,若在搜索过程中,发现祖先已经被访问,则标记flag=1,若不存在,则返回 空。#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int n;char sex[N];int h[N],ne[N
2022-04-18 15:41:37 273
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人