- 博客(85)
- 收藏
- 关注
原创 二分查找(深刻理解)+动态规划(一维优化技巧 玄学秘籍)
我们需要选择不重复的若干工作进行利润的最大化,类似于工序安排问题,但是这里加了个利润最大化,这题数据范围很玄学是5*10^4,其实看到这个大家肯定能反映过来二维DP肯定是行不通的了,超时的数据范围,那么如果是O(n)的时间复杂度呢,我们有什么好的解决办法吗,其实这题我第一时间想到的是贪心思想,但是想想好像不合理,因为如果按照结束时间排序进行贪心,如果最后一个利润搞的超级大,大过了所有那么肯定是贪心失败,那么如果按照利润进行贪心呢,显然也不行,不能考虑到分配时间的合理性,所以这个题目只能是DP来解决。
2024-05-04 14:41:10
210
原创 leetcode 每日一题目 (树的直径 +DFS的深刻理解)
这题的思想类似于求树的直径,这个题目给了我们一个start作为我们的出发点,那么我们考虑一下,从这个出发点往两侧延伸最长的直径应该就是我们要找的最大的距离,那么这里考虑一下这个直径的问题怎么理解?给你一棵二叉树的根节点 root ,二叉树中节点的值 互不相同。输入:root = [1,5,3,null,4,10,6,9,2], start = 3。3-1-5-4-(2,9)就是最长的路径,也就是我们最终需要求得的最长扩散时间。这张图,我门假设从3这个节点开始哈,那么我们可以看到3有。节点此前还没有感染。
2024-04-24 15:35:41
196
原创 leetcode第392场周赛:带权图里旅途的最小代价(BFS或者并查集)
如果旅途开始于节点 u ,结束于节点 v ,我们定义这一趟旅途的 代价 是经过的边权按位与 AND 的结果。2.第2个思路大家想一下,我们其实可以通过dfs或者bfs将每个节点所属的联通块进行编号,同时计算出每个联通块的相与的结果总和保存到相应编号的联通结果的1数组中去即可。2.如果这两个节点位于同1个联通块内,那么对于他们两个之间的最短距离就是经历整个联通块内部的所有边最终到达彼此的距离就是相与的最小距离。1.如果我们要产查询的两个节点位于不同的区域联通块内,那么显然是无法到达的,显然结果就是-1。
2024-04-07 15:40:13
393
1
原创 扩展区间的logn的方法(需要添加的最少的硬币数目)
这里实际上也就是我们看到得到的区间结果每次都是拓展为2倍的原因,贪心的思想就是以s为基准拓展2倍,是当前可以拓展的最大区间),这样就可以得到了 [s,2s−1]中的所有整数,再与 [0,s−1] 合并,可以得到 [0,2s−1]中的所有整数。假设现在得到了区间 [0,s−1]中的所有整数,如果此时遍历到整数 x=coins[i],[0,s−1] 中的每个整数都增加 x,我们就得到了区间 [x,s+x−1]中的所有整数。当 s>targets 时,我们就得到了 [1,target]中的所有整数,退出循环。
2024-04-03 19:26:35
391
原创 牛客网2020跨年赛 B题(两种解法)
这是题目链接题目传送门,感兴趣的小伙伴可以点击进去提交。题目大致意思就是给你两个序列a和b,元素的个数均为n,且b中元素属于[0,100],a中元素属于[0,100000],可以将a[i]进行两种操作,a[i]-b[i],或者a[i]+b[i],或者不变,然后的到一个新的序列a^,最终目的是使得,新的序列和%y的值最大,y属于[0,100]。分析:这题一看y的数据范围,和题目的限制条件第一时间直接想到dp,第一种很容易想到的就是二维dp[i][j],代表前i个元素可以组成为j的情况是否成立。这样我们就
2021-01-02 00:22:52
237
1
原创 蓝桥杯模拟赛四 任务序列
这是题目链接:任务序列传送门题目大致意思就是小明接受了n个任务,想在任务剩余时间内获得尽可能多的奖励,给定n个任务的剩余时间和n个任务的奖励,求出获取奖励的最大值。这题两个做法:1):按照奖励的降序排序,根据奖励的对应的时间获取到尽可能多的奖励,这种做法类似贪心。2):这种做法我详细说一下,就是首先我们按照剩余时间排序,剩余时间少的排在前面,这个应该很好理解吧,就是剩余时间少的就要先做吗,对吧,从前向后选,但是如果遇到两个时间相同的,首先我们可能考虑和上一个时间段的时间差,然后将奖励值排序,选出前几
2020-10-14 19:24:35
212
原创 Ajax学习总结
首先Ajax简介:全称Asynchronous JavaScript and XML,即异步的JavaScript和XML。他不是一门编程语言,而是利用JavaScript在保证页面不被刷新,页面链接不被改变的情况下雨服务器交换数据并且更新网页的技术。之后介绍JQuery的一些简单使用,一些Ajax的内置函数:这里我拿一个列子来进行分析:<%@ page contentType="text/html;charset=UTF-8" language="java" %><html&g
2020-09-30 18:46:46
1839
原创 Mybaits配置文件中的mappers标签 分析:
1.配置mapper接口所在包(dao)package标签,通过name属性指定mapper接口所在的包名,此时对应的映射文件必须与接口位于同一路径下。<mappers> <package name="com.i.mapper"/><mappers>2相对路径配置<mappers> <mapper resource="com/i/mapper/xxxmapper.xml"/><mappers>3.类注册引入:&l
2020-09-28 11:49:57
389
原创 SSM整合过程关于@Param注解使用的一些细节
1.首先先声明一下该注解的功能,就是给参数进行命名来找到对应参数,举个例子(例如在Mybatis的XXXMapper.xml文件中针对某个sql语句 比如根据id来查询某个实体,那么假如我们传入的参数列名为id,但是实体类的column确实userID,这时候我们可以将参数就行命名为userID,这时候我们就可以根据这个命名找到该参数,类似于该参数的一个“id”的感觉,这样就可以将参数正确的注入sql语句中。例如:public int getUserDetail(@Param("userId") int
2020-09-27 19:04:04
218
原创 “Could not open ServletContext resource [/WEB-INF/applicationContext.xml]和Error creating bean...解决方案
1.首先第一步就是检查你的web.xml文件里面是否配置了监听器也就是:<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>把这个加上去 具体的作用就是:去读取Spring主配置文件applicationContext.xml(也就是我们在context-param标
2020-09-27 10:19:14
244
原创 JSON交互处理
JSON:1.JSON(JavaScript Object Notation JS对象标记):是一种轻量级的数据交互方式,应用很广泛。2.采用完全独立于编程语言的文本格式来存储和表示数据。3.易于人阅读理解,同时也利于机器解析和生成在 JavaScript 语言中,一切都是对象。因此,任何JavaScript 支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。看看他的要求和语法格式: 对象表示为键值对,数据由逗号分隔 花括号保存对象 方括号保存数组JSON数
2020-09-25 23:41:33
128
原创 SpringMVC-Restful风格解析-注解分析
分析restful风格:特点·:开发简单 简洁高效 安全性高分析:很多格式就是localhost:8080/add/a/b/c…一直使用/来进行操作传入我们所需要的数据 比如百度百科的地址框:https://baike.baidu.com/item/CSDN/172150?fr=aladdin格式都是item后面加上搜索的关键字 类似这种的风格//@RequestMapping(value="/add/{a}/{b}",method=RequestMethod.Get) @GetMappin
2020-09-24 22:39:19
223
原创 Servlet中doGet和doPost方法的区别和用法
1.对于二者可以相互调用的理解:对于二者,针对浏览器发送的不同请求,虽然协议不同,但实现的逻辑是相同的,所以可以直接调用。2.doGet方法:一般情况下我们是不会用到doGet方法的,doGet方法在提交表单的时候会在url后边显示提交的内容,这很不安全,而且提交内容的大小也有限制。只能提交256个字符。3.doPost方法:doPost没有限制,Post是Http请求体中键值对。通常我们使用的都是doPost方法,你只要在servlet中让这两个方法相互调用就行啦。4.针对二者区别的分析:显然二者存
2020-09-24 08:25:56
5223
1
原创 注解版开发SpringMVC过程
1.新建一个Moudle,springmvc-03-hello-annotation 。添加web支持!直接新建maven工程就行,在右键add framework support中勾选web支持就可以啦2.由于Maven可能存在资源过滤的问题,我们将配置完善 在父项目的基础上添加配置:<build> <resources> <resource> <directory>src/main/java</dire
2020-09-24 00:06:04
106
原创 SpringMVC实现原理分析
这是大致原理实现图:那么我们一步步来分析: 1.DispatcherServlet代表前控制器 负责接收用户请求并且拦截请求, 2.HandlerMapping为处理器映射 根据前端控制器传来的url查找对应的Handler 例如: <!--Handler--> <bean id="/hello" class="com.kuang.controller.HelloControll.
2020-09-23 19:25:59
74
原创 蓝桥杯2020模拟赛:满足条件的序列的数量(记忆化搜索)
【问题描述】小明想知道,满足以下条件的正整数序列的数量:第一项为 n;第二项不超过 n;从第三项开始,每一项小于前两项的差的绝对值。请计算,对于给定的 n,有多少种满足条件的序列。【输入格式】输入一行包含一个整数 n。【输出格式】输出一个整数,表示答案。答案可能很大,请输出答案除以10000的余数。【样例输入】4【样例输出】7【样例说明】以下是满足条件的序列:4 14 1 14 1 24 24 2 14 34 4【评测用例规模与约定】对于 20% 的评测用例
2020-09-22 22:07:50
339
原创 基于注解的SpringAop事务管理
前置事务:/** * 前置通知 */ //@Before(value = "pt1()") public void beforeprintLog(){ System.out.println("Logger类中的beforepringLog开始记录日志"); }后置事务: /** * 后置通知 */ //@After(value = "pt1()") public void afterprintLog(){
2020-09-21 22:02:26
107
原创 2020蓝桥杯A组模拟题BFS迷宫
传送门这是一道坑点极其多的BFS题,难度倒是还好,就是可能好多细节处理不好就会一直wa心态咋咧,这道题就是在原有bfs的基础上加上一个传送门,传送门大家如果练习过bfs专题的话应该不会陌生吧,但是这题存在多个传送门而且可以互相传送,那么我们就考虑有可能传送到障碍物上或者回到原点形成一个传送环,这种情况就直接退出就好啦,实现对于起点如果是传送门进行处理,还有就是对于传送的时候是不计算路程的,d[nx][ny]=d[ex][ey],但是考虑到传送门的不确定性,我们如果传送到一个之前的走过的位置,假如当前位置的
2020-09-19 14:29:19
175
原创 throw new RuntimeException(e)和e.printStackTrace()区别和理解
1.e.printStackTrace()是打印异常栈信息2.throw new RuntimeException(e)是吧异常包在一个运行时异常中抛出第一句话感觉实际开发意义不大,很少有人会去看控制台打印。。第二种是把异常继续抛出,要么由上层方法解决,要么终止程序进行,应用范围比较广。public Account findAccountByid(Integer id) { try { return runner.query("select * from ac
2020-09-17 23:44:04
2852
原创 上海大学夏季赛(递归模拟题B分子)
题目链接这个题干很好理解就是求一个化学式的相对分子质量,只是这里可能会存在括号的情况,起初我想的就是直接暴力模拟确实可以求解,但是赛后看了一个大佬的代码利用递归写的,刚好我的递归理解的一般所以就拿来学习一下,我们可以将问题转化为两个部分进行求解,括号内部和外部,这样递归的思路就有了,我们将括号内部看成一个整体利用外部的规则对内部进行分子质量的计算,然后在加到整体上面去,这样就可以完成对于全局的求解。看到这里如果大家没理解,我这里直接附上AC的代码分析:#include<bits/stdc++.h&
2020-09-15 17:27:23
79
原创 BFS求最短路径并且输出最小字典序路径
题目链接题目很好理解大家自己去看一下就好,大致思路就是bfs求出路径并且利用数组记录一下路径,b[nx][ny]=b[x][y]+1代表(x,y)是(nx,ny)的前缀,这个技巧很好用,从一个大佬那里学来的(heihei),然后我们需要从终点开始作为bfs的起点,并且记录路径,这样做的目的就是保证了我们记录的路径一定是可以到达终点的路径,然后我们利用dfs从(1,1)开始寻找字典序最小的路径,一次按顺序判断每个点四个方向的下一个点与前一个点的b数组的差值是否为1,满足就直接输出该方向,最后在输出的时候针对
2020-09-14 20:51:09
1401
原创 Mybatis中${}和#{}区别(个人观点)
首先最明显的区别就是对于#{key}取值之后自动看成是字符串类型的,为为此带上单引号,而对于${}取值就是传的啥取出的就是啥。举个例子select * from user u where u.name=#{name}select * from user u where u.name=${name}//这里我们假设name=admin//对于以上二者翻译过来的语句就是1.select * from user u where u.name='admin'2.select * from user u
2020-09-13 22:46:42
157
原创 二维前缀和+二分(牛客小白月赛26)
这里附上题目链接供大家参考:传送门大致题目意思就是给你一个字母矩阵,让你一次对于每个矩阵的定点,求出以该顶点为左上角的最大子方阵,要求就是方阵内部每个字母的总数都不可以超过一个输入值k,对于矩阵范围就是最大500500,name考虑字母一共是26个,如果直接暴力模拟方阵长度肯定超时,那么我们考虑到这个边长一定类似于单调的函数曲线,所以我们可以二分,时间复杂度50050026log(1e9),最大边长就是1e9,所以二分就肯定不会超时,二分确实是个好东西(偷笑哈哈),这里对于每个边界范围内的字母数量我们就
2020-09-07 21:17:49
113
原创 ns3编程文件
#include <iostream>#include <fstream>#include <string>#include <cassert>#include "ns3/core-module.h"#include "ns3/csma-module.h"#include "ns3/network-module.h"#include "ns3/internet-module.h"#include "ns3/point-to-point-mod
2020-06-28 20:17:12
370
原创 树形DP(校赛A题)
这是题目链接:传送门题面很好理解就是给你一颗树,给你每个节点的权值和每条边的权值,让你求出对于所有路径,它的起始节点权值加上边权最大值。这题一看就是树形dp走一波,原谅我以前做的少,唉,没写出来,先来说这样一道题,在这提基础上我们求出所有点权和边权加在一起的结果:这题的dp方程是这样的,我们假设dp[i[表示以i为根节点的树的最大权值和,且包括当前节点啊,那么我们的转移方程就是dp[i[=max(dp[i],dp[i]+dp[next]+w[i][next]),那么大家考虑这题,我们只需要起始节点,那么
2020-06-01 13:43:12
100
原创 树状数组变形题(很巧妙)
题目地址题目意思很好理解大致就是给你n个数,求出n个数连续递增的最长子序列的,并输出下标,如果存在多个输出字典序最小的那个结果。话说这题我本人可能比较菜,最开始想到的竟然是求出最长递增子序列。。然后一看字典序就蒙了,结果无功而返,最后没想出来,最后分析了好多大佬的代码发现了一个树状数组的解法,确实巧妙,让我对树状数组的理解进一步加深,确实高(佩服佩服),这题对于每个数字a[i[数据范围只有1e5,所以可以开个数组进行标记,那么问题来啦,如何利用树状数组来对于比a[i]大的数据进行存储呢,很显然我们是需要对
2020-05-28 21:19:26
124
原创 牛客小白月赛 22 D收集纸片(dfs or 状压dp)
题目大致意思:我们把房间按照笛卡尔坐标系进行建模之后,每个点就有了一个坐标。假设现在房子里有些纸片需要被收集,收集完纸片你还要回归到原来的位置,你需要制定一个策略来使得自己行走的距离最短。你只能沿着 x 轴或 y 轴方向移动,从位置 (i,j) 移动到相邻位置 (i+1,j),(i-1,j),(i,j+1) 或 (i,j-1) 距离增加 1。输入描述:在第一行中给出一个T, 1≤T≤10, 代表测试数据的组数。对于每组输入,在第一行中给出房间大小,第二行给出你的初始位置。接下来给出一个正整数
2020-05-27 21:07:23
191
1
原创 状态压缩DP学习(第一章)
参考了一个博主的文章,他用的是背包问题来讲解的状压dp,我个人感觉讲的很不错,所以就想写一遍文章来浅谈感受和学习总结,算是入门,因为以前一直感觉状压dp很难,一直理解不透,看完这篇文章确实感觉理解的更好啦。背包问题可能大家都不陌生,今天就用背包讲一下状压dp原理,首先dp就要1.先定义状态:那么考虑到n个物品,只有两种状态选与不选,所以二进制数0和1足以表示状态集,因为如果开个n为数组的话,这样对于空间的浪费是很严重的,如果n个都选就是就是 1111…n个1,都不选就是n个0,到这里大家可以看到其实空
2020-05-27 17:35:06
181
原创 第十五届中北大学算法与程序设计竞赛 F题集合操作
这题说实话比赛的时候都没开,赛后一看还不是太难,但是技巧性很强,而且我当真没思路,还是做题少,赛后看了一个大佬的代码,太巧啦真的佩服,自己整理了一下写一下心得。题面很简单:链接:https://ac.nowcoder.com/acm/contest/5188/F来源:牛客网有一个集合S,刚开始是空集,现在有3种操作。1.往集合中添加x,如果集合中已经存在x,则不添加。2.从集合中删除x,如果集合中不存在x,则不删除。3.查询大于等于x且不在集合S中的最小的正整数、这题一看就是卡时间的问题,那
2020-05-24 19:12:25
264
1
原创 牛客小白月赛23 B题
给定一个正整数 p求一个最小的正整数 n,使得 n! 是 p 的倍数 题目看起来很简单也很好理解,但是显然这题数据 p数据范围1<=p<=1e9且T<=1000测试组数,显然一看直接求阶乘对比是不现实的,阶乘的数据范围太大了,所以这题很显然就是一到类似数论的题,显然对于每个数我们都可以将其拆分成n多个因子相乘的格式。例如48=246,我们就可以得到48对应的结果就应该是6,了解完大致原理,直接开始分析题目:1)首选考虑p为素数和1的情况很显然,没有别的因子只有1和本身因而,阶乘只能是本
2020-05-22 13:31:35
131
原创 科大讯飞杯F题:思维模拟 排列计算
https://ac.nowcoder.com/acm/contest/5477/F牛客网的提交地址真的是好久没打了,最近学校有个比赛想去玩玩的,所以提前半个月准备一下,俗话说的好,临阵磨枪不快也光(2333),好了进入正题,这题是一个记录某个点位在区间内出现的次数比如说给你三个区间[1,3],[3,7],[5,6]这时候肯定直接想到暴力,哈哈显然这题数据范围不可以的,稍微转换一下思路,比如说对于区间[5.6]我们就对a[5]++,a[7]–,这个的原因很显然,如果某个区间包含了这个小区间或者是某一部分
2020-05-14 23:10:57
168
原创 Mybatis框架初学时遇到'Unknown initial character set index'255' received from server
显然这是字符集的问题 这种情况一般要检查 程序编码 mysql编码 web服务器编码三种格式是否一致只需要在SqlMapConfig.xml文件里的 JDBC的url参数的后面加上:?useUnicode=true&characterEncoding=utf8就可以解决问题啦...
2020-03-28 11:44:11
181
原创 servlet项目里,通过getParameter方法获取内容是为null的一个原因
就是你在jsp代码的第一行没有加上Encoding=UTF-8这句话导致服务器无法解析你传入的数据,就不会有返回值啦,在这里卡了好久,把方法写出来推荐给大家,大佬勿喷啊...
2020-03-20 20:17:20
1784
原创 jsp内的charset和Encoding的用法和区别
首先 contentType的charset是指服务器发送给客户端的内容编码,contentType = utf-8是指页面的输出方式为utf-8,而Encoding存在的话,那么jsp页面的字符编码方式就会由Encoding决定,否则就会由charset决定的话,那么你就会发现页面的中文为乱码,二者都不存在的话 就默认采用 ISO-8859-1 所以说一般为了不存在问题 就在jsp上面加上这样一...
2020-03-20 20:11:50
353
原创 树形DP简单模板题树上路径计数
这是题目:思路很简单啦,如果你学过树形dp的话,这个就是模板题哈哈,首先我们考虑二维dp数组dp[N][2],dp[i][0]代表以i为i为根节点且路径长度数为偶数的数量,dp[i][1]就是奇数的数量,递推方程就很简单的可以写出来了dp[father][0] += dp[son][1]+1,dp[father][1] += dp[son][0] AC代码:```cpp#incl...
2019-11-25 23:03:12
311
1
原创 KMP算法的经典习题(牛客网小白月赛19F)
这是题目链接,大家可以自己去练习一下:悠悠碧波帕秋莉掌握了一种水属性魔法这种魔法可以净化黑暗帕秋莉发现对于一个黑暗的咒语s,可以使用这个水元素魔法净化它,净化的咒语是一个最长的字符串t,t满足以下条件:它是s的前缀它是s的后缀除前缀和后缀外,它还在s中出现过至少一次既然你都学会了,那么净化的工作就交给你了!转换一下就是求前中后缀的最长公共子串例如tqrwantoacthisp...
2019-11-24 14:31:36
360
1
原创 国庆·牛客day3 H题-千万别用树套树 线段树的题
https://ac.nowcoder.com/acm/contest/1108/H这是题目链接,大致意思就是有两种操作,1就是把线段[l,r]插入集合S,2,[l,r]查询有多少线段[x,y]满足x<=l<=r<=y,这题维护两个树状数组,一个维护左区间,一个维护右区间,最后查询的时候就直接用suml(l)-sumr(r-1),sum(l)是在左区间的点数,sumr(r-1)...
2019-10-04 12:08:39
141
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人