自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KIJamesQi的博客

大神养成中。

  • 博客(18)
  • 收藏
  • 关注

原创 SPOJ QTREE Query on a tree

思路:树链剖分的一种,将边权赋值给这条边的儿子节点,(u,v)也就是v节点,u->v,然后线段树维护节点之间的关系。注意的是,如果u,v在同一天链中的话且dep[u] // #pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #in

2015-12-13 20:28:16 362

原创 lightoj1426 Blind Escape

思路:有一个r*c的grid,里面有两种字符,'#'表示墙,不可穿过,'.'表示free,可穿过,现在在这个里面有一个盲人,他可以向东南西北四个方向走,需要靠你给的指令走出来,如果不能走出来就是Impossible,不然的话输出最短且字典序最小的命令串。显然是搜索,当然不能走出来最好判断,每个点搜一遍就好了,最后判断下。问题就是可以走出来的时候怎么搜。首先是queue中的状态是啥,这里的话

2015-12-13 00:25:15 437

原创 lightoj1085 All Possible Increasing Subsequences

思路:这题就是求这个序列中有多少个上升序列,如果按照一般的思路去for...for...for...的话,必然是超时的,所以这时候就需要减少时间上的复杂度,首先,dp[i] = ∑dp[k] (a[i] > a[k] && i > k),这样我们在往后面扫的时候需要快速的求出前面的和也就是等式右边的部分,这个当然就是线段树去完成了,由于单个数很大,只能离散化,还好n不大,离散化下来的话也就是n个数

2015-12-12 17:26:17 425

原创 HYSBZ - 1036 树的统计

思路:这是经典的树链剖分,有三个操作。1.两点路径中的最大点权;2.两点路径中的点权和;3.更改某个点的权值;如果不用数据结构维护的话,直接搜带来的就是时间消耗太大,主要是因为搜的过程中做了很多无用功,不够直接的找到目标点和线段。树剖就是先按照儿子节点数的节点多少进行划分险段,线段不会相交,树上两个点的路径必然是通过它们的LCA的。我们可以通过线段往上找,知道两个点在同一个线段中,

2015-12-12 16:34:43 372

原创 hdu3848 CC On The Tree

思路:一棵树,叶子节点上有一个苹果,问CC从哪个非叶子节点出发获得两个苹果话的时间最少,速度one meter per second,给出两相连两点之间的距离。这个就是树形dp;dp[i][j]表示在第i号节点获取j个苹果的代价。dp[u][2] = min(dp[u][2], dp[u][1] + dp[v][1] + val);dp[u][1] = min(dp[u][1],d

2015-12-11 11:27:52 386

原创 hdu4263 Red/Blue Spanning Tree

思路:有两种没有边权但是有染色的边,现在问时候能够形成确切的含有K条Blue边的生成树。直接找是不现实的,但是我们可以看至少和之多需要多少条就行了,只要K在这两个值之间就行了。因为从最少的Blue边开始,用blue边替换RED边,这样是可以形成环的,所以替换是可行的,这样就可以一步一步替换成含有k条blue边的生成树。// #pragma comment(linker, "/STACK:102

2015-12-11 11:11:50 366

原创 lightoj1423Olympic Swimming

思路:有k条长度为l的泳道,每天泳道上面有n[i]个障碍物,w诶了比赛的公平性,每个泳道里面只能有相同数目个障碍物,求最长的泳道。这样我们可以枚举泳道的右位置,计算出每个泳道中从0到这个位置的障碍物数目,求出最大与最小值。如果相等说明这个位置是目前长的泳道右端点。然后,因为要想等,如果要以这个位置为泳道的右端点,那么我们需要求一个想等的左端点。cnt[i] = A[i][j] - mi;这样的

2015-12-09 23:17:04 314

原创 lightoj1301Monitoring Processes

思路:有n个进程,开始时间s[i],结束时间t[i],我们要用监视器来监视这些进程,但是每个监视器同一时间只能监视一个进程,只有当这个监视器监视的进程结束后才能监视下一个,问需最少要多少个监视器才能监视完所有进程。这题也是贪心,n个进程有2n个时间点,一个时间点要么是一个进程的开始,要么是一个进程的结束,开始的话就需要派监视器来监管,这个监视器有两个来源,一是前面已经监视完别的进程而空下来的,

2015-12-09 20:22:11 300

原创 light1076Get the Containers

思路:这题应该来说比lightoj1048简单多了,,,有n个输奶管,里面有一定的牛奶,现在有m个存储罐用来装这些牛奶,规则是一个管子里面的牛奶不能分开装,多个管子里面的牛奶可以混合装,混装的时候只能按照给定的顺序装,求满足条件的单个罐子的最小容积。显然是二分容积值,low = max(A[i],A[i + 1]),high = A[1] + [2] + ... + A[n]。// #prag

2015-12-09 19:36:59 345

原创 lightoj1086 Jogging Trails

有个无向网络,现在Robin想从某点出发,经历每条边至少一次,最后回到原点,求最少的权和。这个有点像是欧拉回路,其实就是的,只是呢,,,有的边会许会重复走。在欧拉回路中,点的度数必然是偶数,这题中的度数为奇数的点的偶数也必然是偶数个,因为这个是无向图。那么,图是连通的,所以最后我们需要将度数为奇数的点进行建边,其实就是这两点之间的最短路上的边再走一次。点只有15个,,,所以状压。dp[sta]

2015-12-08 19:49:35 430

原创 lightoj1366Pair of Touching Circles

思路:给出一个矩形的宽w和高h,要在这个矩形中画两个圆,圆是外切的,且圆完全在矩形内部,圆心在整数点上面,两个的半径都是整数。求有多少种画法。因为是相切的,所以两点之间的距离是其半径和,为整数。我们可以枚举两个圆A,B的相对位置,A在B的左下方,枚举的是B相对A的x,y值,x,y不同时为0。这样以来x 这样之后就要求能装下这两个圆的最小矩形了(平行于坐标轴的)。看是否满足条件完全在大矩形内

2015-12-05 21:38:11 470

原创 lightoj1380 Teleport

思路:有n个城市,m条单向道路,开始你在k号城市,现在要你从k开始出发,访问每个城市至少一次,就最少的花费,不行的话就impossible,这样看的话就是搜索了,,,但是题目中还给出了条件的,,,如果x号城市你之前访问过了的,那么你可以从你现在所在城市不花时间的瞬移到x号城市去。这样一来就不再是简单的搜索了,而是最小树形图了。// #pragma comment(linker, "/STACK

2015-12-03 23:23:35 361

原创 lightoj1123 Trail Maintenance

思路:每新进一条边就MST一下,然后对于加入的边会形成环的话就删掉。不然会TLE的。// #pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include #include #includ

2015-12-02 22:57:22 513

原创 lightoj1211 Intersection of Cubes

思路:在一个三维坐标中,给出n个长方体,求所有长方体相交体积,每个长方体给定的是左下角和右上角的坐标。所有相交体积必然属于两两相交的,而且随着长方体的增多,这个公共体积不会增加,所以呢,这个公共体积的左下角的xyz坐标必然是所有中最大的,而右上角的坐标必然是最小的。最后判断这个公共部分是否合理及是否可以组成一个长方体。// #pragma comment(linker, "/STACK:1

2015-12-02 20:39:23 447

原创 lightoj1118 Incredible Molecules

思路:求两个圆相互遮盖的面积,对于圆的位置情况有外切,内切,相离,内含,相交。这里需要考虑的是(相离+外切),相交,内含(两种情况);手推了下公式,,刚入门,,,推得有点慢。// #pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include

2015-12-02 20:01:31 344

原创 lightoj1107 How Cow

思路:此题就是简单叉积运用,判断点在规则图形内,比如三角形,平行四边形等。// #pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include #include #include #i

2015-12-02 19:17:31 359

原创 lightoj1058 Parallelogram Counting

思路:一个二维坐标系中给出n个点,可以两两连线,问这些所有线段中能组成多少平行四边形。n 这里显然不能枚举组合,那样是n^4的做法,必然是超时的。那么我们可以用平四边形的等价定义,两条相互平分的线段的四个点是平行四边形的顶点,那么我们可以先用n^2de方法求出任意两个点的连线(某四边形的duijiaoxian)的中点。这样就有n*(n-1)/2个中点。然后我们sort一下,求出相同的点的个数,

2015-12-02 19:00:14 425

原创 lightoj1300

思路:显然是和边双连通分量有关的,所以只需要在双连通分量中找奇环(二分图染色),如果找到,这个连通分量中的点都是满足的。// #pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include

2015-12-01 10:20:39 295

空空如也

空空如也

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

TA关注的人

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