- 博客(45)
- 资源 (1)
- 收藏
- 关注

原创 leetcode1
leetcode day1大概题目意思:记录二叉树每一层的平均值解法:采用队列,每次先获取队列中的点个数,然后遍历这几个点,记录值,并且将每个点的左右结点(如果有)入队,这样就完成了一层的纪录,队列为空后,记录完毕。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int
2020-09-12 23:58:26
185
原创 区间dp+
区间dp 石头合并#include<bits/stdc++.h>using namespace std;int a[1001];int s[1001];int dp[1001][1001];const int INF = 1e8;int main() { int n; cin >> n; for (int i = 1; i <= n; i++) cin >> s[i]; for (int i = 1; i <=
2021-05-31 23:55:56
135
原创 leetcode2
1.迷路的机器人**思路:**如果经过某一个点不能得到正确答案,那么就把这个点废弃。即记忆化搜索class Solution {public: vector<vector<int>> path = {{0,0}}; int no[101][101]={0}; int move1[2] = {1, 0}; int move2[2] = {0, 1}; vector<vector<int>> pathWithObst
2021-05-13 14:42:33
115
原创 NLP实验1-基于逻辑回归的句子情感分析
1 准备工作1.1 实现两个工具函数处理推文函数:首先将输入的句子去除不必要的字符,随后,调用tokennize进行扫描,对于每一个单词,如果不是停用词且不是标点符号,就将它词根化def process_tweet(tweet): """Process tweet function. Input: tweet: a string containing a tweet Output: tweets_clean: a list of words co
2021-05-01 11:49:32
728
原创 机器学习5 神经网络
神经元线性求和然后加上激励函数就是一个神经元,比如逻辑回归向前传播在每一层中,这一层的神经元经过计算后向下一层传递结果,下一层神经元在这一层计算结果的基础上进行再一次计算向后传播如果要调整参数 最常见的方法就是通过对loss函数求关于该参数的导数,然后用批量梯度下降。这里存在一个点就是,该参数越接近output,求导的步骤将越少,因为套用的是链式的求导法则。...
2021-04-21 20:41:32
75
原创 刷题时被忽略的点
1.二叉搜索树的中序遍历是递增序列这是由于二叉搜索树根节点大于左子树小于右子树的特点。并且,如果要求递减序列,直接右根左逆向中序遍历即可
2021-04-18 23:23:27
73
原创 机器学习2 分类
1 逻辑回归对于输出为0或者1的这种二分的情况,显然如果用线性回归,将是很糟糕的做法1.用S型函数映射将y用s型函数g(z)进行映射,得到的结果是介于0到1之间的。2.将某一个y的概率表达成3.假设有一批y:y1…yn,然后用极大似然函数进行模拟,取log把乘方拿下来,求其导数,然后迭代θ注意: 这个结果和线性回归的结果表面形式相同,但是这里的h(x)套了一个S型函数。个人疑惑: 这里为什么不令导数为0,直接一步求θ?...
2021-04-04 17:10:25
125
原创 机器学习1 随机梯度下降和批量梯度下降
1 adagrad(自适应梯度算法)自适应梯度算法是用来让当前参数变成目标参数的一种算法。以ax2+bx+c为例,某一点x0与原点的距离是x0+b/2a,也就是2ax0+b/a,可以看到分子是一次微分,分母是二次微分。自适应梯度算法模拟了这种方式,分母是用∑一次微分 /n的方式来模拟二次微分的:当二次微分较大时,一次微分的函数比较陡峭,这种求法求得的分母也比较大...
2021-03-28 16:30:28
155
原创 利用数组递推求解丑数问题
class Solution {public: int nthUglyNumber(int n) { long long a=1,b=1,c=1; long long chou[2000]; long long ans=0; chou[1]=1; if(n==1)return 1; for(int i=2;;i++) { chou[i]=min(min(ch
2021-03-13 10:35:57
78
原创 优先队列
#include<bits/stdc++.h>using namespace std;vector<int>ans[100001];struct node{ int val; int level; friend bool operator<(node a,node b){ if(a.level==b.level)return a.val>b.val; return a.level>b.level; .
2021-03-12 16:37:59
95
原创 dp-最长公共子序列以及dp-最长公共子串
class Solution {public: int longestCommonSubsequence(string text1, string text2) { int dp[1001][1001],ans=0; int len1=text1.length(), len2=text2.length(); for(int i=1;i<=len1;i++) for(int j=1;j<=len2;j
2020-10-08 17:23:57
123
原创 蓝桥杯训练2
1.密码脱落**思路1:**设立两个指针向中间递归,结构是一颗二叉树,复杂度为2的n次方#include<bits/stdc++.h>using namespace std;string s; //abccbaint dfs(int left,int right,int cnt){ if(left>=right)return cnt; if(s[left]!=s[right]){ return min(dfs(left+1,right
2020-10-08 15:23:53
582
原创 最大公约数模板
#include<bits/stdc++.h>using namespace std;int gcd(int a,int b){ return b?gcd(b,a%b):a;}int main(){ int a,b; scanf("%d %d",&a, &b); printf("%d\n",gcd(a,b)); system("pause"); return 0;}
2020-10-03 17:04:47
105
原创 dfs求排列以及组合
排列排列比较简单,设置一个vis数组判断每个数是否用过,然后for循环进行判定并且dfs就行,主要是注意一个数用完之后dfs进行标记vis,dfs完之后换一个数,就要把这个数的vis记录抹去,代表下次还能用组合组合其实卡了我挺久,因为组合不像排列那样一个数可以出现在所有位置并且只要判vis就行。这里的组合借鉴的是别人的思路。用一个数组来存储已经放入的值,top指针进行覆盖或者添加,depth作为原数组的深度进行迭代,所以一旦一个数在前面位置出现,他就永远只能在那个位置出现,等到包含这个数的所有组合出现
2020-09-29 11:43:17
773
1
原创 递推数组求解丑数
首先可以确认一个事实,所有丑数可以由1变来,丑数*2、3、5仍是丑数,所以设立三个数组,每次进行递推,取最小的那个值为最近的丑数,递推完记得指针加1class Solution {public: int nthUglyNumber(int n) { long long a=1,b=1,c=1; long long chou[2000]; long long ans=0; chou[1]=1; if(n==1).
2020-09-27 13:45:22
166
原创 干碎背包问题
#include<bits/stdc++.h>using namespace std;int w[1001];int v[1001];int dp[1001][1001];int main(){ int T; int N,V; cin>>T; while(T--){ cin>>N>>V; memset(dp,0,sizeof(dp)); for(int i=1;i<
2020-09-26 13:55:29
157
原创 状态压缩入门题——互不侵犯
整道题做的非常艰难,最后一直纠结s=0能ac,s=1不能ac的问题。其实s=0这块没毛病,主要是最后计算ans的时候,只加上最后一行国王为k的所有状态方案之和。#include<bits/stdc++.h>using namespace std;int n,k;long long dp[10][1<<9+1][82];int state[1<<9+1];int c[1<<9+1];int cnt=0;//这道题当且仅当比较上下行是否冲突采用st
2020-09-26 12:25:24
135
原创 蓝桥杯训练1
one暴力#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; int a[111]; for(int i=1;i<=n;i++) cin>>a[i]; int M=0; int t=0; int ans=0; int count=-1; for(int i=1;i<=n;i++)
2020-09-22 20:08:21
275
原创 字符串dp
#include<iostream>#include<algorithm>#include<stdio.h>using namespace std;char a[101];char b[101];char c[101];int dp[101][101];int statu[101][101];int main(){ scanf("%s...
2020-04-28 09:53:18
184
原创 图论学习
1tarjan算法求强连通分量个数#include<vector>#include<stack>#include<iostream>#include<algorithm>#include<string.h>using namespace std;int num;vector<int> vec[10001];/...
2020-04-23 01:09:09
96
原创 week9
1#include<bits/stdc++.h>using namespace std;void solve(int a,int b,int now){ if(a<b)swap(a,b); if(a>=2*b||b==0||a%b==0){ if(now)printf("Stan wins\n"); else printf("Oll...
2020-03-08 15:06:51
100
原创 hdu第八周 树
#include<bits/stdc++.h>using namespace std;int father[100001];int vis[100001];int find(int x){ if(x==father[x])return x; else return father[x]=find(father[x]);}void unit(int a,int...
2020-02-26 00:47:26
62
原创 第七周DP
1#include<bits/stdc++.h>using namespace std;int n;int m;int mp[22][1111];int dp[22][1111];int main(){ int t; cin>>t; while(t--){ cin>>n>>m; for(int i...
2020-02-20 02:21:18
104
原创 week6
1#include<bits/stdc++.h>using namespace std;int num[1001];int ans[1001];int sum;int n; int flag; // x表示已经选到num[]中的第x个数,already表示已经选了多少个数 void dfs(int sums,int already,int x){ if(su...
2020-02-11 03:12:30
82
原创 hdu第四周贪心笔记
1看成两个人玩游戏,另外一个人每次出比你大一点点的牌,如果没有你就赢了,经过验证,可以省略出比自己小的牌的过程。2从当前阈值最小的系统开始找,如果阈值比x大就更新,否则下一个,若找完都没有更新,就添加新系统,这样保证每个系统被最大利用,就是尽量保证阈值高的不被浪费...
2019-11-28 09:21:51
85
原创 hdu 贪心
不知道为什么可以忽略最小的几个的标记#include<bits/stdc++.h>using namespace std;int vi[1011];int a[80];int main(){ int n,m; int h=1; while(cin>>n,cin>>m,!(n==0&&m==0)){ memset(vi,0,...
2019-11-25 16:39:33
72
原创 初试迭代器
#include<bits/stdc++.h>using namespace std;int main(){ map<string,string> ma; string str; while(cin>>str,str!="XXXXXX"){ string s=str; sort(s.begin(),s.end()); ma[str]=s;...
2019-11-24 20:05:29
87
原创 字典树模板题
感觉字符串中做过的算比较有意义的题目了gnatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).Input输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问...
2019-11-22 00:42:22
167
原创 图的遍历
void dfs(int node,int step){ if(!book[node]){ if(st[node]){ int dis=step-st[node]; mi=mi<dis?mi:dis; } else { st[node]=step; dfs(data[node],step+1); book[node]=1; }...
2019-11-14 20:18:02
72
原创 吐血之根据中序后序得出先序
string mid;string rear;void dfs(int l,int r,int lm,int rm){ if(l>r)return ;cout<<rear[r];char c=rear[r];if(l==r)return ;int f=0;int i=mid.find(c); //i-l+1 r-(i+1)+1 ACGDB H Z...
2019-11-13 22:42:20
87
原创 数的划分
将整数n分成k份,不考虑顺序#include<bits/stdc++.h>using namespace std;int n,k;int cnt;void dfs(int step,int remain,int last){ if(step==k){ if(remain==0) cnt++; return ;} for(int i=...
2019-11-08 20:51:49
74
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人