- 博客(234)
- 收藏
- 关注
原创 sgd、momentum、RMSprop、Adam优化器总结
sgd:zh之后的优化器主要针对 学习率μ进行改进。momentum: 当一个维度比另一个维度下降地明显更加急促时(经常是局部最优点),朴素 SGD 容易存在收敛极慢的问题。 碰到鞍点。3 Adagrad: Adagrad 为每个参数提供自适应的学习率,它可以为频率低的参数每次提供更大更新、为频率高的参数每次提供更小更新。正因为此,它十分适用于处理稀疏数据。 G是一个对角矩阵,是参数θ在截至时刻t...
2021-12-24 13:27:59
1063
原创 AUC理解
Precision:TP/(TP+FP) 预测为正类中,预测为正确的概率Recall: TP/(TP+FN) 实际为正类中,预测为正类的概率Accuracy:(TP+TN)/(TP+FP+TN+FN) 预测类别正确的概率ROC曲线True Negative(真负 , TN):将负类预测为负类数. False Positive(假正, FP):将负类预测为正类数→→误报(Type I error)....
2021-12-22 13:17:39
725
原创 2022.8.22腾讯技术研究笔试满分代码
第一题 求期望:#include <bits/stdc++.h>using namespace std;double input[505][505];double a[505];int main(){ int n, m; cin>>n>>m; double ans=0; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ sca
2021-08-22 22:00:38
3219
3
原创 LeetCode 887. 鸡蛋掉落
这道题记得以前在gym上训练欧洲区域赛做过,但是现在完全忘了.很自然的想法就是用动态规划去求解.首先想到的是定义dp[i][j]为i层楼,j个鸡蛋最少xu'yao
2021-06-10 19:48:21
91
原创 pytorch raise NotImplementedError
具体报错如下:File "/usr/local/lib64/python3.6/site-packages/torch/nn/modules/module.py", line 541, in __ call__608 result = self.forward(*input, **kwargs)609 File "/usr/local/lib64/python3.6/site-packages/torch/nn/modules/container.py", line 92, in
2021-01-03 16:33:23
516
1
原创 2020kickstart E round C Toys (优先队列)
题意:有n个toy排成一个圈圈,每个toy有一个e[i],r[i],需要e[i]的时间去玩这个toy,r[i]可以理解为这个玩具再次可以被玩的cd时间,一个小孩会从第0个玩具开始,每次往i+1个玩具轮流玩过去,一个玩具可以被玩的前提是,距离上次被玩的时间超过r[i],当碰到不能玩的玩具后,小孩就会停下不动,否则一直玩下去。问移除多少个toy,可以让小孩玩的时间最长,并且再保证时间最长的情况下,移除最少的玩具。思路:第一轮肯定是都可以玩耍,关键是看第二轮,我们记完成一轮玩具的时间为tim,那.
2020-08-26 22:43:16
186
原创 USACO 2015 February Censoring (Gold)&&BZOJ3940 && 阿里2021秋招笔试T2自动删除机
BZOJ倒了,USACO上还可以补题,链接是:http://www.usaco.org/index.php?page=viewproblem2&cpid=533题意不赘诉了。思路:建ac自动机,用一个栈维护删除后得字符串(ans[top]),一个数组记录每个字符匹配到的树(自动机)上的点d[top],当在树上匹配到一个完整子串节点,就弹栈,删除对应长度得字符串,然后当前匹配节点也返回到对应字符的点上,注意d数组的下标也是top。好久没写自动机了,有一个注意点是 自动机root节点
2020-08-09 18:11:14
1615
原创 cf1101 D GCD Counting (树dp)
挺简单的树dp,两个点之间的公共素因子不会超过7个,枚举和子节点之间的公共素因子情况,有公共素因子就可以转移,长谷ide树dp去做就行了。代码:#include <bits/stdc++.h>#define ps push_backusing namespace std;const int maxn=2e5+5;int a[maxn], ans;int d[maxn][8];int cnt[maxn];int dp[3][8][maxn];int s[30], m.
2020-07-31 10:46:21
156
原创 2020kickstart d Beauty of tree
题意:a,b两个人, 分别在一棵节点数为n的有根树上,随机选择一个点,每x(y)个点(往根的方向)对一个节点染色,直到到达或超过根节点。问这棵树被染色的点的期望值。解题思路:首先有N*N个情况,每种情况下这棵树被染色的数目之和除以N*N就是要求的期望值所以问题就算如何统计每种情况染色数目之和暴力枚举每种情况肯定是不行的,可以换一个思路来想,去求每个点被选取后会染色多少个点。在一棵树上,假设p-x就是p下一步会染的点,那么r[p]=r[p-x]+1,只需要一遍dfs指定向下遍历就.
2020-07-16 18:48:54
188
原创 csp 第十七次认证 推荐系统
一道血妈坑的题目,输出应该是按照score从大到小排序,score相同按id从小到达排序,然而题目说是直接按id从小到大,估计是出题人标程写错了,直接用的原来的set存的输出,不知道现场赛有没有说明 太坑了。另外看到一个人的博客,我以为是错的,也能满分https://blog.csdn.net/qq_37038938/article/details/103146771他只枚举了前K大的商品,事实上会有商品一开始不在前K大,但是因为有商品受限制而进入被选择的K个商品中....估计是数据太弱了...
2020-06-17 19:20:01
375
原创 csp 第十八次认证 d 区块链
上次比赛最后时间紧慌了,没好好审题,有一个重要条件没好好利用,还瞎排序。也就是询问和操作的时间都是按顺序给出的,只需要按照他给的顺序依次操作就行了。还有一个条件就是这个保证同样非常重要,再一次验证只需要按照给出的顺序操作,因为同时课的询问一定在更新之后。然后具体思路就是这样:首先维护一个存储传播更新操作的队列struct op{ int id; int tim; vector<int>q;};vector<op>o.
2020-06-15 19:03:40
278
原创 2020kickstart C Candies
题意:给出数组a,有询问更新操作,更新是单点更新pos, x,更新a[pos]=x,询问是问l,r区间内的sweet值,定义是:(-1)i-lAi× (i - l + 1)比如:[3, 1, 6] is 3 × 1 - 1 × 2 + 6 × 3 = 19 [40, 30, 20, 10] is 40 × 1 - 30 × 2 + 20 × 3 - 10 × 4 = 0 [2, 100] is 2 × 1 - 100 × 2 = -198解题思路:维护两个树状数组,一个s1..
2020-06-05 17:32:09
179
原创 2020kickstartC_C perfect subarray
题意:给定一个数组a,求有多少个子串和是平方数,-100<a[i]<100。解题思路:因为a的长度是1e5,a[i]<=100,所以平方数小于sqrt(1e7),只要枚举下平方数就行。遍历a数组,求以i结尾的子数组,有多少个是平方数,(本题因为a[i]存在负数,没法用双指针)设前缀和为sum[i],就是求有多少个j满足sum[i]-sum[j-1]为平方数,假设当前枚举的是平方数s[k],即求有多少个j满足sum[j]=sum[i]-s[k],所以只需要在遍历的时候统计下.
2020-05-30 19:09:32
188
原创 matplotlib画图(折线图、热力图)
首先是热力图(heatmap),直接用matplotlib画就行了,不需要使用seaborn,seaborn应该就是用的matplotlib的代码,要修改东西还不如直接用matplotlib方便,另外本人在画热力图图时遇到,用matplotlib3.0出现画出的图会边缘的地方只显示半格,改成matplotlib2.0就正确了。def draw_k_line_v3(x, y): fig...
2020-04-29 15:34:55
1241
原创 atcoder abc 164 Multiple of 2019(dp)
dp题,状态dp[i][j],表示以第i字符结尾的数字中对2019取模为j的数字有多少个#include <bits/stdc++.h>using namespace std;const int maxn=2e5+5;int dp[3][3000];char str[maxn];int main(){ scanf("%s", str); int i,...
2020-04-26 22:35:48
500
原创 Discovering Neural Wiring(2019 nips, nas)
概述:这篇文章的感觉是用剪枝的思想来学习神经元(通道)之间的连线。算法:将channel作为node,edge对应weight首先将边分为:划分的依据是edge的权重|weight|的大小,取前k大为实边在前向传播的时候将信息只在实边上流通,如图:v点的输入信息表示为:u点的信息即可表示为:f函数是激活函数、batchnorm、c...
2019-11-29 19:59:19
270
原创 cf1262D2 Optimal Subsequences (Hard Version)(二分答案+bit)
解法:转换题意后,这题就是给定一个序列a,给出m个询问,问[0,k]的第pos小的数.特殊就特殊在是从0开始的。可以保存询问,我们让不同的询问ki从小到大排列,从小到大枚举k,将前ki个数存入树状数组,这时候可以通过二分答案来枚举答案mid,查询小于等于mid的数num,找出num=pos的最小的mid,就是第pos小的数了。时间复杂度是O(nlog^2n)应该能更快...还没...
2019-11-29 19:37:19
233
原创 kickstart 2019H Elevanagram
↵太菜了只补了小数据的做法小数据范围下可以直接把每个数字从小到大报存下来,记为a[i].dp[i][j][k]表示前i个数,取j个数为正,i-j个数为负的时候,加和对11取模为k是否可以完成。状态表示出来转移就很简单了,对于第i个数,枚举a[i]为正、负的情况就ok:dp[i][j][(k+a[i])%11]=max(dp[i-1][j-1][k], dp[i][j][(k...
2019-11-22 18:30:55
357
原创 comet oj 2760 符文能量(dp)
计算两两之间的和的序列,就是和最小连续子串和类似的dp了注意区间内的值是*k平方不要被-1迷惑注意将单个值*k的操作需要单独枚举注意long long代码:#include <bits/stdc++.h>using namespace std;const int maxn=1e5+5;long long a[maxn];long long b[m...
2019-08-10 10:03:41
102
原创 hdu 6348 序列计数(dp+bit)
像2015ccpc的一道题..赛时直接贴代码上去,果断mle到死,因为数据范围加到了1e4,所以没法开出这么大的二维数组。一个优化思路就是,当长度大于序列的最长上升子序列时,上升序列的数量一定是0,所以dp[i][j],定义长度为前i个数里面长度为j的上升序列个数,j这一维只需要开到最长上升子序列的个数,用vector动态开就行,超过最长上升子序列长度的直接输出0,。然后这题序列是随机的,根据结论...
2018-08-11 11:36:49
233
原创 线性规划的单纯形法
单纯形法1.将问题化为标准形式2 求出初始基可行解,列出单纯形表3 进行最优化检验,若当前表中所有检验数γj<=0(目标max时),则表中的基可行解就是问题的最优解,停算,否则继续4 从一个基可行解转换到另一个目标函数值更大的基可行解,列出新的单纯形表(1)确定换入基的变量。选择γj>0对应的变量xj作为换入基的变量,若有一个以上检验数大于0时,一般选择最大的一个检验数,即γk=max...
2018-03-16 21:32:49
2603
1
原创 codeforces 897 D Ithea Plays With Chtholly(交互)
题意:每次给你一个数,让你放到一个长度为n 的数组里,直到这个数组填满并且是不递减函数为止。需要 在m步内完成c是给出的数的范围。解题思路:一种显然的暴力方法就是从1开始扫描,遇到第一个大于x的或是a[i]==0的就放。但是还有显然的卡掉这种暴力的做法,就是把数n-1逐个给出,就每次要替换,这样的话就需要n^2次,显然不行。所以应该能想到从两边,开始扫描,让大于c...
2017-12-03 15:51:41
573
2
原创 gym 101137 L Lazy Coordinator(概率)
题意:对题库有两种操作,一种是在ti时刻加一道题,一种是在ti时刻减一道题拿来比赛,问每道题待在题库里的期望时间。思路:从后往前考虑,当前项i为减一道题时,之前的题在这一时刻被取出的概率是1/k,k表示之前还剩多少道题,而在这之后取出的概率就是1-1/k,用sum表示从n到i+1之间某一刻取出的期望时间,那么从n到i某一刻取出的期望时间就是sum*(1-1/k)+1/k*tim
2017-11-25 20:14:32
488
原创 atcoder Yet Another Palindrome Partitioning(dp)
题意:给出一个字符串,最少需要多少次拆分得到的子串都是合法的,合法的定义是改变字符串顺序能得到一个回文串。解题思路:容易想到的是一个合法的字符串的26个字母最多只能一个字母出现次数为奇数,用26位二进制数(mask)表示,1表示奇数的话,只有能整除2的和0是合法的。dp想法是每个状态减去一个合法串然后转移过来,但是显然不能for一下,这时候就利用下上面的mask。用ma
2017-10-23 19:21:10
420
原创 hdu 6183 Color it(cdq分治+线段树)
题意:两种操作1:在x,y这个点上涂上颜色c。2:查询1,y1和x,y2组成的矩形包含多少种颜色。代码:矩形区域查询点,赛时直接把之前cdq分治+bit的代码贴上然后开了50个树状数组去做,时间复杂度是n*logn*logn*50,直接十几e的复杂度,tle,而且因为树状数组的logn和50是不随数据变的,所以跑起来还没有暴力快,然后暴力代码ac了。。。50
2017-09-01 11:31:27
828
原创 uva 10934 Dropping water balloons(dp)
题意:给出k个水球,n层楼,现在想测试出水球最低会在那层楼扔下爆炸,问最少需要测试多少次, 注意要求的情况是每层楼都可能爆炸。解题思路:一眼看上去会觉得是二分,如果求数够的话,确实能够在log2(n)的次数之内求出测试出来,但是这个问题我们要考虑的是每个位置都有可能爆炸,所以不仅球不够,目标位置没有确定也导致我们不可能考虑二分。想一想如果去搜索的话,我们肯定会搜索还
2017-08-30 16:18:40
324
原创 Gym - 101334E Exploring Pyramids(dp+分治)
题意:给出一个多叉树先序遍历序列,问有多少种不同的树的结构能跑出这样的序列,答案对1e9取模。解题思路:可以考虑一颗树在什么位置进行了怎样的分叉决定了它的情况,所以我们在不同的位置枚举不同的分叉, 统计情况就可以了。对于一个没有分叉的一条到叶子节点的链,它的先序遍历一定是一个回文串。所以一条链能产生一个分叉关键条件是否由两个及以上不重叠子串组成。这个过程可以递归分治得到。
2017-08-28 10:03:30
310
原创 hdu 5450 Traversal(状压dp)
题意比较迷,第一句话的意思是那k个数不存在不用管,出题人的英语.....但是这个题还是比较难的。每个点只能到差值1, p, p+2的点,要求每次走数量大于等于3的环,不能重复走完所有点。走完所有点形成环其实相当于,每个点出度入度两次,要超过3个点意味着不能两两成环,更不能自环。由于最多只能到达p+2之外的点,所以每个点一定要在p+2的距离只能形成一个环。可以维护
2017-08-23 21:24:21
449
原创 codeforces 449 D Jzzhu and Numbers(容斥+dp)
这题真的爆炸难懂...待补。代码:#include using namespace std;const int mod=1e9+7;const int maxn=1e6+5;int dp[maxn];long long p[maxn];int main(){ int n, i, j, x; cin>>n; for(i=1, p[0]=1; i<
2017-08-23 20:29:12
330
原创 hihocoder 1555 四次方根(矩阵快速幂)
做这个题之前你的知道一元四次方程的求根公式(为什么我的小学体育老师没教过我...)设x^4+ax^3+bx²+cx+d=0的四个根是x1,x2,x3,x4,则x1+x2+x3+x4=﹣ax1x2+x1x3+x1x4+x2x3+x2x4+x3x4=bx1x2x3+x1x2x4+x1x3x4+x2x3x4=﹣cx1x2x3x4=d然后你可以通过推导得到x1^2+x2^2+x3^2+x4^2
2017-08-21 11:03:23
693
原创 hdu 6133 Army Formations(线段树合并)
其实题目要求的就是一颗子树上把所有的权值从小到大排序,每个值对应第k大,把k和值乘在一起加和,就是这个子树对应的根的答案。说到底就是有多少个数大于一个值,这个值就要多加几次。然后我就死在这个理解上,因为要考虑值相同的情况,这句话没错,但是容易忽略值相同的情况。对于每个点我们建一颗权值线段树,表示以这个点为根的子树上的权值分部情况。然后右子树上有多少值大于左子树上的值,以及左子树上有
2017-08-20 17:26:35
512
原创 bzoj 2212 [Poi2011]Tree Rotations(线段树合并)
题意:一棵二叉树有n个叶子节点,每个叶子节点有权值,可以交换左右子树,问先序遍历这棵树,得到的最小逆序对数。思路:应该算是线段树合并的入门题。暴力每个非叶子节点,用ans1记录不交换左右子树时,跨越左子树和右子树的答案,即左子树大于右子树的数的对数,ans2记录交换左右子树时的答案。查询左子树中大于右子树的对数可以对左右子树各建一棵权值线段树,在线段树合
2017-08-18 22:16:56
314
转载 Codeforces 388B Fox and Minimal path(构造最短路条数为N的图)
一道cf好题。转自:http://blog.csdn.net/yasola/article/details/52386132题目大意: 输入一个数字N,构造一个最短路径数为N的图,以邻接矩阵的形式输出。解题思路: 开始想的是因数分解,不过这样对于非常大的质数会超过1000个点的限制。后来在吃饭的时候灵光一闪想到的正确的方法
2017-08-16 18:09:21
399
原创 codeforces 839 D Winter is here
最后johsnows做jonsnow的题tle在了39...大概是因为我是假的snow吧。这个题的想法挺套路的。想法就是去枚举倍数,看有多少个数是当前这个数的倍数,这些数的gcd一定是当前这个数的倍数,假设有n个数,题目所求为gcd*k,枚举1注意求1-n的i*C(i,n)需要求一下公式,不能暴力求。先把C(i,n)拆成阶乘的形式,就可以看出来i*C(i,n)就是n*(i-
2017-08-13 17:36:42
473
原创 hdu 6096 String(AC自动机)
转换还是比较巧妙的。因为要求前缀后缀都包含的个数,所以可以把字符串a转换成a#a这样一个字符串,比如abca就转换成abca#abca然后对于一组前缀a后缀b转换成b#a,比如ab ca,就是ca#ab,然后对前缀后缀的串建立AC自动机,让主串去匹配,如上述例子,ca#ab满足为abca#abca的一个子串,也就是abca满足这个前缀后缀,所以问题,就转换成了典型的ac自动机匹配问题。
2017-08-12 00:07:17
911
原创 hdu 6097 Mindis(几何)
因为PO = QO, 所以直接将PQ平移到平行于x轴的位置,这样比较好建立椭圆方程。为什么会联系到椭圆呢,因为椭圆上任意一点到两焦点的距离等于定值,所以建立以PQ为焦点的椭圆,再求椭圆与圆相交时,最小的a,就求出答案了。这里只知道c,需要二分一下b,b的范围就是r-h,h是圆心到PQ中点的距离。http://www.cnblogs.com/chen9510/p/7341215.html
2017-08-11 19:49:28
450
原创 poj 2763 Housewife Wind(线段树+树剖)
将边的值转成深度大的端点的点值,然后就是树剖找lca通过dfs序把一条链的点映射到线段树上的区间去查询就好了。需要注意的一点是,传入线段树的是dfs序,但是线段数的操作不需要去管dfs序,直接根据传进来的参数做就行了,这是一个容易写错的地方。代码:#include #include #define MID int mid=(l+r)>>1;#define lson
2017-08-09 22:26:53
299
原创 hdu 4417 Super Mario(主席树||cdq分治+树状数组)
主席树和cdq分治都可以,而且都是很入门的做法。这道题主席树的写法要好写一些,但是如果带修改的话,就得用cdq分治了。主席树代码:#include using namespace std;const int maxn=1e5+5;struct node{ int l, r, x;}val[maxn*40];int tot, root[maxn], a[ma
2017-08-09 17:43:35
437
原创 hdu 6050 Funny Function (矩阵快速幂)
二维的一个矩阵。如果只有一维,用一下矩阵快速幂求前缀和是很简单的。比如我构造出一个矩阵从[f(1,1),f(1,2), sum(1,2)]推到[f(1,2), f(1,3), sum(1,3)],这是不难的。由于我们是要求f(m,1),就是要求sum(m-1,n)所以还要构造矩阵从f(m-1, 1)推到f(m, 1)也就是sum(m-2,n)到sum(m-1, n)。但是第一维构造
2017-08-07 23:44:32
345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人