08 2019 档案

摘要:Power Network "POJ 1459" 这题值得思索的就是特殊的输入,如何输入一连串字符。这里采用的方法是根据输入已知的输入格式,事先预定好要接受的数据类型。 这里套用的板子也是最大流的模板,但是虽然可以ac但是时间有点卡,所以如果可以的话还是使用高级的算法。 include includ 阅读全文
posted @ 2019-08-31 17:20 Garrett_Wale 阅读(136) 评论(0) 推荐(0) 编辑
摘要:Minimum Cost "POJ 2516" 题意就是有n个商家,有m个供货商,然后有k种商品,题目求的是满足商家的最小花费供货方式。 对于每个种类的商品k,建立一个超级源点和一个超级汇点。每个商家和源点连线,容量为需要的商品数,每个供货商和汇点连线,容量为可以提供的商品数。 然后对于商家和供货商 阅读全文
posted @ 2019-08-31 11:12 Garrett_Wale 阅读(188) 评论(0) 推荐(0) 编辑
摘要:Going Home "POJ 2195" 这题使用的是最小费用流的模板。 建模的时候我的方法出现错误,导致出现WA,根据网上的建图方法没错。 这里的建图方法是每次到相邻点的最大容量为INF,而花费为1,因为花费等于距离。但是需要增加一个源点和一个汇点,然后将每个人和源点相连,每个房子和汇点相连,容 阅读全文
posted @ 2019-08-31 09:46 Garrett_Wale 阅读(226) 评论(0) 推荐(0) 编辑
摘要:A Plug for UNIX "POJ 1087" 这一题也是最大流的应用,但是题目有点绕。 题目的意思就是有插座和插头,只不过这里使用设备取代了插头。只有插座和设备进行匹配了。 题目要注意的是那个适配器的问题,适配器给出的是 A,B 的模式,但是这里并不是指A可以取代B而是指B可以取代A,所以建 阅读全文
posted @ 2019-08-30 19:27 Garrett_Wale 阅读(401) 评论(0) 推荐(0) 编辑
摘要:Dining "POJ 3281" 这道题目其实也是网络流中求解最大流的一道模板题。 只要建模出来以后直接套用模板就行了。这里的建模还需要考虑题目的要求:一种食物只能给一只牛。 所以这里可以将牛拆成两个点,一个点和食物匹配,另一个点和饮料匹配。另外增加一个源点和一个汇点。最后根据题目的输入来连边就可 阅读全文
posted @ 2019-08-30 18:43 Garrett_Wale 阅读(139) 评论(0) 推荐(0) 编辑
摘要:ACM Computer Factory "POJ 3436" 题目就是一个工厂n个加工机器,每个机器有一个效率w,q个材料入口,q个材料出口,每个口有三个数表示状态,1表示一定有入/出的材料,0表示没有入/出的材料,2表示可能有入的材料。如果一个机器入口全是0,代表这是起始机器,如果一个机器出口全 阅读全文
posted @ 2019-08-30 17:06 Garrett_Wale 阅读(646) 评论(0) 推荐(0) 编辑
摘要:斐波那契数列 "推荐一篇博文分享的时间复杂度分析" 阅读全文
posted @ 2019-08-30 09:39 Garrett_Wale 阅读(273) 评论(0) 推荐(0) 编辑
摘要:消息传递口 "201903 4" 本题主要是利用队列进行模拟,因为一开始我没有注意到要按照顺序,所以一开始的解法错误。 include include include include include include include using namespace std; const int max 阅读全文
posted @ 2019-08-29 18:53 Garrett_Wale 阅读(207) 评论(0) 推荐(0) 编辑
摘要:数据中心 "201812 4" 这里就是最小生成树的应用 include include include include include using namespace std; const int maxn=50004; const int maxm=100005; int n,m,root; s 阅读全文
posted @ 2019-08-29 16:46 Garrett_Wale 阅读(252) 评论(0) 推荐(0) 编辑
摘要:201809 4 "再卖菜" 我使用的是爆搜解决,只得了60分。 "记忆化搜索" "差分约束" include include include include include using namespace std; int n; int a[303]; int b[303]; bool flag= 阅读全文
posted @ 2019-08-29 11:50 Garrett_Wale 阅读(226) 评论(0) 推荐(0) 编辑
摘要:201803 4 "棋局评估" 这题主要使用对抗搜索,也就是每一步寻找可以下棋的位置,通过在这一步下棋看最后会取的什么样的分数。 include include include include include using namespace std; const int INF=0x3f3f3f3f 阅读全文
posted @ 2019-08-29 10:42 Garrett_Wale 阅读(247) 评论(0) 推荐(0) 编辑
摘要:Qin Shi Huang's National Road System "HDOJ 4081" 本题考查的是次小生成树的问题,这里的解决方法就是先使用Prim算法求解最小生成树。 在求解最小生成树的时候通过一个数组记录每一对顶点之间的路径上长度最长的一条边。这个由一个cost数组记录。 最后,再依 阅读全文
posted @ 2019-08-28 15:13 Garrett_Wale 阅读(147) 评论(0) 推荐(0) 编辑
摘要:DBVT 在bullet 引擎中是很基础且重要的一个数据结构,本质上是一个可以动态更新的AABB树。 ##碰撞响应的分析 ###约束分类:可积约束,不可积约束 ,摩擦力(见[1]第四章) 整个bullet在动力学方面的核心就是btSequentialImpulseConstraintSolver 这 阅读全文
posted @ 2019-08-25 20:04 Garrett_Wale 阅读(706) 评论(0) 推荐(0) 编辑
摘要:Building a Space Station "POJ 2031" 注意,这里的输出需要是%f型而不是%lf型的,否则wa. include include include include include include include using namespace std; const in 阅读全文
posted @ 2019-08-25 16:29 Garrett_Wale 阅读(226) 评论(0) 推荐(0) 编辑
摘要:食物链 "POJ 1182" 一个很好的分析博客:https://blog.csdn.net/niushuai666/article/details/6981689 三种关系:两者同类,吃父节点,被父节点吃,所以权值可以用0,1,2表示 include include include include 阅读全文
posted @ 2019-08-25 08:58 Garrett_Wale 阅读(107) 评论(0) 推荐(0) 编辑
摘要:How many answers wrong "HDOJ 3038" 一个很好的博客:https://www.cnblogs.com/liyinggang/p/5327055.html include include include include include include using nam 阅读全文
posted @ 2019-08-24 21:13 Garrett_Wale 阅读(96) 评论(0) 推荐(0) 编辑
摘要:How many tables "HDOJ 1213" include include include include include include include include using namespace std; const int maxn=1004; int n,m; int set 阅读全文
posted @ 2019-08-24 20:10 Garrett_Wale 阅读(106) 评论(0) 推荐(0) 编辑
摘要:The Suspects "POJ 1611" 这题就是并查集的简单应用 include include include include include include include include using namespace std; const int maxn=30004; int n, 阅读全文
posted @ 2019-08-24 20:03 Garrett_Wale 阅读(180) 评论(0) 推荐(0) 编辑
摘要:Wireless NetWork "POJ 2236" 需要注意这里的树的深度需要初始化为0。 而且,find函数需要使用路径压缩,这里的unint合并函数也使用了优化(用一开始简单的合并过不了)。 include include include include include include us 阅读全文
posted @ 2019-08-24 19:37 Garrett_Wale 阅读(113) 评论(0) 推荐(0) 编辑
摘要:Subway "POJ 2502" 这里除了直接相连的地铁站,其他图上所有的点都要连线,这里是走路的速度。 记住最后的结果需要四舍五入,否则出错。 include include include include include include include include include usin 阅读全文
posted @ 2019-08-24 16:58 Garrett_Wale 阅读(158) 评论(0) 推荐(0) 编辑
摘要:Candies "POJ 3159" 这里是图论的一个应用,也就是差分约束。通过差分约束变换出一个图,再使用Dijikstra算法的链表优化形式而不是vector形式(否则超时)。 阅读全文
posted @ 2019-08-24 15:43 Garrett_Wale 阅读(200) 评论(0) 推荐(0) 编辑
摘要:Invitation Cards "POJ 1511" 从这道题我还是发现了很多的问题,首先就是快速输入输出,这里的ios:: 这一行必须先放在main函数第一行,也就是输入最开始的前面,否则系统疯狂报WA。 其次就是,ios的位置没有错之后又疯狂地报TLE,就是超时了,这个问题要不就是算法的复杂度 阅读全文
posted @ 2019-08-24 11:30 Garrett_Wale 阅读(198) 评论(0) 推荐(1) 编辑
摘要:Arbitrage "poj 2240" include include include include include include include using namespace std; mapma; int n; int m; float graph[32][32]; float d[32 阅读全文
posted @ 2019-08-23 19:38 Garrett_Wale 阅读(125) 评论(0) 推荐(0) 编辑
摘要:317号子任务 "201903 5" 为了过前60分,想使用dijikstra优化算法的,但是最后还是只过了35分。这里的思路只需要先将所有的行星据点进行一次dijikstra,分别存储所有点到行星的最短距离,最后使用一个优先队列存储所有的距离就可以了。 include include includ 阅读全文
posted @ 2019-08-23 11:20 Garrett_Wale 阅读(423) 评论(0) 推荐(0) 编辑
摘要:Rikka With Coin "HDOJ 6685" 主要的思想如下: 首先10元的硬币最多只会用一个,如果用了两个,直接替换成一个10元、一个20元一定不亏。 20元的硬币最多只会用三个,如果用了四个,直接替换成一个10元、两个20元、一个50元一定不亏。 50元的硬币最多只会用一个,如果用了两 阅读全文
posted @ 2019-08-22 21:32 Garrett_Wale 阅读(121) 评论(0) 推荐(0) 编辑
摘要:Rikka With Cake "HDOJ 6681" 1. 最终的答案为射线的交点数加一。当然,我们也可以证明。证明需要用到欧拉公式 V−E+F=2 V E+F=2V−E+F=2 。设射线的交点共 c cc 个。则在这个图中,V=K+4+K+c=2K+c+4 V=K+4+K+c=2K+c+4V=K 阅读全文
posted @ 2019-08-22 20:32 Garrett_Wale 阅读(121) 评论(0) 推荐(0) 编辑
摘要:Stay Real "HDOJ 6645" 由小根堆的性质可以知道,当前最大的值就在叶节点上面,所以只需要排序后依次取就可以了。 include include include include include using namespace std; int n; long long heap[10 阅读全文
posted @ 2019-08-20 09:20 Garrett_Wale 阅读(88) 评论(0) 推荐(0) 编辑
摘要:TDL "HDOJ 6641" 1. 关于题意,就是要找出符合f的第m大的数,而且后面还要满足异或等式。 2. 通过观察题目,可以发现n太大了,所以不能直接枚举。当然因为m比较小,所以可以转换思路k^n,这个数最大不超过1000. 3. 因为枚举了k^n就可以通过枚举的数求出n(也是用异或运算),接 阅读全文
posted @ 2019-08-19 09:32 Garrett_Wale 阅读(143) 评论(0) 推荐(0) 编辑
摘要:quailty and ccpc "hdoj 6666" 题目很简单,按照题目的意思模拟就行了,排序。 include include include include include using namespace std; struct node{ string name; int num; in 阅读全文
posted @ 2019-08-18 20:19 Garrett_Wale 阅读(120) 评论(0) 推荐(0) 编辑
摘要:Bi shoes and Phi shoe "LightOJ 1370" 题目的含义含简单,就是先筛欧拉函数,打表,最后遍历就行了。 本题根据欧拉函数的特质还有一个不需要使用欧拉函数的方法,直接筛素数就行了。 "另一种方法" include include include include using 阅读全文
posted @ 2019-08-17 19:19 Garrett_Wale 阅读(116) 评论(0) 推荐(0) 编辑
摘要:Calabash and Landlord "HDOJ 6665" 这里考察的是离散化的知识。 ~~首先将所有的x坐标和y坐标放入两个数组中,然后对这两个数组进行排序。因为总共的坐标数就5个所以这两个数组的大小只需要5就可以了(从1开始)。~~ 然后利用lower_bound函数查找每一个点的横纵坐 阅读全文
posted @ 2019-08-16 11:35 Garrett_Wale 阅读(152) 评论(0) 推荐(0) 编辑
摘要:一: 关于能量守恒 出射光线的能量永远不能超过入射光线的能量(发光面除外)。如图示我们可以看到,随着粗糙度的上升镜面反射区域的会增加,但是镜面反射的亮度却会下降。如果不管反射轮廓的大小而让每个像素的镜面反射强度(Specular Intensity)都一样的话,那么粗糙的平面就会放射出过多的能量,而 阅读全文
posted @ 2019-08-15 11:01 Garrett_Wale 阅读(1441) 评论(0) 推荐(0) 编辑
摘要:Kejin Player "HDOJ 6656" 设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f[2]....f[i] ,那么从 l 升级到 r 阅读全文
posted @ 2019-08-14 17:12 Garrett_Wale 阅读(117) 评论(0) 推荐(0) 编辑
摘要:Final Exam "HDOJ 6651" 1. 这里主要考察我们的思维能力,要想自己至少可以通过k道题目,那么可以从老师的角度出发:怎么才能尽可能让你每一道题目都不通过,但是分数却是固定的。 2. 假设我们每道题目复习x分钟,要想让你这道题不过,则分数应该最小为x,那么你这道题就过不了。 3. 阅读全文
posted @ 2019-08-14 15:54 Garrett_Wale 阅读(101) 评论(0) 推荐(0) 编辑
摘要:一: 简介 一般来说,当存储在帧缓冲(Framebuffer)中时,亮度和颜色的值是默认被限制在0.0到1.0之间的。 但是如果我们遇上了一个特定的区域,其中有多个亮光源使这些数值总和超过了1.0,又会发生什么呢?答案是这些片段中超过1.0的亮度或者颜色值会被约束在1.0,从而导致场景混成一片,难以 阅读全文
posted @ 2019-08-14 10:49 Garrett_Wale 阅读(1976) 评论(0) 推荐(0) 编辑
摘要:一: 泛光 明亮的光源和区域经常很难向观察者表达出来,因为监视器的亮度范围是有限的。一种区分明亮光源的方式是使它们在监视器上发出光芒,光源的的光芒向四周发散。这样观察者就会产生光源或亮区的确是强光区。 光晕效果可以使用一个后处理特效泛光来实现。泛光使所有明亮区域产生光晕效果。 泛光可以极大提升场景中 阅读全文
posted @ 2019-08-13 21:29 Garrett_Wale 阅读(516) 评论(0) 推荐(0) 编辑
摘要:一:法线贴图(凹凸贴图)介绍 我们的场景中已经充满了多边形物体,其中每个都可能由成百上千平坦的三角形组成。我们以向三角形上附加纹理的方式来增加额外细节,提升真实感,隐藏多边形几何体是由无数三角形组成的事实。纹理确有助益,然而当你近看它们时,这个事实便隐藏不住了。现实中的物体表面并非是平坦的,而是表现 阅读全文
posted @ 2019-08-13 18:01 Garrett_Wale 阅读(511) 评论(0) 推荐(0) 编辑
摘要:这里涉及到较高级的话题,难度也更高 一: 帧缓冲 用于写入颜色值的颜色缓冲、用于写入深度信息的深度缓冲和允许我们根据一些条件丢弃特定片段的模板缓冲。这些缓冲结合起来叫做帧缓冲(Framebuffer),它被储存在内存中。OpenGL允许我们定义我们自己的帧缓冲 我们目前所做的所有操作都是在默认帧缓冲 阅读全文
posted @ 2019-08-13 10:51 Garrett_Wale 阅读(456) 评论(0) 推荐(0) 编辑
摘要:一: 模板测试 当片段着色器处理完一个片段之后,模板测试(Stencil Test)会开始执行,和深度测试一样,它也可能会丢弃片段。接下来,被保留的片段会进入深度测试,它可能会丢弃更多的片段。模板测试是根据又一个缓冲来进行的,它叫做模板缓冲(Stencil Buffer)。 一个模板缓冲中,(通常) 阅读全文
posted @ 2019-08-13 10:19 Garrett_Wale 阅读(650) 评论(0) 推荐(0) 编辑
摘要:一: 深度测试 深度缓冲(Depth Buffer)来防止被阻挡的面渲染到其它面的前面。 深度缓冲就像颜色缓冲(Color Buffer)(储存所有的片段颜色:视觉输出)一样,在每个片段中储存了信息,并且(通常)和颜色缓冲有着一样的宽度和高度。深度缓冲是由窗口系统自动创建的,它会以16、24或32位 阅读全文
posted @ 2019-08-13 08:17 Garrett_Wale 阅读(1463) 评论(0) 推荐(0) 编辑
摘要:一: 阴影映射 阴影是光线被阻挡的结果;当一个光源的光线由于其他物体的阻挡不能够达到一个物体的表面的时候,那么这个物体就在阴影中了。阴影能够使场景看起来真实得多,并且可以让观察者获得物体之间的空间位置关系。 阴影还是比较不好实现的,因为当前实时渲染领域还没找到一种完美的阴影算法。 阴影贴图(shad 阅读全文
posted @ 2019-08-12 19:42 Garrett_Wale 阅读(1607) 评论(0) 推荐(0) 编辑
摘要:一: 什么是Blinn-Phong模型 在Phong模型中:在镜面高光区域的边缘出现了一道很明显的断层。出现这个问题的原因是观察向量和反射向量间的夹角不能大于90度。如果点积的结果为负数,镜面光分量会变为0.0。 当考虑漫反射光的时候,如果法线和光源夹角大于90度,光源会处于被照表面的下方,这个时候 阅读全文
posted @ 2019-08-12 18:56 Garrett_Wale 阅读(1407) 评论(0) 推荐(0) 编辑
摘要:一:啥叫贴图 上一节中,我们将整个物体的材质定义为一个整体,但现实世界中的物体通常并不只包含有一种材质,而是由多种材质所组成。 拓展之前的系统,引入漫反射和镜面光贴图(Map)。这允许我们对物体的漫反射分量(以及间接地对环境光分量,它们几乎总是一样的)和镜面光分量有着更精确的控制。 二: 漫反射贴图 阅读全文
posted @ 2019-08-12 12:04 Garrett_Wale 阅读(646) 评论(0) 推荐(0) 编辑
摘要:一: 啥叫材质: 在现实世界里,每个物体会对光产生不同的反应。每个物体对镜面高光也有不同的反应。有些物体反射光的时候不会有太多的散射(Scatter),因而产生一个较小的高光点,而有些物体则会散射很多,产生一个有着更大半径的高光点。 如果我们想要在OpenGL中模拟多种类型的物体,我们必须为每个物体 阅读全文
posted @ 2019-08-12 11:05 Garrett_Wale 阅读(322) 评论(0) 推荐(0) 编辑
摘要:一: 环境光照(Ambient Lighting) 即使在黑暗的情况下,世界上通常也仍然有一些光亮(月亮、远处的光),所以物体几乎永远不会是完全黑暗的。为了模拟这个,我们会使用一个环境光照常量,它永远会给物体一些颜色。 我们使用一个很小的常量(光照)颜色,添加到物体片段的最终颜色中,这样子的话即便场 阅读全文
posted @ 2019-08-12 09:20 Garrett_Wale 阅读(284) 评论(0) 推荐(0) 编辑
摘要:一: 颜色 我们在现实生活中看到某一物体的颜色并不是这个物体真正拥有的颜色,而是它所反射的(Reflected)颜色。 那些不能被物体所吸收(Absorb)的颜色(被拒绝的颜色)就是我们能够感知到的物体的颜色。 白色的阳光实际上是所有可见颜色的集合,物体吸收了其中的大部分颜色。它仅反射了代表物体颜色 阅读全文
posted @ 2019-08-11 22:05 Garrett_Wale 阅读(253) 评论(0) 推荐(0) 编辑
摘要:一: 基本认知: 关于模型加载库:Assimp 1.1 Scene下的mMeshes数组储存了真正的Mesh对象,节点中的mMeshes数组保存的只是场景中网格数组的索引。 1.2 一个**Mesh(网格)**对象本身包含了渲染所需要的所有相关数据,像是顶点位置、法向量、纹理坐标、面(Face)和物 阅读全文
posted @ 2019-08-11 21:57 Garrett_Wale 阅读(600) 评论(0) 推荐(0) 编辑
摘要:一: 摄像机 OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动。 以摄像机的视角作为场景原点时场景中所有的顶点坐标:观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。 要定义 阅读全文
posted @ 2019-08-11 20:36 Garrett_Wale 阅读(3632) 评论(0) 推荐(0) 编辑
摘要:一: 关于几个坐标系统的概括 局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标。 下一步是将局部坐标变换为世界空间坐标,世界空间坐标是处于一个更大的空间范围的。这些坐标相对于世界的全局原点,它们会和其它物体一起相对于世界的原点进行摆放。 接下来我们将世界坐标变换为观察空间坐标,使得每个坐标都是 阅读全文
posted @ 2019-08-11 17:23 Garrett_Wale 阅读(557) 评论(0) 推荐(0) 编辑
摘要:零: 首先我觉得需要提出来的是,为什么在OpenGL中uv坐标的范围始终是0-1呢,而不是实际图形的二维坐标。 纹理元素在表示纹理的数组中的二维下标(即它在位图中的二维坐标)称为纹理坐标,一般以字母表示为(u,v),也称为实际纹理坐标。假设位图的宽、高分别为w、h,显然,0 ≤ u ≤ w,0 ≤ 阅读全文
posted @ 2019-08-11 17:00 Garrett_Wale 阅读(637) 评论(0) 推荐(0) 编辑
摘要:一: 着色器 着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出。 在最简配置下,至少都得有两个着色器:一个叫顶点着色器(vertex shader),它将作用于每个顶点上;另一个叫片段着色器(fragment shad 阅读全文
posted @ 2019-08-11 16:18 Garrett_Wale 阅读(8454) 评论(0) 推荐(1) 编辑
摘要:#你好,三角形 一: 关于坐标的问题 标准化设备坐标:输入的顶点数据就应该在标准化设备坐标范围里面即:x,y,z的值都在(-1-1)之间。在这个区间之外的坐标都会被丢弃。 1.1一旦顶点数据传入顶点着色器中,那它们一定全都是标准化设备坐标了。 1.2标准化设备坐标符合右手定则,即原点在屏幕中心。 屏 阅读全文
posted @ 2019-08-11 14:58 Garrett_Wale 阅读(781) 评论(0) 推荐(0) 编辑
摘要:病毒侵袭持续中 "HDOJ 3065" 第一个需要注意的是树节点的个数也就是tree的第一维需要的空间是多少:模板串的个数 最长模板串的长度 一开始我的答案总时WA,原因是我的方法一开始不是这样做的,我是在查找文本串的时候,结束的时候再来统计每个模板串出现的次数,但是这样似乎不行 这道题还有一个坑就 阅读全文
posted @ 2019-08-10 21:27 Garrett_Wale 阅读(180) 评论(0) 推荐(0) 编辑
摘要:病毒侵袭 "HDOJ 2896" 主要使用AC自动机解决,其次在query函数中改变一下,用来记录每个模板串出现的次数,还有insert函数中记录模板串的编号 需要注意最好使用结构体,而且不能一次性使用memset否则会超时 上次没有AC出现了output limit exceed问题,后来发现是我 阅读全文
posted @ 2019-08-10 19:35 Garrett_Wale 阅读(137) 评论(0) 推荐(0) 编辑
摘要:Keywords Search "HDOJ 2222" 本文是AC自动机的模板题,主要是利用自动机求有多少个模板出现在文本串中 由于有多组输入,所以每组开始的时候需要正确的初始化,为了不出错 由于题目的要求是有多少字符串出现过,而不是出现过多少次,所以出现过的模板串就不能再计数了,所欲需要置 1. 阅读全文
posted @ 2019-08-10 10:40 Garrett_Wale 阅读(107) 评论(0) 推荐(0) 编辑
摘要:Blue Jeans "HDOJ 3080" 本题使用的是KMP算法加暴力解决 首先枚举第一个字符串的所有子串,复杂度为O(60 60),随后再将每个子串和所有剩下的m 1个字符串比较,看是否存在这个子串 若所有的字符串都有该子串,则看是否是最长的,如果是等长的再看是否是字典序最小的。 本题我wa了 阅读全文
posted @ 2019-08-09 17:41 Garrett_Wale 阅读(513) 评论(0) 推荐(0) 编辑
摘要:Seek the Name, Seek the Fame "POJ 2752" 本题使用的算法还是KMP 最主要的片段就是前缀数组pi的理解,这里要求解的纸盒pi[n 1]有关,但是还是需要使用一个循环来依次找到前面符合的前缀(所谓符合就是可以保持既是前缀也是s的后缀的子串长度)。 include 阅读全文
posted @ 2019-08-09 12:11 Garrett_Wale 阅读(146) 评论(0) 推荐(0) 编辑
摘要:Power String "POJ 2406" 字符串压缩模板题,但是是求有多少个这样最短的子串可以组成s。 include include include include include using namespace std; const int N=10000001; int pi[N]; v 阅读全文
posted @ 2019-08-09 11:49 Garrett_Wale 阅读(134) 评论(0) 推荐(0) 编辑
摘要:Period "HDOJ 1358" 这题还是属于KMP算法的应用,属于字符串压缩问题。也就是在一个字符串s中寻找一个前缀,使得s可以被一份或者多份前缀子串t拷贝连接,也就是串接。 include include include include include using namespace std 阅读全文
posted @ 2019-08-09 11:12 Garrett_Wale 阅读(150) 评论(0) 推荐(0) 编辑
摘要:Cyclic Nacklace "HDOJ 3746" 本题还是使用KMP算法,需要使用到前缀数组 利用前缀数组计算最小循环节:即t=n pi[n 1]. 最后输出还需要的珠子,当然还有判断什么时候输出为0. include include include include using namespa 阅读全文
posted @ 2019-08-09 10:41 Garrett_Wale 阅读(159) 评论(0) 推荐(0) 编辑
摘要:剪花布条 "HDOJ 2087" 本题和 "hdoj 1686" 相似,唯一不同的是这里的子串一定要是单独的。所以在确定有多少个子串时不能用前面的方法。而是在循环时,只要找到一个子串,i就不是++,而是+=子串的长度。 include include include include using na 阅读全文
posted @ 2019-08-09 10:12 Garrett_Wale 阅读(101) 评论(0) 推荐(0) 编辑
摘要:Oulipo "HDOJ 1686" 本题的思路就是KMP,和HDOJ 1711思路一样,不再赘述详情可以看链接: "1711题解" include include include include include using namespace std; string a,b; int pi[101 阅读全文
posted @ 2019-08-09 09:54 Garrett_Wale 阅读(117) 评论(0) 推荐(0) 编辑
摘要:Number Sequence "HDOJ 1711" 1.这里使用的算法是KMP算法,pi数组就是前缀数组。 2.代码中使用到了一个技巧就是用c数组看成是复合字符串,里面加一个特殊整数位 1000006,因为它永远不会出现在数组中。 3.额外需要注意的就是,需要加快速输入输出语句,因为涉及到的数据 阅读全文
posted @ 2019-08-09 09:37 Garrett_Wale 阅读(142) 评论(0) 推荐(0) 编辑
摘要:permutation 1 "HDOJ 6628" 这题使用的暴力深搜,在dfs里面直接从最小的差异开始枚举 注意这里的pre记录前一个数,并且最后答案需要减去排列中最小的数再加一 这里有一个技巧关于求第k小的问题,就是在dfs里面只要找到满足的长度为n的排列,k就减一,这样当k为0时的排列就是字典 阅读全文
posted @ 2019-08-08 17:37 Garrett_Wale 阅读(175) 评论(0) 推荐(0) 编辑
摘要:K th Closest Distance "HDOJ 6621" 本题可以使用线段树解决,结点存本结点对应的所有元素,并按照从小打到排序 最后使用二分法求解答案。因为题目中有绝对值,所以需要使用两次查找,再相减和k比较 // include include include include incl 阅读全文
posted @ 2019-08-08 09:21 Garrett_Wale 阅读(130) 评论(0) 推荐(0) 编辑
摘要:Cow Contest "POJ 3660" 1.本题考察的是最短路,用的算法是Floyd算法 2.如果一个结点和剩余的n 1个结点都有关系,那么可以确定其排名 3.需要注意的是,判断是否有关系时,反向关系也要考虑 阅读全文
posted @ 2019-08-07 20:08 Garrett_Wale 阅读(261) 评论(0) 推荐(0) 编辑
摘要:MPI Maelstrom "POJ 1502" 这题是求最短路,但是因为一开始看错题目,导致我去使用prime算法求最小生成树 题意是指一台机器发出信息后,还可以向其他的机器发送信息,所以不能使用prime算法。尽管两者区别很小 include include include include in 阅读全文
posted @ 2019-08-07 19:40 Garrett_Wale 阅读(269) 评论(0) 推荐(0) 编辑
摘要:Doing Homework "HDOJ 1074" 1.本题主要用的是状态压缩的方法,将每种状态用二进制压缩表示 2.状态转移方程:dp[i|(1 include include include include using namespace std; const int INF=0x3f3f3f 阅读全文
posted @ 2019-08-07 16:44 Garrett_Wale 阅读(133) 评论(0) 推荐(0) 编辑
摘要:Monkey and Banana "HDOJ 1069" 这里实际是嵌套矩形问题的变式,也就是求不固定起点的最长路径 动态转移方程为:dp[i]=max(dp[j]+block[i].h|(i,j)∈map),这里的dp[i]表示从i块出发的可以构建的最大的高度。 首先需要构建出图map,表示一块 阅读全文
posted @ 2019-08-07 11:07 Garrett_Wale 阅读(218) 评论(0) 推荐(0) 编辑
摘要:Ignatius and the Princess IV "hdoj 1029" 这里主要是先排序,因为要找出现了一半以上的数字,所以出现的数字一定在中间 方法一: include include include include include using namespace std; int n; 阅读全文
posted @ 2019-08-07 09:52 Garrett_Wale 阅读(135) 评论(0) 推荐(0) 编辑
摘要:Max Sum Plus Plus "HDOJ 1024" 动态转移方程:dp[i][j]=max(dp[i][j 1]+a[j],max(dp[i 1][k])+a[j]) (0 include include include include using namespace std; const 阅读全文
posted @ 2019-08-06 21:02 Garrett_Wale 阅读(127) 评论(0) 推荐(0) 编辑
摘要:Traving "HDOJ 3001" 这题考察的是状态压缩dp和tsp问题的改编 需要和传统tsp问题区分的事,这题每个点最多可以经过两次故状态有3种:0,1,2 这里可以模仿tsp问题的二进制压缩方法,进行压缩最后再dp处理: P191 白书tsp问题求解 include include inc 阅读全文
posted @ 2019-08-06 11:43 Garrett_Wale 阅读(145) 评论(0) 推荐(0) 编辑
摘要:DNA sequence "HDOJ 1560" 本题是迭代加深搜索问题,主要是要理解题目,题目中一定是有解的,所以为了找最小的解,可以从小的搜索深度开始逐渐增加。 这里有个技巧就是,如果本次指定开始迭代搜索的深度之后没有找到解,那么需要用一个临时数组将每个字符串中已经匹配好的字符数存起来。 inc 阅读全文
posted @ 2019-08-05 21:15 Garrett_Wale 阅读(129) 评论(0) 推荐(0) 编辑
摘要:哈密顿绕行世界问题 "HDOJ 2181" 1.本题是典型的搜索记录路径的问题 2.主要使用的方法是dfs深搜,在输入的时候对vector进行排序,这样才能按照字典序输出。 3.为了记录路径,我使用的是两个vector,每次找到结果时,将一个vector赋值给另一个,再去输出。在dfs遍历顶点vec 阅读全文
posted @ 2019-08-04 21:07 Garrett_Wale 阅读(203) 评论(0) 推荐(0) 编辑
摘要:bfs搜索加记录路径 HDOJ-1043 主要思路就是使用双向广度优先搜索,找最短路径。然后记录路径,找到结果是打印出来。 使用康拓序列来来实现状态的映射。 打印路径推荐使用vector最后需要使用algorithm里的reverse进行路径的翻转。 注意本题有多组输入,这里的输入需要注意一下。 如 阅读全文
posted @ 2019-08-03 09:53 Garrett_Wale 阅读(122) 评论(0) 推荐(0) 编辑
摘要:简单搜索step1 "POJ 1321" 这是第一次博客,题目也很简单,主要是注意格式书写以及常见的快速输入输出和文件输入输出的格式。 递归的时候注意起始是从( 1, 1)开始,然后每次从下一行开始递归。这样vis数组只需要开一维就可以了。 其实这里的递归的c可以不用,因为每次递归都要遍历每一列。 阅读全文
posted @ 2019-08-02 20:42 Garrett_Wale 阅读(111) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示