- 博客(138)
- 收藏
- 关注
原创 wsl中配置cuda,pytorch,cudnn,vscode
将下载的 cuda-wsl-ubuntu.pin 文件移动到系统的 /etc/apt/preferences.d/ 目录下,并将其重命名为 cuda-repository-pin-600。Compute Platform根据CUDA的安装版本来进行选择,CUDA版本高于11.8选择CUDA 12.1,反之选择CUDA 11.8。点击对应选项,下方会生成对应的下载命令语句,将命令语句输入到命令行界面即可。将 CUDA 11.8 的 GPG 密钥复制到系统的密钥环中。将下载的 CUDA 安装包安装到系统中。
2024-10-08 19:58:04
881
原创 配置WSL(单纯记录
参考链接(https://blog.youkuaiyun.com/mustuo/article/details/133960230)勾选适用于Linux的Windows子系统和虚拟机平台。在控制面板-启用或关闭windows功能中。重启后用管理员权限打开Powershell。查看已安装的系统,图上显示说明未安装。重新键入安装ubuntu的命令。将wsl默认版本改为wsl1。可能是默认安装了wsl2。把wsl版本设置成版本2。进入BIOS启用虚拟化。
2024-09-13 13:06:42
637
原创 河内双塔 递归
题目: 思路: 总的来说,和有汉诺塔的原题差不多,只要在此基础上*2即可 所以先考虑汉诺塔原题该如何解决 1.将n-1个盘子通过C然后放置到B上 2.再将最大的盘子放到C 3.将n-2个盘子通过C放置到A上 4.第二大的放到C 。。。。。 TLE做法: #include <cstdio> #include <iostream> #include <cmath> using namespace std; const int maxn=111111; int n; int
2022-05-21 20:35:09
215
原创 mxr数 map
题目: 思路: 考虑到如果直接开bool数组可能会爆,所以搞了个map 代码: #include <cstdio> #include <iostream> #include <map> using namespace std; const int maxn=511111; int n; map<int,bool> m; bool flag; int main() { cin>>n; for(int i=1;i*(i+1)/2<
2022-05-21 20:04:42
246
原创 进行一个幂的运算 数学杂题
题目: 思路: 这个题目巧妙的地方在于2的k次-1需要联想到就是每个位上是1的情况,然后看成类似m进制 Eg.2的7次=2的一次 * 2的2次*2的4次 代码: #include <cstdio> #include <iostream> using namespace std; const int maxn=111111111; const int mod=1e8+7; long long m,k,ans; int main() { cin>>m>>
2022-05-21 19:35:14
448
原创 P2347 [NOIP1996 提高组] 砝码称重 dp(01背包)
题目: 思路: 把砝码一个个列出来,成为一个数组,然后做选择(选或者不选) 需要注意的是需要从1000开始查询vis[i]是否可行 代码: #include <iostream> #include <cstdio> using namespace std; const int maxn=1111; int n,a[maxn],b[11]={0,1,2,3,5,10,20}; bool vis[maxn]; int main() { for(int i=1;i<=6;i
2022-05-18 13:56:06
290
原创 购买数字 字符串
题目: 思路: 总的思路是一个比较巧妙的方法,把前导零去掉后搞成两个int数组,以前面一部分来对称构造前导零,如果构造出来的这个数小于真正的那个数的话就刚好是最大的那个回文数。如果比真正的那个数大的话,从中间开始对应搞回文数。 注意点: 1.1000,100,10这种情况需要另外讨论 代码: #include <cstdio> #include <iostream> #include <cstring> using namespace std; const int m
2022-05-18 13:24:12
165
原创 赌石 dp
题目: 思路: 一开始直接朝着概率论的方向去了,万万没想到是道dp 基本就是把这道题换了个题面 考虑状态转移方程dp[i][j]表示剩下i个蓝球和j个红球的时候,最后剩下两个相同的球的概率 dp[i][j]=dp[i-1][j]*0.5+dp[i][j-1]*0.5 如果某一种球的数量=0且另一种的球的数量大于等于2,那么dp[i][0]=0 #include <iostream> #include <cstdio> #include <cstring>
2022-05-02 18:59:28
352
1
原创 矩形相交 几何问题
题目: 思路: 一开始想着纯分类讨论,讨论x3的位置在哪(以x1,x2作为分隔点)然后越讨论越混乱,然后看了看别人的做法,发现类比圆,用类似圆心的方法去考虑很巧妙。然后只需要特判一下部分情况。 Tips: 需要把这里的矩形看成空心矩形,只有在两个矩形不完全重合并且有大于一个交点才视为相交 AC代码: #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> u
2022-05-02 11:31:16
336
原创 区间修改 差分
题目: 思路: 可以参考铺设道路 两道题的区别在于不仅可以往上加,也可以往下减,如果某一段+1/-1,那么相应的差分数组中就会有一组数+1、-1,但是计算的时候为了可以每次都配对成功,a[1]-a[0]和a[n+1]-a[n]也需要加上,但是计算的时候不需要管,只要d[2]-d[n]最终都变为0了就可以 AC代码: #include <cstdio> #include <iostream> using namespace std; const int maxn=111111; i
2022-05-02 10:54:54
327
原创 铺设道路 差分
题目: 思路: 差分:d[i]=a[i]-a[i-1](记录相邻两个位置的差值,可以类比前缀和) 目的是填充不平的区域,并且可以连续区域填充,也就是如果相邻位置经过填充之后高度相同可以看成同一段。所以可以猜测用差分来计算。 Tips: 需要保留第一个点与地面的差 代码: #include <cstdio> #include <iostream> using namespace std; const int maxn=111111; int n,a[maxn],d[maxn],ans
2022-05-02 10:26:34
309
原创 P1801 黑匣子 二叉堆,优先队列
题目: 思路: 参考 AC代码: #include <bits/stdc++.h> using namespace std; const int maxn=211111; int n,m,a[maxn],u[maxn]; priority_queue<int> q1; priority_queue<int,vector<int>,greater<int>> q2; int main() { cin>>n>>m;
2022-04-02 22:00:34
534
原创 P1168 中位数 大根堆 小根堆
题目: 思路: 把小的数放在大根堆里,大的数放在小根堆里 属于一旦想到了就会豁然开朗的题目 如果找的是第k个大的只需要一个小根堆即可 AC代码: #include <bits/stdc++.h> using namespace std; const int maxn=111111; int n,a[maxn]; priority_queue<int> q1; priority_queue<int,vector<int>,greater<int>>
2022-04-02 21:15:50
475
原创 ABC 245 (多项式除法
题目: 思路: 这道题一开始方向出现了错误,我居然想用dfs,n的范围这么大(n<20的情况下可以考虑,不过确实应该复习一下dfs。 其实是道简单的模拟题,看看每个n前面能走到的点是不是可以走到后面,看了代码应该就一目了然了 AC代码: #include <bits/stdc++.h> using namespace std; const int maxn=211111; int n,k,a[maxn],b[maxn]; bool f[11][maxn]; int main() {
2022-03-27 11:25:13
845
原创 根号 未知个数的输入及double和sqrt带来的精度误差
题目: 思路: 1.未知个数的输入scanf("%d",&x)!=EOF 2.精度误差需要多次调整找到合适的值 AC代码: #include <bits/stdc++.h> #include <iostream> using namespace std; const int maxn=111111; double ans1; int a[maxn]; bool equal(double x,double y) { return abs(x-y)<1e-6; }
2022-03-25 14:10:41
546
原创 八数码问题 暴力搜索例题
题目: AC代码: #include <bits/stdc++.h> using namespace std; string s; unordered_map<string,string> m; bool check(string x) { return x==(string)"12345678x"; } int main() { cin>>s; queue<string> q; q.push(s); m[s]="-1"; while (!q.e
2022-03-23 20:44:18
331
原创 P1404 平均数 二分答案
题目: 思路: 答案的范围很容易确定,重要的是check()这一步 搞一个b[i]=100*a[i]-avg; s[i]是b[i]的前缀和数组 AC代码: #include<cstdio> #include <iostream> #include<cstring> #include<algorithm> #include <vector> #include <cmath> #include <queue> using na
2022-03-21 18:53:50
340
原创 P2678 [NOIP2015 提高组] 跳石头 二分答案
题目: 思路: 依旧是对答案可能的范围进行二分,然后代入并求取需要搬掉多少石头。 AC代码: #include<cstdio> #include <iostream> #include<cstring> #include<algorithm> #include <vector> #include <cmath> using namespace std; const int maxn=111111; int d,n,m,a[maxn]
2022-03-20 20:44:31
355
原创 P1182 数列分段 Section II 二分答案
题目: 思路: 把x可能的范围先确定下来,0-1e13 接着对这个范围进行二分处理,判断mid是否大于等于x AC 代码: #include<cstdio> #include <iostream> #include<cstring> #include<algorithm> #include <vector> #include <cmath> #include <queue> using namespace std; co
2022-03-20 19:49:35
259
原创 分析字符 string
题目: AC代码: #include <iostream> #include <cstdio> #include <string> using namespace std; int n,ans[11]; string s; int main() { cin>>n; getline(cin,s); for(int i=1;i<=n;i++) { getline(cin,s); for(int
2022-03-18 19:29:42
302
原创 字母替换 string
题目: 思路: AC代码: #include <iostream> #include <cstdio> #include <string> using namespace std; int n; string s; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>s; int l=s.size(); for(int
2022-03-18 15:52:55
230
原创 删除子串 string
题目: 思路: 删除完第一次找的字串之后要从删除的字串的头的位置开始找 AC代码: #include <iostream> #include <cstdio> #include <string> using namespace std; int n; string s,s0; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>s>>s0;
2022-03-18 15:45:33
1226
原创 电话本 map
题目: AC代码: #include <iostream> #include <cstdio> #include <vector> #include <map> #include <string> using namespace std; map <string,vector<string>> a; int n; int main() { cin>>n; for(int i=1;i<=n;
2022-03-17 19:21:10
277
原创 集合练习 set
题目: 注意点: 1. Begin(), End()是set的成员函数,返回值分别是set中首个元素的迭代器和set中末尾元素向后一位的迭代器。 2.输出时 使用迭代器时,要写成it!=a.end(); 输出的是*it。 3. begin()返回的迭代器指向set中的最小值; rbegin()返回的迭代器指向set中的最大值。 但 end()返回的迭代器指向set中的最后元素的后一个位置; rend()返回指向集合中第一个元素的前一个位置的迭代器 4. clear()清除set中的所有元素。时间复杂度O(
2022-03-17 15:48:43
828
原创 队列练习 deque
题目: 思路: 双向队列 deque的具体介绍 AC代码: #include <iostream> #include <cstdio> #include <deque> using namespace std; deque <int> q; int n; int main() { cin>>n; for(int i=1;i<=n;i++) { int opt; cin>>o
2022-03-17 14:55:27
200
原创 数组操作 vector
题目: 思路: 需要注意Begin(), End()是Vector的成员函数,返回值分别是Vector中首个元素的迭代器和Vector中末尾元素向后一位的迭代器 AC代码: #include <cstdio> #include <iostream> #include <cstring> #include <algorithm> #include <vector> #include <cmath> using namespace std
2022-03-17 14:34:57
269
原创 P1144 最短路计数 最短路,bfs(回顾
题目: 思路: 如果从1开始到x1,和x2的距离(x1,和x2和y相连)相同。那么1->y的最短路的数目=1->x1的最短路数目+1->x2的最短路数目 代码说明: dis[i]表示1-i的最短路的距离; AC代码: #include<cstdio> #include <iostream> #include<cstring> #include<algorithm> #include <vector> #include <c
2022-03-16 22:55:12
283
原创 P1522 [USACO2.4] 牛的旅行 Cow Tours 最短路+并查集
题目: 思路: 题目要求的是加上一条边,连接两个连通块之后,形成的新连通块的最小直径。 A连通块与B连通块连接后形成的新连通块的最小直径有三种情况: 1.A连通块的直径 2.B连通块的直径 3.d[i]+d[j]+getdis(i,j) 并查集用于分成不同的几个连通块 最短路(floyd)用于寻找多源最短路,连通块里点与点直接的“距离” d[i]用于存储i所在的连通块里,与i所在的最长直径 a数组用来储存一个连通块里的最长直径 AC代码: #include <cstdio> #includ
2022-03-16 21:25:07
410
原创 P1119 灾后重建 最短路 floyd算法
题目: 思路: 一看这道题就是个多源最短路问题,考虑采用floyd算法 如果每次都用一次floyd,显然大数据会tle 所以先一遍把所有的情况都算出来,后面再去调用 如果day不是递增的数组,需要先排序 AC代码: #include<cstdio> #include <iostream> #include<cstring> #include<algorithm> #include <queue> #include <vector>
2022-03-15 10:47:22
280
原创 P4779 【模板】单源最短路径(标准版) 最短路
题目: 思路: 把优先队列的做法改个数据范围就可以了 AC代码: #include<cstdio> #include <iostream> #include<cstring> #include<algorithm> #include <vector> #include <cmath> #include <queue> using namespace std; const int maxn=111111; struct n
2022-03-14 21:18:37
380
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅