自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA虚拟机--垃圾回收算法

三个问题1.哪些内存需要回收2.什么时候回收3.如何回收1.主要的回收对象是JAVA堆里面的对象,这里的空间占了大多数空间。这里面哪些对象要回收呢?主要是一些死掉的对象,也就是没有被引用的对象。判断这些对象有两种算法:①引用计数算法:每个对象加一个引用计数器,每次引用一次对象,计数器加一;引用失效,计数器减一。   缺点:无法解决循环引用的问题。

2017-03-08 18:23:30 574

原创 线段树专题—HDU 4027 Can you answer these queries?

题意:给n(1-100000)个点,且所有点的值的和不超过2的63次,然后m(1-100000)个操作,操作有两种,一种把一段区间的每个点的值变为他的开根号的值,另一种是询问一段区间点值的和分析:先求出最多要更新的次数,然后进行判断,下面是计算:设一共有n个点,每个点的值一样为k(最极端的情况),值的总和当做2^63(最极端的和)那么再设n=2^a,k=2^b由于n*k=2

2015-08-17 17:21:43 668

原创 线段树专题—ZOJ1610 Count the Colors

题意:给一个n,代表n次操作,接下来每次操作表示把[l,r]区间的线段涂成k的颜色其中,l,r,k的范围都是0到8000分析:其实就是拿线段树维护一段区间的颜色,总体用到的是线段树的区间更新把,但是会给人一种区间合并的错觉注意:这题比较坑的是千万不能拿n建树,不然就会segmentation fault,必须拿8000建树,也就是树是固定的代码:#inclu

2015-08-17 16:02:37 2734

原创 Codeforces Round #315 (Div. 2) C - Primes or Palindromes?(暴力打表)

题意:给一个p和q然后求π(n) ≤ p/q*rub(n),的最大的n值,其中π(n) 表示从1到n之间的素数的个数,rub(n)表示从1到n之间的回文数的个数(回文数不能有前导0,且从左到右和从右到左一样)分析:其实这题没有题目没有确定n的范围让人不敢直接暴搜打表,但是你只要手动写个函数y=π(n) /rub(n)手动模拟暴力一下就可以发现其实这个函数大概是先下降后上升的,由

2015-08-15 15:58:46 729

原创 线段树专题—POJ 3667 Hotel(区间合并模板)

题意:给一个n和m,表示n个房间,m次操作,操作类型有2种,一种把求连续未租出的房间数有d个的最小的最左边的房间号,另一个操作时把从x到x+d-1的房间号收回。分析:这是一个区间合并的典型应用,基本只要套套模板就好了下面是对区间合并的解释:up函数:当修改完此时的区间时,为了维护该区间上面区间值的正确性,向上回朔更新上面区间的值down函数:把延迟标记下传,并修改下

2015-08-15 14:47:53 1548

原创 HDU 5375 Gray code(DP)

题意:给一串字符串,里面可能出现0,1,?,其中问号可能为0或1,将这个二进制转换为格雷码后,格雷码的每位有一个权值,当格雷码位取1时,加上该位权值,求最大权值和为多少。分析:比赛的时候愚了,居然以为格雷码是由3个二进制字符转换的,于是妥妥wa了,其实格雷码的求法是通过异或求的的,即Gi=Bi⊕Bi-1(G为格雷码,B为二进制数),那么只要水水的DP一下就好了,具体DP是通过保存D

2015-08-12 09:19:22 636

原创 线段树专题—HDU1698 Just a Hook

题意:t组数据,给一个n,m表示n长度的钩和m次操作,初始钩子的每单位长度的价值为1,接下来输入 x,y,k 的操作把钩子[x,y]区间的价值替换为k,求m次操作后钩子的价值为多少分析:成段替换,最后只要求第一个区间就可以了,使用不用写query询问代码:#include #include #include #include #include #include

2015-08-10 17:57:04 1046 1

原创 线段树专题 POJ3468 A Simple Problem with Integers

题意:n个点,m个操作,两种操作类型,C X Y K 表示区间[x,y]上每个点值加k,Q X Y 求区间[x,y]的和分析:线段树区间求和,裸模板注意:结果会超int,要用long long 表示,如果是在hust上交结果要用%I64d,poj的话则用%lld代码:#include #include #include #include #inclu

2015-08-10 16:55:23 734

原创 线段树专题—HDU2795 Billboard

题意:给一块h*w广告板,然后给n个1*wi的广告条,广告条放的顺序是有限选择向上的,再优先选择左边的,对于每块广告条,输出它放的位置,如果放不下,输出-1分析:很简单的单点更新max值的线段树,思路很好想,以广告板的每个高度建树,更新点的时候优先选择高度值小的点。注意:比较容易出错的是 ,要注意h的范围啊1e9!!!,直接以这个高度建树肯定爆啊,这里注意到n是200000

2015-08-10 14:41:46 667

原创 HDU 5365 Run(暴力)

题意:给一个n和n个整数坐标问这些点能组成几个不同正三角形,正方形,正五边形,正六边形。分析:由于坐标都是整数,使用只可能有正方形,其他都不可能,那么只要对于每四个不同的点,判断2组对边相等,两条对角线也相等,临边也相等即可。代码:#include #include #include #include #include #pragma comment(link

2015-08-10 08:49:29 596

原创 HDU 5340 Three Palindromes (manacher算法)

题意:给一个20000长度的字符串,问能否拆成3个非空的回文分析:可以用后缀数组做,但是感觉比较麻烦,这里采用新学的一个manacher算法(不会的可以移步http://blog.csdn.net/sin_xf/article/details/47271713)manacher有一个好处就是会记录每个位置为中心的最长回文,那么我们只需要用这个找出所有第一个字符串和第三个字符串,

2015-08-06 09:30:19 857

原创 算法进阶之manacher算法 (求最长回文)

前几天bestcode做到一道字符串的题目,需要O(n)的回文,正好看到网上的manacher算法,于是来学习一发进入正题:manacher算法用法:一般用于求一个字符串的最大回文,操作过程中会记录以每个点为中心的回文半径,可用来进行其他操作时间复杂度:O(n)空间复杂度:记录字符串2*n,半径数组2*n内容:记p[i]为以i为中心的回文半径(a

2015-08-04 16:35:23 632

原创 HDU5335 Walk Out(dfs+递推)

题意:大致意思是给一个n*m的01矩阵,起点为左上方(1,1),终点为右下方(n,m),求从左上方到右下方字典序自小的路径,如果路径都为0,则输出0。分析:首先字典序最小,先要满足路径最短,再满足路径的值最小,路径最短的毫无疑问是越靠下或者越靠右,而且如果路径的前面为0,则可以认为是以第一个非0的点的为起点。因此这题可以转化为:先找出以起点为中心的连续为零的集合,再在其中找出x+y最大

2015-08-03 11:13:21 563

原创 线段树模板及专题合集-----不断更新中

之前学过一段时间的线段树,后来就没有再做了,上次比赛做到几道题居然都是线段树,而且渐渐发现线段树的适用性之广和重要性,而且之前学的不全面,于是决定重现学一遍线段树,顺便改一下之前的代码风格一.单点更新最典型的最基础的题目就是敌兵布阵了,题意大概是给n个数,然后3种操作:某个点的数加上x,某个点的数减去x,求[x,y]区间所有数的和。前两种操作都一样,只不过减去x相当于加上-x

2015-07-30 10:56:46 1966

原创 HDU 5325 Crazy Bobo(深搜)

题意:给一个n,接着输入n个数,表示n个点的值,接着输入n-1条边形成一个生成树问最大有多少个点的集合使得该集合内的所有点都满足如下:对于集合内点大小相邻的两个点,该两点之间经过的所有点的大小都小于该两点eg  73 30 350 100 200 300 4001 2 2 3 3 4 4 5 5 6 6 7该无向图可表示为1——2——3——4——5——6——7  取点6对于

2015-07-29 16:22:07 770 1

原创 HDU 5289 Assignment(单调队列)

题意:给T足数据,然后每组一个n和k,表示n个数,k表示最大允许的能力差,接下来n个数表示n个人的能力,求能力差在k之内的区间有几个分析:维护一个区间的最大值和最小值,使得他们的差小于k,于是采用单调队列普通单调队列做法:#include#include#include#includeusing namespace std;const int maxn = 1

2015-07-29 11:02:31 875

原创 HDU 5323 Solve this interesting problem(暴搜)

题意:给一个l,r,表示区间[l,r],问是否存在区间为[0,n]的线段树的节点区间为[l,r],如果有求最小的n,如果没有输出-1分析:对于线段树而言,其中一段区间也就是一个节点可以有左节点或者右节点,而对于一个节点的左节点有两种情况:1.左节点的长度和该节点长度相同;         2.左节点长度比该节点长度长1  同理,一个节点的右节点也有两种情况,与左节点正好相反:

2015-07-29 10:02:11 933 1

原创 HDU 5305 Friends(深搜)

题意:t组数据,每组一个n和m表示点数和边数,接下来m条边,每条边两种状态,求每个点邻接边的两种状态数目相同的排列方式有几种分析:从第一个顶点开始往下深搜每条边,每条边两种状态,注意回朔。代码:#include#include#include#includeusing namespace std;const int maxn = 10;int n,m,ans

2015-07-28 10:37:15 546

原创 hdu5313Bipartite Graph(二分图染色+DP(bitset优化))

题意:给n个点m条边,问最多可以添加几条边使图为完全二分图分析:如果二分图没有限制,看到是两边分别为n/2个点和n-n/2个点的最优,但是可   能出现大于此点的情况,比如n=4,m=3,边为1 2,1 3,1 4.此时完全二分图边最   多为3,所以要求得二分图左边或者右边可达到的离n/2最近的点数是多少为最    优解,于是采用染色分别求出各个联通快的2种颜色的各个点数

2015-07-27 09:34:17 1188

原创 HDU5312 Sequence

题意:t组数据,每组数据给个m,问m最少能由几项形如3*n*(n-1)+1的数表示eg 7=1(n=1)+1(n=1)+1(n=1)+1(n=1)+1(n=1)+1(n=1)+1(n=1);     7=7(n=2);     所以7最少能由1个数表示分析:3*n*(n-1)+1可以转换为6*(n*(n-1)/2)+1,而n*(n-1)/2是一个三角形数,设为An, 

2015-07-26 15:22:42 786

原创 BestCoder 1st Anniversary ($) Hidden String(深搜)

题意:给一个字符串,该字符串中由前后一次出现的三个子串能否组                成“anniversary”。解析:深搜,搜的层次小于等于三并且找到完整字符“anniversary”即正确,否则错误 #include#include#include#includeusing namespace std;const int maxn = 1e6;

2015-07-26 09:16:19 833

原创 OO’s Sequence 2015多校联合1001

题意:给一个n,然后n个数,求∑i=1n∑j=inf(i,j) mod (109+7).也就是求n*(n+1)/2个区间内,给定一个i,使得i的左右两边的数都不能被a[i]eg.51 2 3 4 5一个有5*6/2=15个区间即15个f[l,r]【1,1】 【1,2】 【1,3】 【1,4】【1,5】【2,2】 【2,3】 【2,4】【2,5】【3,3】

2015-07-22 08:45:04 582

原创 POJ1094 Sorting It All Out 拓扑排序(深搜)

题意:给定n和m,n表示大写字母的前n个,m表示m个关系对,求能否确定唯一排序。分析:分三种情况(1)当输入完当前的关系对之后,已经能确定矛盾(不需要完全输入m个关系对时)eg. 3 3      A      B        B      当输入到第二对已经能判断矛盾,此时记下当前的所需要用到的关系对数ans=2;      接着输入,但是后面的关系对不作处

2015-07-21 09:36:39 716

原创 Asteroids

其实是个水题,二分图的最大匹配,二分图为两边为坐标x,y,直接匈牙利算法做,邻接表边数老是写错,第三次了!!!

2015-07-19 16:50:49 775

原创 wyh2000 and pupil -求最小覆盖点(最大匹配)

t组数据,然后n个关系,每个关系两个值x,y,表示x和y不互相认识,求分为两组的人每组内的人必须互相认识的人数,其中一组尽可能大(最大值和最小值),如果不存在,输出Poor wyh#include#include#include#includeusing namespace std;int E=0;int n;const int MAXV = 10000

2015-07-19 14:47:52 853

原创 Crazy Tank

枚举最小精度为单位的角度#include#include#include#includeusing namespace std;double v[210];#define pi 4*atan(1)int main(){    int n;    while(scanf("%d",&n)!=EOF&&n)    {        double h,

2015-07-17 15:47:23 458

原创 Two Sides of the Same Coin --二分图的最大匹配

题意:给定n个人,每个人可能会两种本事,写代码或者测数据,或者都会,还有他的排名,指定分组选择两个人分别会写代码和测数据且排名差距为2,求组合数最大有多少#include#include#includeusing namespace std;int match[1005];bool vis[1005];struct Node{    char name[25];

2015-07-16 16:19:52 742

原创 POJ 1733 Parity game(种类并查集+哈希)

Parity gameDescriptionNow and then you play the following game with your friend. Your friend writes down a sequence consisting of zeroes and ones. You choose a continuous subsequence (for exam

2014-08-15 09:19:50 686

原创 POJ3083--Children of the Candy Corn(方向的控制+优先队列)

Children of the Candy CornDescriptionThe cornfield maze is a popular Halloween treat. Visitors are shown the entrance and must wander through the maze facing zombies, chainsaw-wielding psychop

2014-08-06 17:27:47 595

原创 POJ3630 Phone List+字典数三种申请内存的方法--动态、静态、半动态

POJ3630 Phone List+字典数三种动态和静态申请内存的方法

2014-08-06 10:49:39 646

原创 POJ1001 Exponentiation--浮点数的高精度乘法

Exponentiation

2014-08-01 19:56:49 748

空空如也

空空如也

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

TA关注的人

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