- 博客(65)
- 收藏
- 关注
原创 河南萌新联赛2024第(五)场:信息工程大学
/如果我们已经计算了k-1个中介点,那么加上第k个中介点只能改善路径,或者保持不变,而不会更差。//发现dp[i][j][k]依赖于前面的k的值,例如dp[i][j][k-1],也就是说。//解题思路:两点之间,直线最短,图论Floyd-Warshall算法。//最后通过逐步引入中介点k来计算最优路径。
2024-08-23 11:58:51
325
原创 ST表(区间最值问题)
2.k=向下取整(log2(r-l+1))所以要确保取到正确的区间最值,可以在(l,r)的两头取,取 (l,l+2k) 与 (r-2k+1,r) 区间的最值,这样虽然包含了重复部分,但不会影响结果。2.状态转移方程:st[i][j]=max{st[i][j-1],st[i+(1<<(j-1))][j-1]}对于数组S,划分为两部分(A和B),那么S的最大值取max(A,B)1.st算法(用st表) 状态区间 st[i][j]:按需查找数组从i开始到2^(j-1)最值。
2024-08-23 11:46:02
284
原创 基础Floyd-Warshall算法
如果我们已经计算了k-1个中介点,那么加上第k个中介点只能改善路径,或者保持不变,而不会更差。发现dp[i][j][k]依赖于前面的k的值,例如dp[i][j][k-1],也就是说。1.解题思路:两点之间,直线最短,图论Floyd-Warshall算法。3.最后通过逐步引入中介点k来计算最优路径。
2024-08-20 21:53:43
216
原创 对于C++编程处理大量数据进行时间优化
注意:前提是对于输入大量数据(数据量级达到1e5往上)才需要,时间优化才明显。个人推荐方法一,对于一般编程题情况就够了,但是方法二优化力度更大。方法二:cin>>n;换成 n = read();
2024-08-20 21:51:18
212
原创 线性dp(动态规划一)
1.确定dp数组2.确定递推公式(理解不了再多看看dp数组含义)3.dp数组初始化(是否需要dp[0]=0或者dp[0]=1)4.确定遍历顺序如果求组合数就是外层for循环遍历物品,内层for遍历背包。(无序)如果求排列数就是外层for遍历背包,内层for循环遍历物品。(有序)求装满背包有几种方法,递推公式一般都是dp[i]+=dp[i-nums[j]];5.推导dp数组。
2024-08-15 21:49:59
239
原创 pdf查看密码
pdf有两种密码方式,一种是打开后进入文件内容页面后需要密码才能进行修改等操作,网上有很多方式进行移除密码操作,第二种是打开就需要密码,我这里简单记录一个暴力破解的方式,仅供参考。
2024-08-15 14:12:31
1536
1
原创 河南萌新联赛2024第(四)场
1.发现子区间and和为0规律:大于2或者质数唯一则符合条件的子区间为0,质数大于2的等于sum-2。所以可以发现规律,最大同或一定出现在相邻两个数(二进制下位相同多),同时利用补位异或实现同或的功能。2.首先筛选法求出质数(减少时间复杂度),然后二分法查找质数个数(减少空间复杂度)• 如果两个输入位不同,则输出为0。• 如果两个输入位相同,则输出为1。
2024-08-08 22:28:00
312
原创 同或运算+二进制位数保留
2.对十进制数num保留二进制下前m位:num & ((1u << n) - (1u << (n - m))) (n=32)//int型下32位整数,都会以十进制结果输出。1.对十进制数num保留二进制下后m位:num & ((1 << m) - 1)3.计算同或a,b,联想异或方法: ~(a^b)
2024-08-08 10:39:43
214
原创 河南萌新联赛2024第(三)场:河南大学
3.因此对于n个圆,每个圆的交点数为2(n-1)(即每个圆与其他n-1个圆交点造成的总交点数),圆被分段的总数量为:2(n-1)段,n个圆2n(n-1)段。1.V圆的交点数:任意两个圆最多有2个交点. 对于n个圆,它们之间的交点数量由组合数:C(n,2)=n(n-1)欧拉公式为:V-E+F=2,其中: V:点(交点数) E:边(段数) F:面(区域数,包括外面的一个面)1.利用前缀和 (x→x+y)等价于(1→x+y)-(1→x)即F=2n(n-1)+2-n(n-1)=n*n-n+2。
2024-08-02 22:59:16
330
原创 异或和+博弈论
1.最后状态a1=a2=a3...=an=0,显然a1^a2^a3...^an=02.对ai操作,变成new ai,等价于ai异或一个数字x,使得ai^x=new ai3.因此得出结论:对某一堆石子(ai)的操作实际上等同于对该堆石子的异或4.当前我的状况:a1^a2^a3...^an=0,假设上一步,你的状况a1^a2^a3...^an=k意味着k不为0,我的每一步都会使得你面对一个a1^a2^a3...^an=k,最终使我面对a1^a2^a3...^an^k=k^k=0,所以我将取得胜利。
2024-07-26 21:22:34
237
原创 河南萌新联赛第一场总结
2. 有大家喜欢的零食吗(二分图匈牙利算法)4.两难抉择新编(异或位运算)5.旅途的终点(反悔贪心算法)7.图上计数(贪心找规律)
2024-07-19 17:14:00
252
原创 反悔贪心
基本思想:反悔贪心就是我们维护一个反悔堆,把想要反悔的放到堆中,然后不断贪心,如果发现可以反悔,那就反悔。基于小根堆的优先队列实现反悔贪心。
2024-07-19 17:05:01
222
原创 含空格字符串处理方法总结
通用方法:字符串流 istringstream ss(字符串)+(ss >> )分割。真题练习,用字符串流的方法处理空格情况。getchar() //吸收回车符。读取按单个字符判断的字符串。读取含空格的字符串方法。想要对回车符号单独处理。
2024-07-09 16:36:10
310
原创 数学建模(优化与控制)
约束条件可以是等式约束或不等式约束,不等式约束可以是 小于等于 或 大于等于,分别使用关键字。用来设定决策变量的下界、上界;是用户定义的问题名(用于输出信息)。表示离散变量(用于整数规划问题)、表示求目标函数的最大值。表示连续变量(默认值)、是定义问题的构造函数。是定义决策变量的函数。输出最优解的目标函数值。是用户定义的变量名。输出每个变量的最优值。
2024-06-29 23:19:39
855
原创 基础位运算
3.判断出现1次次数的数 x^0==x,x^x==0,a^b=c则a=b^c,b=a^c。或者直接调用函数(return __builtin_popcount(n);1.判断2的幂 n&(n-1)==0。2.每次减一处理 n&(n-1)
2024-06-29 16:49:36
293
原创 unordered_map算法
是基于红黑树实现的,它会自动按照键的大小进行排序,因此键值对是有序存储的。是基于哈希表实现的,它不保证元素插入的顺序,因为元素是根据哈希值存储的。遍历寻找符合键的元素: s.find(键)!它们之间的区别主要在于底层实现和搜索。,但可能会受到哈希冲突的影响。提供的关联容器,用于存储键。中查找元素的时间复杂度为。中查找元素的时间复杂度为。
2024-06-28 18:49:44
534
原创 祝融传火(试水)
第一个问题:范围问题 因为a[i + h - 1][j]和a[i][j + w - 1],所以数组范围不再是a[1010][1010]第二个问题:扩大范围后,又忘了数组越界这回事了,毕竟数组越界的0也是可能符合题意的数据。一段时间没写代码了,今天试水一道直接寄了。总结:还是得天天练习,不然就寄了。
2024-05-12 18:18:48
229
原创 日期(蓝桥备赛)
一个 8 位数字是回文的,当且仅当对于所有的 i(1≤i≤8) 从左向右数的第 i 个数字和第 9−i 个数字(即从右向左数的第 i 个数字)是相同的。给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个 ABABBABA 型的回文日期各是哪一天。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。现在,牛牛想知道:在他指定的两个日期之间(包含这两个日期本身),有多少个真实存在的日期是回文的。
2024-04-04 18:23:27
958
原创 递归(蓝桥备赛)
给定一个整数 N,请你求出所有分母小于或等于 N,大小在 [0,1]范围内的最简分数,并按从小到大顺序依次输出。例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是: xxxxxx,长度是6。每个分数占一行,格式为 a/b,其中 a 为分子, b为分母。小明想求出这个正则表达式能接受的最长字符串的长度。输出所给正则表达式能接受的最长字符串的长度。按照从小到大的顺序,输出所有满足条件的分数。只由 x ( ) | 组成的正则表达式。一个由x()|组成的正则表达式。共一行,包含一个整数 N。
2024-03-31 21:57:53
253
原创 dfs (蓝桥备赛)
排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r≤n),我们可以简单地将n个元素理解为自然数1,2,…请编写一段程序,给定n×m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。���×���的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。所有的组合,每一个组合占一行且其中的元素按由小到大的顺序排列,每个元素占三个字符的位置,所有的组合也按字典顺序。
2024-03-27 18:16:51
1123
原创 二分(蓝桥备赛)
共有 m 份订单,每份订单用三个正整数描述,分别为 dj,sj,tj,表示某租借者需要从第 sj 天到第 tj 天租借教室(包括第 sj天和第 tj天),每天需要租借 dj 个教室。这个炉子有一个称作转换率的属性 V,V 是一个正整数,这意味着消耗 V 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V 时,无法继续冶炼。有一根长度为 len 的横向的管道,该管道按照单位长度分为 len 段,每一段的中央有一个可开关的阀门和一个检测水流的传感器。
2024-03-27 17:59:45
562
原创 问题
静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,占动态存储空间,函数调用结束后即释放。全局变量全部存储在静态存储区。在程序开始执行过程中给全局变量分配空间,程序执行完毕就释放空间。程序执行过程中固定的分配空间,而不需要动态进行分配是释放。数组放在main函数里面,表示该数组是局部变量,不是全局变量,所以该数组是开在栈上,而栈的空间往往比较小,所以二维数组定义太大会导致爆栈。解决方法:局部变量变为全局变量。
2024-03-03 22:14:29
194
期末九天从入门到精通操作数据库(mysql)
2024-08-23
基于python对红楼梦文本进行可视化分析
2024-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人