- 博客(26)
- 问答 (1)
- 收藏
- 关注
原创 各种筛子
埃筛从 2~n 默认全为素数,开始枚举。枚举判定是否为素数。如果是,就将它的所有倍数判定为合数。如果不是,直接跳过。#include<cstdio>const int N = 100000 + 5;bool prime[N];void init(){ for(int i = 2; i < N; i ++) prime[i] = true; for(i...
2019-04-11 13:09:50 185
原创 图的遍历——拓扑排序
背景知识拓扑排序就是对有向无环图,将所有顶点排成一个线性序列,该序列满足:如果图里有边&lt;u,v&gt;&lt;u,v&gt;<u,v>,那么在该序列里,u一定要在v前面算法思想找到入度为0的点(有向无环图中必定存在!),挨个输出(可能不止一个)删除这些入度为0的点,并且删除以这些点为起点的边这样又会出现新的一波入度为0点,输出!然后...
2018-11-10 17:51:33 446
原创 图的储存——链式前向星
刚刚学了前向星,现在再学一下链式前向星。链式前向星链式前向星是邻接表的静态建表储存图的方式。采用 数组模拟链表 的方式实现邻接表。基本思路记录下一个节点在数组的哪一个位置head数组描述点 viv_ivi 边信息的链的起点在 Edges 数组的位置构造链式前向星就是将新加入的节点,链在对应链的最开始的,并修改head数组对应位置的值代码实现声明int head[n...
2018-11-10 16:10:23 189
原创 图的储存——前向星
前向星 前向星是一种通过储存边信息的方式储存图的结构。基本方法读入每条边的信息(起点、终点、权值)存放在数组里按照起点排序通常会有一个head数组,记录每个起点上的第一条边代码实现声明struct node{ int from,to,w;} edge[maxn];排序函数 if(a.from==b.from){ if(a.to==b.to) ...
2018-11-10 14:40:25 755
原创 POJ-1845-Sumdiv(质因数分解+分治求等比数列和)
首先,对 b=1 的情况进行考虑:A 的约数,可以看成对其质因数分解(假设为m)后,从中取 n 个质因数(每个质因数取的个数不能超过A中有的)相乘。于是这道题我们也是一样的做法。 的约数就是从A的m个质因数里,取n个(其中,每个质因数取的个数,不超过 A中有的和B的乘积)根据乘法分配律,可以得到:1.对 A 质因数分解(试除法+筛法)2.分治以某一个质因数p为公比,B*...
2018-10-27 00:26:37 501
转载 正则表达式入门
基本模式举例:如果我们想要找到字符串The dog chased the cat中单词 the,我们可以使用下面的正则表达式: /the/gi我们可以把这个正则表达式分成几段:/ 是这个正则表达式的头部the 是我们想要匹配的模式/ 是这个正则表达式的尾部g 代表着 global(全局),意味着返回所有的匹配而不仅仅是第一个。i 代表着忽略大小写,意思是当我们寻找匹配的...
2018-10-09 21:39:23 139
原创 jQuery
在开始学习使用jQuery之前,我们需要加一些代码到HTML文件中。<script> $(document).ready(function(){});</script>在没有document ready function以前,你的代码会在HTML没有渲染完成就执行,这样会产生bug。现在让我们开始写第一个jQuery语句,所有jQuery方法都是由$开始...
2018-10-06 23:48:07 164
原创 Bootstrap 和 Font Awesome
你仅需要通过添加下列代码到你的HTML开头来将Bootstrap添加到任意应用中:<link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.1/css/bootstrap.min.css"/>首先,我们需要把所有的HTML内容放在class为container-fluid的div下。而图片,如果过大,不适应屏...
2018-10-06 00:41:49 490
原创 分治算法
参考资料:icpc暑期课基本概念把一个任务,分成形式和原任务相同,但规模更小的 几个部分任务(通常是两个部分),分别完成,或只 需要选一部完成。然后再处理完成后的这一个或几个 部分的结果,实现整个任务的完成。典型应用——归并排序基本思想:数组排序任务可以如下完成:1) 把前一半排序2) 把后一半排序3) 把两半归并到一个新的有序数组,然后再拷贝回 原数组,排序完...
2018-08-17 17:51:41 490 1
原创 POJ-2373 Dividing the Path 动态规划+优先队列
参考资料:icpc暑期课题意:N 头牛在长为 L 的线段上吃草(???),每头牛活动范围(S,E),不同奶牛活动范围可以有重叠。现在需要安装喷水头,喷水头可调节,调节范围 [ A,B ],要求:线段上每个整点都恰好位于一个喷水头喷洒范围,每头奶牛的活动范围都要在一个喷水头喷洒范围内,任何喷水头喷水范围不可超过线段两端。现在求解最少安装几个喷头。 问题分析:1. 从起点往终点安装喷水...
2018-08-16 20:59:33 422
原创 JavaScript 学习记录(二)
字符串1.可以通过内置属性 length 来获取长度。2.字符串可以通过字符创建(如:var firstName = "John"),也可以通过对象来创建(如: var firstName = new String("John"))。(不过尽量不要创建 String 对象,因为会拖慢速度,或产生其他副作用(先不管他好了))3. === 为绝对相等(值相等,对象类型也得相等),如上述 2...
2018-08-16 11:48:50 235
原创 JavaScript学习记录(一)
一些小操作 · 前瞻1.直接写入html输出流使用语句document.write("……"),样例如下:(只能在输出流中使用,如果已经加载了文档,会覆盖)<script>document.write("<h1>这是一个标题</h1>");document.write("<p>这是一个段落。</p>&q
2018-08-15 11:17:58 259
原创 快速幂和矩阵快速幂
快速幂快速幂原理:就是把指数转化成二进制,并进行分解。(参考资料:https://www.cnblogs.com/CXCXCXC/p/4641812.html)举例:算法原理其实和所想的那样大同小异,都是利用a的n次方等于n个a相乘。int poww(int a, int b) { int ans = 1, base = a; while (b) { ...
2018-08-14 16:14:53 109
原创 二叉树的基础操作
二叉树定义在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。一棵深度为k,且有个节点的二叉树,称为满二叉树。这种树的特点是每一层上的节点数都是最大节点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续...
2018-08-11 12:01:47 140
原创 动态规划入门学习
求最长上升子序列的长度思路:dp数组的含义:dp[n]的代表以n结尾的最长子序列的长度。很容易想到,对于每一个元素来说,只要取所有它之前的元素里比它小的元素的dp值中最大的+1,即可。当然,还需要找出最大的那个。其实,扫元素,dp,找元素,可以放在一个循环里。状态转移方程:dp[i]=max(dp[j]+1,dp[i]) //j<i求最长公共子...
2018-08-07 20:06:45 119
原创 线段树入门学习
参考资料:https://blog.csdn.net/zearot/article/details/52280189线段树,其实就是把区间分割成点。利用二分的思想,对将一段区间划分成区间长度个点,对单点操作(可以区间修改,还没学到),逐步上溯,从而达到“从上而下分解,从下而上计算”的目的。入门的线段树主要流程如下: ...
2018-08-06 20:34:38 155
原创 关于递归
递归的经典题目就是汉诺塔问题,从2个金片的转移,到n个金片(将上面n-1个看成是一个,相当于2个的情况) 另外,SDUTOJ上3479-青蛙过河问题,大概就是类似汉诺塔,两岸都是一个柱子,必须遵循汉诺塔规则,河里s个柱子和y片荷叶。不过s个柱子上是汉诺塔的柱子,但是y片荷叶上只能有站一个青蛙,并且出左岸不能回去,进右岸也不能回来,可以左岸直接跳到右岸,求能过去的最大青蛙数。其实归根到底,求...
2018-08-05 09:53:30 153
原创 SDUT-2484 算数表达式的转换
题意:给定表达式,输出前缀,中缀,后缀表达式思路:可以利用表达式树的前序,中序,后序遍历,也可以利用栈进行操作。栈的思路解析:前缀:我们按照运算符优先级来操作,优先级小的就直接输出,优先级大的碰到更大的或者0.需要两个栈,一个是输出栈,一个是暂存栈,我们对得到的表达式字符串进行逆序枚举1.如果当前字符是操作符,直接入输出栈2.若当前运算符的优先级低于暂存栈顶运算...
2018-08-02 10:18:23 246 2
原创 最小生成树(Kruskal、Prim)
Kruskal算法思想:利用并查集,进行加边操作(每次选择最小权边,直至构成一个生成树)步骤:(1)排序:由小到大对边按权值进行排序(2)当边的数量少于n-1时,重复以下操作:选择最小权边,如果假如这条权边并不构成回路,那么添加它,否则不添加它代码模板:const int MAXN=110;//最大点数 const int MAXM=10000;//最大边数 in...
2018-07-31 16:05:20 260
原创 紫书——STL初步例题思路总结
UVa 10474题意:给上面写有非负整数的大理石排序并查找指定的大理石位置思路:扫入数组,用sort排序,查找(可以用“返回大于或等于x的第一个位置”的lower_bound函数)即可UVa 101题意:输入n,得到编号为0~n-1的木块,分别摆放在顺序排列编号为0~n-1的位置。现对这些木块进行操作,操作分为四种。1、move a onto b:把木块a、b上的木块放...
2018-07-28 10:31:57 156
原创 HDU-2717 Catch That Cow BFS
参考资料:https://blog.csdn.net/freezhanacmore/article/details/8168265题意:John在一根数轴上抓牛,1分钟内有两种移动方式:一个是进(退)1个单位长度,另一个是当前坐标翻倍,给定牛的坐标,和John的起始坐标,求解抓到牛的时间。BFS基本思想:1.工具:队列,数组(作访问标记)2.首先入队一个起点,打上访问标记。...
2018-07-21 15:19:17 186
原创 一些数学小结论(可能会更新)
1.错排公式来源:当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数D(n)推导:第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;第二步,放编号为k的元素,这时有两种情况:(1)把它放到位置n,那么,剩下n-2个元素(第n个和第k个已经放好啦),就有D(n-2)种方法(2)不把它放到位置n,这时,对于这n-1个元素(只有第n个是放好的),有...
2018-07-17 17:39:16 385
原创 POJ-3264 Balanced Lineup RMQ算法
参考资料:https://blog.csdn.net/niushuai666/article/details/6624672题意:给定n头牛和q个区间,以及每头牛的身高,求每个给定区间内最高的牛和最矮的牛高度的差值。RMQ算法:RMQ(Range Minimum/Maximum Query),也就是区间最值查询。RMQ的主要思想:1.预处理,利用动态规划,理解状态转移方程。...
2018-07-16 16:44:36 218
原创 01背包问题刷题总结
参考资料:https://blog.csdn.net/qq_37702890/article/details/8003728901背包原型:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是v[i]。求将哪些物品装入背包可使价值总和最大。核心代码:for(int i=0;i<N;i++) //枚举物品 for(int j=V;j>=c[i];j--) /...
2018-07-15 11:48:20 438
原创 HDU-2159 FATE 完全背包
参考资料:https://blog.csdn.net/chen_ze_hua/article/details/51669239题意:升级还需n点经验值,还有m点忍耐度,杀一个怪会得到相应的经验,并减掉相应的忍耐度。当忍耐度降到0或者0以下时,最多只杀s只怪。能升级,输出最大剩余耐久。不能升级,输出-1。完全背包概述:有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的体积是c,价值...
2018-07-13 17:11:17 136
原创 HDU-2955 Robberies 小数背包
参考资料:https://blog.csdn.net/flynn_curry/article/details/50950787这里可以转化为0/1背包问题。要点:1.概率给的是被抓概率,需要转化为不被抓的概率。(用1-p[i])2.背包容量不能是概率(小数),背包容量应该为钱数总和。3.限制条件之间关系为相乘关系(概率的原理)整体思路:1.输入数据,并进行转换。2.利用 钱数总和 作背包容量,利用...
2018-07-13 09:35:34 203
空空如也
Xcode c++ 使用cin或者scanf第一行输入的数字或者字符串不会实时显示
2019-04-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人