每日一题
阳树阳树
大二,Nio实习ing
展开
-
反转链表II「leetcode」
这题主要是根据反转链表I进行改进,反转链表I有两种方法,第一种是递归方法,第二种是for循环方法。首先来看看比较少见的递归方法:这个方法效率要高不少var reverseBetween = function(head, left, right) { let rever = function(pre,cur){ // 返回前一个 if(!cur) return pre let next = cur.next cur.next原创 2022-05-03 22:56:07 · 553 阅读 · 0 评论 -
生成匹配的括号「leetcode」
这道题要生成所有合法的括号情况,可以看到n的数值范围在[1,8]非常小,所以可以一个一个的搜索。第一种是用DFS把每种情况都搜索一波,留下合法的所有情况var generateParenthesis = function(n) { // DFS回溯思路 // 每次添加一个括号,左边和右边,其实这个题目的难点就在于建模 let res = [] dfs(0,0,"") return res function dfs(open,close,cur){原创 2022-05-03 22:26:11 · 637 阅读 · 0 评论 -
从前序(后序)与中序遍历构造二叉树
想想前序遍历以及中序遍历的特点显然可以不断递归构造树形结构递归的函数注意是同一边,用前序与中序两种不同表示方法/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.r原创 2022-04-25 20:54:35 · 558 阅读 · 0 评论 -
最长回文子串「动态规划」
/** * @param {string} s * @return {string} */// 思路:DP// 限定长度,从小到达枚举// 有意思的点:初始化var longestPalindrome = function(s) { // 二维数组初始化 let dp = [] let len = s.length for(let i=0;i<len;i++){ dp[i] = [] } // dp值初始化 le.原创 2022-04-25 20:50:31 · 284 阅读 · 0 评论 -
C++题集「含分类」「算法与数据结构」(持续更新ing
C++题集目录C++题集DP问题Dice SumKing BombeeChoose Elements搜索问题Shortest Good Path(BFS)思维题Bracket Sequence DeletionMax MinMathK-colinear LinePolynomial division贪心问题Wrapping Chocolate二分问题Range Count Query木材加工跳石头DP问题Dice原创 2022-04-23 11:00:00 · 1412 阅读 · 0 评论 -
leetcode环形链表(一和二)「无耻做法」
环形链表⚡⚡⚡环形链表I🚀🚀🚀题目传送门:环形链表I(opens new window) 题意:给你一个链表,你需要去判断一下这个链表有没有环。 想法:💦💦💦 判断一个链表有没有环,只需要判断我们有没有重复走这个链表的某个节点就好,那怎么判断有没有重复走过这个位置呢?Tips:链表是一个对象,是对象就可以挂载其他的属性,比如挂载一个flag来表示这个走过没有,如果走过了,那很...原创 2022-04-18 18:43:19 · 315 阅读 · 0 评论 -
Leetcode「合并两个有序数组」
题目链接合并两个有序数组自己写的很笨重,直接分情况讨论的:/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } *//** * @param {ListNode} l1 * @param {ListNode} l2 * @return {ListNode} */var mergeTwoLis原创 2022-04-10 13:39:53 · 994 阅读 · 0 评论 -
Atcoder Beginner Contest 244 F
F - Shortest Good Path题意:给你n个点,m条边,无重边,无自环一个数列如果满足,所有的都在1-N并且两点之间有边连就可以还有1 0表示路径经过i点的次数是奇数还是偶数题解:1.如何表示?(1)输入时用一个vector表示,后续用auto得到对应的值。(2)dis[i][j]表示现在状态是i「用二进制来表示」,数为j。2.如何做?(1)为什么一开始要u-1,v-1?因为要使用二进制的操作,比如0001,是(1<<0)而不是(1<&原创 2022-03-22 08:59:31 · 334 阅读 · 0 评论 -
ABC 244 E补题
E - King Bombee完全没有想到是DP....事后总结:要取模,奇偶,求方案数。就用DP[i][j][k]来表示,从走到i这个点,j为所在序列中的位置,而k用来表示奇偶性。如果加入了一个数,和X一样,显然现在它变成了偶/奇,从原来的奇偶性相反的DP中转移过来如果未加入,从原来的奇偶性相同的DP中转移过来AC代码:#include <iostream>#include <string.h>#include <stdio.h>#i原创 2022-03-21 10:37:24 · 381 阅读 · 0 评论 -
L1-009 N个数求和 (20 分)
这道题看着很难,但其实只要弄清楚输入输出就只是语法题,很多部分细节处理一下就好了,这里用到了GCD的板子AC代码:#include <iostream>#define int long longusing namespace std;struct node{ int fenzi,fenmu;}num[110];int GCD(int a,int b)//求最大公约数 { if (a == 0) return 0; else return (b==0)?a:GCD原创 2022-03-17 15:37:55 · 236 阅读 · 0 评论 -
L1-008 求整数段和 (10 分)
自己写的超大模拟:#include <iostream>#include <string.h>using namespace std;int main() { int a,b;cin>>a>>b; int sum=0; if(a<0&&b>=0){// 0-1 1-2 2-3 3-4 4-5 int tot=0; int c = -a; for(int i=c;i>0;i--){ su原创 2022-03-16 20:02:49 · 507 阅读 · 0 评论 -
L1-006 连续因子 (20 分)
这题一开始毫无头绪,又可以分离,又要连续,其实不需要去考虑前面的有无,根本没关系,只需要对每一个点去找连续的就可以了。但是傻傻的枚举更是不可靠的,那样必然会TLE,由于不可能大于sqrt(n),所以枚举范围可以改一下。然后找连续就用while取余数就可以while(val%pos==0){ c++; val /= pos; pos++; } if(c>maxx){ maxx = c; start = i; }我也不知道为啥,但原创 2022-03-15 17:34:29 · 244 阅读 · 0 评论 -
互不侵犯「状态压缩DP」
集训队训练⑨ - Virtual Judge1.注意判断非法状态2.用二进制先把所有状态搞出来3.后面再判断是否合法,如果说合法,那就存到转移的里面#include <iostream>#include <vector>#include <string.h>#include <algorithm>#include <stdio.h>#define int long longusing namespace std;c原创 2022-03-15 13:30:52 · 194 阅读 · 0 评论 -
CF教育场124C补题「每日一题」
题意:两排已经连通的电脑,现在怎么连接,使得坏一台电脑其他电脑也可以继续连接,所以直接考虑端点,有7种情况:1.a1-b1,an-bn2.a1-bn,an-b13.a1-b1 ,an与bn单独去找4.a1-bn ,an与b1单独去找5.an-b1 ,a1与bn单独去找6.an-bn ,a1与b1单独去找7.a1与b1与an与bn单独去找AC代码:#include <iostream>#include <unordered_map>#inclu原创 2022-03-11 16:45:21 · 241 阅读 · 0 评论 -
手写素数板子
(1)1不是素数(2)到sqrt来简化,注意可以取等(边界问题)#include <iostream>#include <cmath>#include <string.h>#include <stdio.h>using namespace std;int main(){ int T;cin>>T; while(T--) { int n,f=1;cin>>n;原创 2022-03-10 14:28:28 · 140 阅读 · 0 评论 -
四维DP「每日一题」
集训队训练⑧ - Virtual Judge题意:一个矩阵,从左上走到右下的最大权重和「两条路」可以开一个四维数组,因为数据量太小了对每种情况都进行遍历,然后找不重复的点#include <iostream>using namespace std;int n;int a[15][15];int dp[15][15][15][15];int main() { cin>>n; int x,y,val; while(scanf("%d",&x)!原创 2022-03-09 23:45:46 · 255 阅读 · 0 评论 -
最长上升子序列「每日一题」
895. 最长上升子序列 - AcWing题库#include <iostream>#include <algorithm>#include <string.h>#include <math.h>#include <stdio.h>#define int long longusing namespace std;const int N=1e3+10;const int mod=1e9+7;int arr[N];原创 2022-03-07 10:38:13 · 163 阅读 · 0 评论 -
路径计数 DP「每日一题」
路径计数 - 题目 - Daimayuan Online JudgeAC代码:#include <iostream>#include <algorithm>#include <string.h>#include <math.h>#include <stdio.h>#define int long longusing namespace std;const int mod = 1e9+7;int dp[110][110];原创 2022-03-06 11:00:55 · 289 阅读 · 0 评论 -
区间DP「每日一题」
任务分配 - 题目 - Daimayuan Online Judge思路:DP「如果权重为一贪心也不是不可以」核心while(pos<=n&&arr[pos].e==i){ dp[i] = max(dp[i],dp[arr[pos].s]+arr[pos].w); pos++;}AC代码:#include <iostream>#include <cmath>#include <algorithm>u.原创 2022-03-05 16:33:07 · 143 阅读 · 0 评论 -
饿饿,饭饭「每日一题」
饿饿 饭饭 - 题目 - Daimayuan Online Judgerre题解:经典二分「calc函数好好写就好」AC代码:#include <iostream>#define int long longusing namespace std;const int N = 1e5+10;int arr[N],ans[N];int n,k;int calc(int x){ int res=0; for(int i=1;i<=n;i++) { if(arr原创 2022-03-04 17:06:10 · 754 阅读 · 0 评论 -
订单编号「每日一题」
订单编号 - 题目 - Daimayuan Online Judge#include <bits/stdc++.h>using namespace std;int n;set < pair<int, int> > c;inline void insert(int l,int r) { if(l > r) return; c.insert(make_pair(r, l));}int main() { scanf("%d.原创 2022-03-03 19:02:07 · 269 阅读 · 0 评论 -
Alice的德州扑克「每日一题」
Alice的德州扑克 - 题目 - Daimayuan Online JudgeAC代码:打表yyds!#include <iostream>using namespace std;struct node{ int pai; int hao;}ppp[10];//bool cmp(struct node a,struct node b)int main() { int cnt1,cnt2; for(int i=1;i<=5;i++)原创 2022-03-02 22:33:45 · 253 阅读 · 0 评论 -
走楼梯2「动态规划」「细节处理」「每日一题」
楼梯有 𝑛n 阶,上楼可以一步上一阶,也可以一步上二阶。但你不能连续三步都走两阶,计算走到第𝑛n阶共有多少种不同的走法。输入格式一行,一个数字,表示𝑛n。输出格式输出走楼梯的方式总数。注意点:1.剪去的部分有规律,mi[8]=f[8-1]「正好相差7」2.注意前面的也要加上剪去的部分而不是未剪去的部分#include <iostream>#include <string.h>using namespace std;long long f[1原创 2022-02-27 20:13:14 · 528 阅读 · 4 评论