- 博客(51)
- 资源 (1)
- 收藏
- 关注
原创 Python虚拟环境相关
写深度学习代码前,总要把Github上许多开源代码下下来跑一下。不同的项目有不同的运行环境,因此,就免不了为每个项目配置不同的库。本科的时候嫌虚拟环境太麻烦,就直接略过没学,现在还是得来补课。一般而言,步骤如下:创建虚拟环境->激活/退出虚拟环境/Python库配置/代码运行。
2023-11-04 16:23:21
153
原创 C++调用已训练好的pytorch模型
首先需要下载并配置好torch script环境,网上已有相关教程。然后在python中将模型转换为torch script,我使用了annotation的方式。使用C++调用pytorch模型,即将模型部署到生产环境中,这里先提供一个pytorch的。随后在C++中加载保存好的模型,并使用相同的样例测试模型输出。
2023-06-19 16:14:01
1169
1
原创 leetcode 1250.检查「好数组」
传送门就是一道结论题,用的是裴蜀定理,具体可以参见百度百科。我们要找出一组互质的数即可,然后O(n)求出这组数的最大公约数,如果为1说明互质,则为trueclass Solution {public: bool isGoodArray(vector<int>& nums) { int d = nums[0]; int len = n...
2019-11-04 23:09:05
202
原创 并查集的应用
并查集可以有很多应用。比如权值并查集或带扩展域的并查集,可以来维护一些可传递的关系。当然,并查集最直接的应用,则是来维护集合的的连通关系。第一题题意:给出一幅图,以及一系列操作,每次操作删去一个点,及这个点相关的所有边,并输出删点之后的连通块个数。思路:这道题把过程倒着来就好了,可以看成建图的过程,如果要新加一条边,这条边连接的两个点若是在不同的连通块内,连边后,联通快个数就++。#inc...
2019-10-29 22:30:10
315
原创 2019上海网络赛 Stone Game (背包dp)
传送门题意:n个石头,每个石头有一个重量ai, 所有石头重量之和为S, 要求从中选一些石头,被选石头重量和为S’, 满足S’ >=S-S’ 且 从S’中去掉任何一个石头,上式不成立,也就是选的石头的重量和刚好>=总重量的一半。问共有多少种选择方案。思路: 把序列通过贪心法进行预处理,即由大至小排序,然后设计状态dp[i][j]表示前i个石头里面选取若干个,使总和为j的方案个数。这样...
2019-10-16 17:34:45
131
原创 环路运输(单调队列+环形处理)
传送门此题是环状结构,处理的方式是把环断开,复制一倍接在末尾,形成长度为2n的链。#include<iostream>#include<queue>using namespace std;const int MAXN = 1e6+5;const int INF = 0x3f3f3f3f;int n;int value[MAXN*2];int monot...
2019-10-12 23:35:13
268
原创 单调栈和单调队列
单调栈单调栈模板题给出一串序列,对于每个位置,要你求出这个位置左边第一个比它小的数,如果用暴力算法的话,很明显就要O(n2)的复杂度了。而神奇的单调栈可以用O(n)解决此问题。假设此刻我们扫描到了位置cur,则对于另外两个位置i, j(i < j < cur),如果num[i] <= num[j],那么可以知道相对于j来说,i就是完全不必要的位置。因为如果num[i]小于...
2019-10-12 17:15:14
92
原创 P2014 选课(树形DP)
传送门树形DP入门题。这类题目被称为背包树形DP,又称有树形依赖的背包问题。虽说是入门题,但第一次写并不是很顺利,网上的解法都是二维的,但我只会先用高维做再转成低维的,搞的就很难受。三维解法,思路见注释#include<iostream>#include<cstdio>#include<vector>#define maxn 305using na...
2019-10-07 22:14:23
124
原创 HDU 6230 Panlindrome(Manacher+树状数组)
传送门题意:给出一个字符串,且定义一种字符串----i—j----为one and a half palindrome,让你求字符串中满足该条件的子串有多少个思路:这题的难点有两处,一是根据题目中给出的数学语言定义,转换成符合自然语言表达的定义,弄清楚要求什么;二是弄清楚之后用代码来实现。可以知道两个位置i和j要满足一下条件:1.i < j2.i + raidus[i] >= ...
2019-10-05 09:37:03
132
原创 CH 5302 金字塔(区间DP)
传送门设dp[l][r]为序列l至r代表的子树的个数,由DFS序的特性可以知道,如果要一棵完整的子树的DFS序两端的序号是一样的,都是树根的编号。这里状态方程的巧妙之处就在于,运用乘法原理,保证了状态不会有重复#include<iostream>#include<cstring>#include<algorithm>#include<string...
2019-10-04 16:07:48
140
原创 P4555最长双回文串(Manacher)
传送门题意:给定一个字符串,求出最长的双回文串长度。思路:先跑一边Manacher,再求出每个字符所在回文串中,处在右侧且最长的子串中心,和处在左侧且最长的子串中心,最后拼接起来找最长的即可#include<iostream>#include<cstring>using namespace std;const int MAXN = 11000000+5;in...
2019-10-03 19:54:19
131
原创 poj1179 Polygon(区间DP)
传送门这是一道环形DP,解决方法是“任意选择一个位置断开,复制形成2倍长度的链”。#include<iostream>#include<cstring>#include<vector>using namespace std;typedef long long ll;const ll INF = 1e18;int n;char opt[105]...
2019-10-02 23:15:39
144
1
原创 Codeforces Round #589 (Div. 2) D. Complete Tripartite(巧妙的Hash)
传送门哈希真的是太强大了,这种图论题都可以用哈希的方法来解。题目给你一幅图,问能否构成三分图。如果两个点编号都为1,则这两个点连接的所有顶点都相同,可以利用哈希的思想,把每个节点都用哈希编号,然后对于每一个u,把其相连节点的哈希值加起来,最后每个节点都有一个相邻节点的哈希值之和,如果两个节点哈希之和相等,说明这两个节点编号相同。最后有一个需要注意的地方是,如果一个点相邻节点哈希值为0,则不满足条...
2019-09-30 19:29:58
226
3
原创 K-th Number(尺取+二分)
传送门厘清题意很重要,给你一个序列A,再给出K,M,将A中每个区间的第K大元素放入B序列,问B序列的第M大元素是多少。思路:可以想到一段序列的所有区间数是固定的,每个区间的第K大也都是固定的。假设B序列的第M大元素是x,则可知大于等于x的数有M个,即对于A序列的所有区间第K大,大于x的有M个。这里就有一个巧妙的满足递增性质的地方,即“区间的第K大 大于 mid 的区间数”,mid越大,这个数越...
2019-09-27 09:39:41
178
原创 Mobile Service(线性DP)
传送门真是一道好题,最近写了不少DP,对状态的设计也大概有了个掌握,知道什么情况下可以设计什么样的状态。这道题虽然也看了一下蓝书上的题解,但跟自己独立想的还是差不多的。也是很难得没有看代码AC出来。。我们可以设F[i][x][y][z]表示完成了i个请求,三个员工分别位于x,y,z的位置时,公司的花费。但可以推出的是,完成i请求后,必定有一个员工的位置在request[i],因此这个位置就是一...
2019-09-23 19:46:13
254
原创 poj 3666 Making the Grade(线性DP)
传送门做这题需要进阶指南上提到的一个引理:在满足S最小化的前提下,一定存在一种构造序列B的方案,使得B中的数值都在A中出现过。证明略。我们可以从这个引理入手设计状态,设dp[i][j]表示将a[i]变为j需要的最小cost,且此时i之前的dp值都已经求好。将数组离散化并放入num数组。状态转移方程如下dp[i][j] = min(dp[i][j], dp[i-1][k]+abs(a[i]-n...
2019-09-22 21:53:06
143
原创 LCIS(最长公共上升子序列)
传送门题意:给你两串数列,让你求它俩的最长上升子序列思路:令f[i][j]表示以a[1-i], b[1-j]构成的以b[j]为结尾的最长上升子序列,不难推出状态转移方程if(a[i] != b[j]) f[i][j] = f[i-1][j]if(a[i] == b[j]) f[i][j] = max(dp[i][j], dp[i-1][k]), 其中k满足0<k<j,a[i...
2019-09-18 20:46:45
156
原创 poj 2279 Mr. Young's Picture Permutations(线性DP)
传送门#include<iostream>using namespace std;typedef long long ll;ll k; //k rowll n[10]; // number of each rowll dp[31][31][31][31][31];int main(){ ios::sync_with_stdio(0); cin.tie(...
2019-09-18 15:22:39
139
原创 最长上升子序列(ologn算法)
如果直接使用dp的话,时间复杂度是O(n^2)的,因为每次在i点时,都要遍历i点之前的所有点,来找出最优解。那么一种优化方法较为直观,容易理解,使用树状数组或者线段树维护前缀的最大值,这样每查询的时候只需要O(logn)的复杂度即可。这里附上树状数组的解法,我是在这里才学到用树状数组维护前缀极值的。。。#include<iostream>#include<algorithm...
2019-09-17 13:15:26
623
原创 Codeforces B. The Number of Products(递推)
传送门思路:用递推就好了(我没有想到)。#include<iostream>using namespace std;const int MAXN = 2e5+5;long long dp1[MAXN], dp2[MAXN]; //以i为结尾的,有dp1[i]个区间含有奇数个负数,dp2[i]个区间含有偶数个负数long long a[MAXN];int main(){...
2019-09-16 12:49:27
319
原创 codeforces D. Cow and Snacks(图论建模)
传送门题意:有1~n种食物,k个客人,每个客人有两种喜欢的食物,这些客人按照一定顺序排队吃饭,每个人轮到的时候会吃掉自己喜欢的,如果一个都没有就不满意,问最好的排队方法可以让多少客人不满意思路:题解原话“Since every animal has exactly two favorite snacks, this hints that we should model the problem ...
2019-09-15 18:25:20
221
原创 poj3614 Sunscreen(贪心)
题意:有C头奶牛,L种防晒霜,每头奶牛可以抹的防晒霜为有个范围,为minSPF和maxSPF,每种防晒霜有对应的SPF,问最多可以让多少头奶牛抹上防晒霜。思路:贪心的策略 :按照minSPF递减顺序遍历奶牛,对于每头奶牛,遍历所有的防晒霜。在这头奶牛可用的防嗮霜里面取最大的证明:对于当前奶牛可用的任意两瓶防嗮霜x和y,如果SPF[x]<SPF[y],那么后面其他奶牛只可能出现“x,y 都...
2019-09-13 19:58:39
182
原创 2019ICPC南京网络赛 D.Robots(概率dp)
传送门题意:给出一张N个点M条边的有向无环图,1号点为全图唯一的入度为0的点,N号点为全图唯一的出度为0的点现在你从1号点出发,每单位时间,你有相同的概率 走向相邻节点或原地不动。第 i 单位时间内你的消耗为 i询问你走到 N 点的期望消耗先求出1到n的期望时间,再由此推出期望消耗,第二个转移公式有点迷,本来应该加上从1到n的时间期望,但却加上了从i到n的时间期望。有个博客说累加起来就是...
2019-09-13 16:35:23
137
原创 2019ICPC南京网络赛 A.The beautiful values of the palace(离线树状数组)
题目链接题意:给你一个螺旋矩阵,再给定m固定的格子,每个格子都有权值,最后有p次询问,每次询问给一个范围,求出这个范围内的给定的格子的权值之和。思路:先想办法推出公式,根据x, y, n推出这个格子的权值。由于数据量太大,需要离线处理,把这些点存储起来后,按照x的顺序来扫描,如果该点是给定的点,需要插入,利用树状数组来维护前缀和。如果该点是询问前缀和的,读取前缀和即可,此时其他x大于它的点肯定...
2019-09-12 11:50:24
114
原创 poj2182 Lost Cows(线段树 | 树状数组)
题目链接题意:给一个序列,序列里面每个值的的含义是该位置奶牛前面比它高的奶牛数,求该奶牛的身高。思路:①线段树:可以看到1在的位置一定的数一定是0,而选出1后,2就是最小的了。用线段树维护这个序列,每次查询出区间最小数的位置。#include<iostream>#include<cstring>#include<cstdio>#include<...
2019-09-11 17:38:34
163
原创 扑克牌(概率dp)
题目链接#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;int A, B, C, D;double f[20][20][20][20][5][5];bool vis[20][20][20][20][5][5];...
2019-09-10 17:14:39
394
原创 可达性统计(拓扑排序+状态压缩)
题意:给定一张N个点M条边的有向无环图,分别统计从每个点出发能够到达的点的数量思路:该题的暴力做法就是从每个点开始dfs,就能得到每个点最多可到达的点的数量,但很明显会超时。先对图进行拓扑排序,这样可以由拓扑序由后向前递推。一种很妙的做法是使用bitset进行状态压缩,用一个3000位的二进制数来表示一个点的状态,对于第i个点,考虑与其直接相连的边,如果j与其相连,则该二进制的第j位为1。可以看...
2019-09-09 16:05:13
212
1
原创 Codeforces Round #578 Div. 2 E.Compress Words(KMP,Hash)
链接 :https://codeforces.com/contest/1200/problem/E解法一 : KMP如无必要,勿增实体!!!我被一个语句坑了一个下午,int n = strlen(text),因为每KMP里面都要计算一下,所以就增加了复杂度,然后一下午都在那里TLE,我还以为是板子错了,一直在网上找。结果就是这么一个小错误,,,#include<iostream>...
2019-09-03 21:32:50
105
原创 Poj1456 Supermarket(贪心)
题目链接:http://poj.org/problem?id=1456题意:给定N个商品,每个商品有利润pi和过期时间di,每天只能卖一个商品,过期商品不能再卖,求如何安排每天卖的商品,可以使收益最大解法一:优先队列+贪心在最优解中,对于每个时间(天数)t,应该在保证不卖出过期商品的前提之下,尽量卖出利润前t大的商品。我们把商品按照过期时间排序,建立一个初始为空的小根堆,存储商品利润,然后扫...
2019-08-30 11:07:40
158
原创 Halloween Costumes(区间DP)
题目链接:https://cn.vjudge.net/contest/318859#problem/B题意:一个人要去参加派对,不同的派对要穿不同的衣服。现在给出每个派对的要穿的衣服,已知这个人可以多穿衣服或者脱去一定的衣服,但每一件衣服脱去了之后就不能再穿了。求这个人需要穿的最少的衣服。思路:又是一道让我自闭的区间DP“入门题”,状态方程不是很好想,需要仔细去理解,现在对我来说难点就是怎样找...
2019-08-25 18:54:27
113
原创 Pangu and Stones(区间dp)
题目链接:https://cn.vjudge.net/contest/319950#problem/C推出状态转移方程,再实现代码,区间dp的第一层循环一般都是区间长度,因为是由小区间推出大区间,第二层一般都是区间的起点。#include<iostream>using namespace std;typedef long long ll;const ll INF = 1e17...
2019-08-25 10:07:50
104
原创 Codeforces Round #566 (Div. 2) C. Beutiful Lyrics
题目链接:https://codeforc.es/contest/1182/problem/C这道题是很久之前的一个坑,一开始没看到每个单词都有元音的这个条件,于是尝试了几次都没有补掉,今天下决心仔细看了一下,才看到这个条件。但还是理不清思路,不知道用什么STL来存储和处理。于是去看了tutorial的代码,不得不说代码风格真是太赞了,即使是用了我不熟悉的c++11特性,恰到好处的变量名也让我一...
2019-08-22 20:07:18
102
原创 comet oj contest#8 符文能量
题目链接:https://www.cometoj.com/contest/58/problem/C?problem_id=2760一道动态规划解决的题目。dp[i][0]:从第1到第i个都没有被更新的最优答案dp[i][1]:前面的不用管,第i个一定被更新,要么是第一个,要么在中间dp[i][2]:前面有一段已经被更新,第i个要么是区间末尾,要么不被更新#include <bits...
2019-08-13 09:38:43
103
原创 miku and generals(二分图+背包)
题目链接:https://nanti.jisuanke.com/t/39271题意:有n个物品,每个物品有自己的价值,把这n个物品分成两堆,使得两堆的价值之差最小,输出最大的一堆,其中有一些物品不能同时在一个堆里。思路:1.由二分图的性质可以知道,有一些物品是一定要同时选的,把必须同时选的物品合并成一个物品2.合并完成后,把每个物品和其对立的物品放进一个结构体里3.此时用01背包的思路来做...
2019-08-09 16:00:38
182
原创 差分数组
差分数组是个神奇的东西设数组a[]={1,6,8,5,10},那么差分数组b[]={1,5,2,-3,5}也就是说b[i]=a[i]-a[i-1];(a[0]=0;),那么a[i]=b[1]+…+b[i];(这个很好证的)。假如区间[2,4]都加上2的话a数组变为a[]={1,8,10,7,10},b数组变为b={1,7,2,-3,3};发现了没有,b数组只有b[2]和b[5]变了,因为...
2019-08-05 15:16:58
63
原创 2019西安邀请赛Travel
262144KThere are nn planets in the MOT galaxy, and each planet has a unique number from 1 \sim n1∼n. Each planet is connected to other planets through some transmission channels. There are mm transmi...
2019-08-01 08:54:36
188
原创 最小球覆盖
题意:给n个点的坐标(xi,yi,zi)(xi,yi,zi),求覆盖这n个点的最小球的半径rr。分析:最小球覆盖模板题,模拟退火或者三分套三分再套三分,模拟退火法就是纯贪心的修改版。在搜索到某个局部最优解之后,普通的贪心算法就结束搜索了,但是模拟退火法会以一定的概率进行下一次搜索,这个概率随着时间的变化而减小。选择任意一个点作为初始解,然后将所有点按到当前圆/球心的距离排序,向距离最远的点靠近。...
2019-07-25 20:11:40
654
原创 对拍程序
之前一直不知道对拍程序有什么用,直到今天一道思维题一直不过,然后拿了网上的AC代码测样例,却怎么都找不到错误的样例,这时才想起对拍程序可能会有帮助,于是花了一个晚上来学习有的时候程序WA,但却怎么都找不出错误的样例,这时可以用对拍方法来找出错误的 样例。需要数据生成器,WA程序,暴力程序(一定正确,或者是AC程序)。先在E盘新建duipai文件夹,然后写个生成数据的程序,用以下语句将数据写入d...
2019-07-21 21:27:03
119
原创 二分法详解
说来有点丢人,学算法也快半个月了,中午看到一篇二分法的文章,较为详细的给出了二分算法的实现,我下午尝试自己实现的时候,却弄了两个多小时。。发明KMP算法的Knuth大佬就说过“Although the basic idea of binary search is comparatively straightforward, the details can be surprisingly trea...
2019-06-12 15:50:47
376
原创 next_permution原理
《STL源码剖析》: 在当前序列中,从尾端往前寻找两个相邻元素,前一个记为i,后一个记为ii,并且满足i < ii。然后再从尾端寻找另一个元素j,如果满足i < *j,即将第i个元素与第j个元素对调,并将第ii个元素之后(包括ii)的所有元素颠倒排序,即求出下一个序列了。看具体例子,一个排列为 124653,如何找到它的下一个排列。第一步:找最后面1个数字的下一个全排列。12...
2019-04-02 23:53:23
370
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人