自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 HDU - 6006 (状压dp)

题目网址:点击打开链接;;预处理很重要:还有后来的;(j|a[i][k])==j)j这个状态一定包含a的状态,并且没有a也一样可以完成第i个机器,神奇的位运算#include #include#include#include#include#include#includeusing namespace std;const

2017-08-29 20:38:42 313

原创 poj 3254 状压dp+位运算

题目网址点击打开链接题意:给一个由n*m个方块组成的土地,有的方块肥沃(用1表示,可以种草),有的贫瘠(用0表示,不可以种草),现在要在土地上种草,草所在的方块不可以是相邻的,问有多少种种草的方案;总结下本题用到的几种位运算:1.判断一个数的二进制位是否有两个相邻的 ,不相邻条件:1 x&(x2.取一个数的第k位 p&(13.判断两个数是不是同一位有1, 没有的

2017-08-29 10:42:46 216

原创 UVA - 11419 SAM I AM (最小点覆盖集)

题目网址点击打开链接关于这个题,首先思路是将每个行和列分开来看,即将列和行分为两个部分,两个部分之间的边就是题目中的炸弹,连接其所在的行和列。寻找最少的点可以覆盖所有的边,即是最小点覆盖集,在做这个题以前,首先要知道一下几点:1增广路:(引用)二分图:简单来说,如果图中点可以被分为两组,并且使得所有边都跨越组的边界,则这就是一个二分图。准确地说:把一个图的顶点划

2017-08-27 21:54:07 451

原创 思考(线面)

关于教主的教导;女生可以在acm比赛中发挥 的作用;之前一直觉得没有队友是自己太弱,其实事实的一部分就是这样,他们对于我的认同感基本没有,女生在一个队里面可以发挥控局作用,她使这个队伍更加完整,细致,更加和谐,女生比男生的东西学的更加扎实和细致,而且女生的面更加广阔,但是女生的思维不够深入,而且容易想多想偏,比喻来说,女生是面,男生是线;而对于我自身而且,我跟队里的人都不一

2017-08-27 19:32:00 182

原创 没有题目

很多问题是没有答案的而且不能去思考,否则,会陷入其中,无法自拔,

2017-08-25 21:21:02 275

原创 UVA - 1423(拓扑排序)

题目网址点击打开链接;妈耶真的是这个想法太奇妙;以前拓扑排序不太懂。这里加几个关于拓扑排序的博客。有一篇代码虽然是java,但是思想是不错的点击打开链接点击打开链接;解题思路:把题目转化成已知各个前缀和的大小关系,求每个前缀和的值。s(i, j) 符号为正的话,表示a[i]+a[i+1] +.. a[j] > 0,即前缀和sum[j] - sum[i-1]

2017-08-25 10:43:56 270

原创 UVALive - 7018 Dragons

题目网址点击打开链接开始以为只需要选择最大Ni然后根据SI与Ni关系更新寻找到Ni比答案也小就好了,原来的思路写wa了,唉,,,但是可以进一步写一下;对于每个城市团,转移时间可以忽略不计,但是注意每一个团必须要派兵;对于派兵杀龙发现,只要总兵数大于龙头增长数,一定可以杀死,只是时间问题;所以,按增长排序大小以后,每个龙,可以派他原来的头数去直接杀死他,也可以只要比他增长

2017-08-24 19:42:17 339

原创 uva 1118(圆中三角形)

我一开始就是想着求三角形面积,根据三个点之间任意两个点与0点形成的三角形加减来求得;但是这样写是n3我以为不会超时,但是还是te了;后来发现了网上思路的升级版本(n2解决):画一个图看看在上图中。 我们假定要求 S(i,j,k) 如果k在 j的左侧  那么 S(i,j,k) = S(i,k,o)+s(i,j,o) - s(k,i,o); 显然 只要k在j的左

2017-08-23 16:17:20 407

原创 LCA 最近公共祖先问题

一个比较好的博客点击打开链接;;

2017-08-22 20:13:14 285

原创 DAG动规 uva

题目网址s#include #include#include#include#include#include#includeusing namespace std;const int inf=0x3f3f3f3f;const int maxt=2000+5;const int maxn=500+5;int dp[maxt][maxn];int ha

2017-08-21 17:07:01 325

原创 UVA - 11732 (前缀树)

题目网址点击打开链接;这个题题意是这样的:就是给你字符串进行两两比对,看需要比多少次==,注意相等时==结果ans+=2,如果此位不相等 ans+=1,并且结束比较注意!!!所有的串的比较结束时要么两个不相等,要么至少一个到\0;但是wa点来(wsb)例  wsb  wsb比较答案应该是8,而不是6  还需要比较最后一位的\0;竟无语凝噎,因为这,我死磕

2017-08-19 09:31:52 280

原创 20170814(dp专场)

A;;B;;C;;D;;E - Blocks;;F - Party at Hali-Bula;;

2017-08-14 19:54:34 222

原创 UVA - 1220 Party at Hali-Bula(树形dp)

题目地址点击打开链接;开始以为是各种dfs爆搜yy中。。。;不想完全看题解,搞了很久,看了一眼后缀,据说是树形dp;然后顿悟开始修改;随他去吧;用一个二维dp【a】【b】 来更新最大值,a表示这个节点的编号,b有两个值,0,1表示这个点取与不取;用一个vector来建树;从根节点开始,也就是big boss,向他的员工出发dfs,每个点可以取,也可以不取,取:该点的

2017-08-14 15:44:14 247

原创 树状数组

结合这两个博客看懂的:点击打开链接点击打开链接‘关于树状数组的实现    数据结构 - 树状数组 ( Binary Indexed Tree,BIT,二分索引树 ),它只有两种基本操作,并且都是操作线性表的数据的:      1、add( i, 1 )      (1      2、sum( i )         (1      试想一下,如果

2017-08-13 17:40:04 188

原创 线段树2(区间更新)

区间更新是指更新某个区间内的叶子节点的值,因为涉及到的叶子节点不止一个,而叶子节点会影响其相应的非叶父节点,那么回溯需要更新的非叶子节点也会有很多,如果一次性更新完,操作的时间复杂度肯定不是O(lgn),例如当我们要更新区间[0,3]内的叶子节点时,需要更新出了叶子节点3,9外的所有其他节点。为此引入了线段树中的延迟标记概念,这也是线段树的精华所在。延迟标记:每个节点新增加一个标记,记录这个节

2017-08-12 11:18:28 225

原创 线段树 1(基础 单点更新)

首推一个博客点击打开链接;还有这个点击打开链接;一 概述线段树,类似区间树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(logn)。线段树的每个节点表示一个区间,子节点则分别表示父节点的左右半区间,例如父亲的区间是[a,b],那么(c=(a+b)/2)左儿子的区间是[a,c

2017-08-11 16:51:40 237

原创 FZU - 2148 I - Moon Game (暴力 叉积判凸多边形)

题目网址点击打开链接convex quadrilateral凸四边形,一开始,,看成了多边形,我说怎么这么多人出了题,一种方法,判断是否为凸四边形,用叉积判断;叉乘结果是|a||b|sinQ;所以可以根据征服来判断该角是否大于180,只要有一个角大,那他必然是凸但是注意:叉乘方向,a*b  和b*a表示的角 是不一样的(高数学的都忘了。。。)还要注意点的顺序,逆

2017-08-11 11:03:49 381

原创 UVA 818 Cutting Chains (暴力二级制枚举+dfs)

题目网址点击打开链接这个题有毒,题意大概意思应该是:选几个珠子去open。然后该珠子和其他就断开了。然后拿剩下的链去以这些open的珠子为点,去连接,看能不能连成一串。。求最少的open个数。思路:n为15.利用位运算去枚举哪几个珠子要open。然后判断剩下珠子有没有超过2个分支或者形成环,如果没有,在判断剩下的链个数有没有超过open个数-1.如果条件都符合,那么保留下最小最为答

2017-08-09 21:23:22 257

原创 UVA - 1601 The Morning after Halloween (bfs 单向/双向)

题目网址点击打开链接给出一个最大为16×16的迷宫图和至多3个ghost的起始位置和目标位置,求最少经过几轮移动可以使三个ghost都到达目标位置。每轮移动中,每个ghost可以走一步,也可以原地不动,需要注意的是任意两个ghost不能在相同的位置,因此也不能出现任意两个ghost对穿,也就是原来是ab,移动之后是ba。每个迷宫图'#'表示墙,' '表示空地,小写字母表示ghost的起始位

2017-08-09 18:43:42 294

原创 UVA - 1619 Feel Good (延伸+滚动窗口) 蜜汁wa

题目网址点击打开链接;、对于某个最小值ai来说,所选的区间应该尽量大,直到再选就不能保证ai是最小值的时候停止。在扫描过程中维护一个向前延伸的最大位置,扩展的时候注意传递性,如果前面一个元素比它小,那么前面一个元素能延伸到的位置,当前元素也可以延伸到,然后类似链表往前找的同时延伸链即可。向后找的时候类似。区间和用一个前缀和来处理。ummmmmm这个题目有毒,明明

2017-08-08 19:48:29 208

转载 滑动窗口

(转)题目描述给定一个数组A[],有一个大小为w的滑动窗口,该滑动窗口从最左边滑到最后边。在该窗口中你只能看到w个数字,每次只能移动一个位置。我们的目的是找到每个窗口w个数字中的最大值,并将这些最大值存储在数组B中。例如数组A=[1 3 -1 -3 5 3 6 7], 窗口大小w为3。则窗口滑动过程如下所示:Window position Ma

2017-08-08 18:57:23 177

转载 枚举子集方法

枚举子集的3种方式 -- C++描述要求:  给定一个集合,枚举所有可能的子集。此处的集合是不包含重复元素的。 Method0: 增量构造法  思路:每次选取一个元素至集合中,为了避免枚举重复的集合,此处要采用定序技巧 -- 除了第一个元素,每次选取必须要比集合中的前一个元素要大!  123456789

2017-08-08 14:14:21 2635

原创 必备知识总结

————————个人初步————————1.搜索:BFS、DFS、IDA*、哈希;2.思路构造:贪心、二分、三分、归并排序、尺取法;3.数学:扩展欧几里得、素数、欧拉函数、矩阵快速幂、高斯消元;4.数据结构:STL(优先队列、map、multiset)、单调结构(队列、栈、滑动窗口)、并查集;5.动态规划:经典问题、树形dp、状压dp;6.数学:博弈(巴什、nim、斐波那契

2017-08-08 10:42:34 273

原创 最小k限度生成树 +poj(1639)代码

算法引入: 最小k度限制生成树,就是指有特殊的某一点的度不能超过k时的最小生成树; 如果T是G的一个生成树且dT(v0)=k,则称T为G的k度限制生成树; G中权值和最小的k度限制生成树称为G的最小k度生成树;  算法思想: 设特殊的那点为v0,先把v0删除,求出剩下连通图的所有最小生成树; 假如有m棵最小生成树,那么这些生成树必定要跟v0点相连; 也就是说这棵生成

2017-08-07 14:08:05 700

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除