- 博客(51)
- 资源 (7)
- 收藏
- 关注
原创 JAVA程序员养成计划之JVM学习笔记(3)-JVM性能监控
本文对JVM的性能监控方法做整理。 持续更新中… …1. JDK命令行工具1.1. jps:虚拟机进程状况工具JVM Process Status Tool, 显示系统内所有的HotSpot虚拟机进程,用于查看当前在jvm中运行的程序,包括虚拟机执行主类的名称以及进程ID。1.2. jstat:虚拟机统计信息监视工具JVM Statistics Monitoring Tool, 用于收集Ho
2016-04-25 11:08:32
9002
1
原创 JAVA程序员养成计划之JVM学习笔记(2)-垃圾收集管理
本文对JVM垃圾收集进行说明,包括三种不同算法(标记复制、标记清除、标记整理),以及七种不同的垃圾收集器(Serial,ParNew,Serial Scavenge, CMS, Serial Old, Parallel Old, G1) 持续更新中… …1. 垃圾回收相关概念1.1. 垃圾回收对象说到垃圾收集,首先得确定哪些是可回收的对象,这里涉及到java的四种引用方式,即强、软、弱、虚四类引用
2016-04-15 21:55:23
3625
原创 JAVA程序员养成计划之JVM学习笔记(1)-运行时数据区
本文主要对JVM运行时数据区进行描述,属于JVM基础部分,包括逻辑结构以及各个区域的内容阐述。
2016-04-12 20:52:00
692
原创 JAVA程序员养成计划之JVM学习笔记(0)-一些注意事项
本文主要是针对JVM的一些小知识点进行梳理,如有什么地方有误或者不明白,欢迎指正讨论。
2016-04-12 13:30:37
774
1
原创 If that is your wish——赛前最后宣言!
不知何时开始,我已渐渐地不知所措。 还是一如既往的前往机房,只是当打开电脑的时候却是不知我应该干什么了,对着渐渐临近的日期,若喜若悲,最终还是只有一遍遍的看着那或多或少有些更改的参赛名单,没有什么信息,自然不会有所波澜。 从什么时候开始,打开的再不是POJ那奋斗了一两年的页面,尽管仍然带着湛蓝的背景,耀眼如明星,缺多了几分茫然,不知该做些什么。刷?不知有什么用。然
2013-11-07 22:36:47
1565
原创 ZOJ 3718 Diablo II
题意:K个技能,第i个技能满级Bi,加1级攻击力加Ci,加满后再额外增加Di攻击力。N件装备,第i件装备加Ai的攻击力,穿上它后会提升一些技能的等级1级(装备提升的等级不叠加)。现有X个技能点,Y个装备槽,问最大攻击力。(K题解:技能点最后再加,先穿装备,用二进制位压缩代表一个技能是否被装备提升,那么dp[mask][num]代表穿上num个装备,对mask这些技能提升一级的最大攻击力。然后对
2013-10-25 19:48:55
1182
原创 HDOJ 4582 DFS spanning tree
题意:n个点,m条边的无向图,通过DFS遍历,m条边中前面的n-1条边形成深度优先生成树,后面的自然就是形成环(没有自环)。问从DFS生成树中最少选择多少边,能够使得所有的环都至少有一条边在你选择的集合中。题解:考虑DFS生成树,必然没有横叉边(即一个孩子都另一个孩子的边,要不DFS就应该遍历过去),所有的环都是一个结点与它祖先结点的边形成的。那么这题做法就是进行一次DFS遍历,在回溯
2013-08-12 08:29:19
2151
原创 CodeForce#190 Div1
Problem A Ciel and Robot (数学)题意:机器人初始在(0,0),反复执行一个移动序列,问是否能够抵达(a,b)题解:找出机器人第一轮的所能到达的所有位置,然后根据最后一步到达与初始位置的偏移量(dx,dy)作为位移,看它第一轮到的所有位置(sx,sy)是否能找到一个非负整数n,满足sx+n*dx=a且sy+n*dy=b#include#include#inc
2013-07-13 18:20:22
2103
原创 CodeForce#191 Div2
POJ感觉刷的差不多了,剩下的题里面好多都是08年以前的陈题,参考意义已经不打了。然后根据队友推荐,开始做CF,CF还是不错的,有代码,有解题报告,有数据,很强大!这次做的是#191 Div2的题解:Problem A Flipping Game(枚举)题意:给你01序列,选出一段区间,把0变1,1变0,求最后最多有几个1.题解:作为第一题,数据也不是太大,可以直接暴力
2013-07-12 12:43:47
1146
原创 POJ 1721 CARDS
题意:第i个位置的牌是a[i],一次交换后第i个位置的牌变成a[a[i]]。已知某个序列经过m次交换的结果,问这个序列是啥题解:枚举找循环节res,然后输出第res-m%res次结果就是了,类似于逆元#include#include#includeusing namespace std;const int N=1005;int a[N][N],n;void GetNext(in
2013-07-10 10:56:07
1640
原创 POJ 2751 Saving Endeavour
题意:n个零件,需要经过两道工序,工序不能颠倒,且只能有一个零件在一道工序上加工,求最快时间。题解:贪心,推导公式然后排序即可。#include#include#includeusing namespace std;struct Data{ int a,b;}po[10005];bool comp(Data x,Data y){ return x.a+max
2013-07-08 16:29:32
1415
原创 POJ 3042 Grazing on the Run
题意:有n个草,牛初始位置在L,要吃光所有的草,其中牛每单位时间走一个单位,且每棵草每个时间都会枯萎1个单位,求吃到草的枯萎度之和最小是多少。题解:dp[i][j][k]代表区间[i,j]的草已经吃光了,当前在第k个位置时吃剩下的草还需要付出的代价。将已经吃的草对后面草的影响提前算出来,这样在搜索的时候就不需要考虑前面花费了多少时间了,也就是如果吃第一棵草的时间是t,那么最后吃所有的草时间都会
2013-07-07 21:38:56
1544
原创 POJ 3265 Problem Solving
题意:P个问题,雇佣相同的人去解决,每个人每月解决一道题,每个人解决问题的代价都分两次,解决问题当月给a[i],事后第二月给b[i],然后每个月有m的钱,问最快多久解决所有问题。(问题必须按照序号一个个解决)题解:dp[i][j][k]代表第i个月解决完前j件事还剩k元钱所需要在下一个月支付的最小价格,由于空间比较大,所以用交叉dp的方法去更新。#include#include#inc
2013-07-07 20:28:56
1184
原创 ACM学习小结
前段时间为自己队伍总结了一下算法方面的东西,最近又有学弟学妹问ACM学习的东西,借着选拔赛刚好结束,忽觉得为什么要单单为我们队总结算法,而不是将整个ACM的学习来个小结,于是,此文便诞生了。在谈及正题之前,我也先说下,ACM的学习人各有异,我的方法也不一定就适用于所有人,大家可以根据自己情况进行处理。另外,大家也可以去acmicpc.info那去找各种退役日志,包含很多人的学习方法。 先
2013-05-21 10:00:58
5288
原创 POJ 1722 SUBTRACT
题意:给定一个长度为n的数组(1≤n≤100),进行n-1此操作,每次操作为:选择某一个位置i,用a[i]-a[i+1]替换掉原来的数据a[i]以及a[i+1](数组下标从1开始),使得数组长度减一。现在要求一个操作序列,使得最后剩余的那个数恰好等于T.题解:执行n-1次操作后,最后得到的值实际上可以表示成这样:a1 - a2 [] a3 [] a4...... [] an,[]内
2013-05-21 09:57:31
1177
原创 POJ 3537 Crosses and Crosses
题意:有个2人玩的游戏在一个规模为1*n的棋盘上进行,每次一个人选择一个地方画上'X',一旦某个人画上X后出现了连续3个X,那么这个人就赢了。给你n(3≤n≤=2000)问谁会赢。题解:明显的博弈论,关键是确定SG函数。考虑到如果画上一个X,就会有临近区域不能画X,也就是下一个人能画X的区域就变了,那么问题可以转换为谁不能画X谁就输了。接着考虑每次画X的转移情况,最简单的就是画最左边的
2013-05-17 11:12:11
2149
1
原创 POJ 2443 Set Operation
题意:n个集合(集合中元素可以相同),每个集合c[i]个元素,q次询问,每次问是否存在一个集合含有x,y两个数。集合中元素取值为[1,10000]题解:对每个数建立它出现过的集合所对应的状态,用二进制表示,1代表出现在了当前集合,0代表没有出现。那么看一个数出现过的集合就可以用2^n的一个数表示,由于这个数很大(n#include#include#includeusing names
2013-05-17 09:34:35
1070
原创 POJ 1572 Automatic Editing
题意:对一个字符串进行n次操作,每次操作为将字符串中相应子串a转换为子串b,从最左开始进行,每次转换之后又从左开始,直至没有相应子串a题解:KMP,需要对next数组有一定认识,每次找到子串之后将其替换,然后模式串的匹配位置变到匹配串被替换位置之前一位就行了。#include#include#includeusing namespace std;int next[100];cha
2013-05-14 10:14:27
835
原创 POJ 1632 Vase collection
题意:n个瓶子,每个瓶子有形状颜色两种属性,且这两种属性都有36个类型,告诉你这些瓶子的两种属性的类型,求最大的k满足存在k*k个瓶子,使得这些瓶子的两种属性有k个类型,且覆盖了k*k个属性组合题解:state[a]是形状为a的覆盖的颜色的状态集(用二进制表示),state[a]&state[b]就是这两个形状都覆盖的颜色,如果这数的二进制位有大于等于2个1,就代表可以组成k=2的符合要求的答
2013-04-10 16:20:20
1518
原创 POJ 1687 Buggy Sat
题意:二维平面上一些点组成一个封闭图形,有一些点对之间还有连线,由此形成一些面,题目会告诉你所有的面的轮廓,求最外面的面的编号。题解:最外面的面就是面积最大的面,所以对每个面求一次面积,取最大的就是答案。#include#include#include#include#define max(a,b) (((a)>(b))?(a):(b))#define min(a,b) (((a
2013-04-10 12:19:03
1151
原创 POJ 1870 Bee Breeding
题意:这题图看不太清,大意就是给定蜂巢上两点,求他们的最短距离。题解:首先定然是建一个好一点的系,实际上也说不上好坏,能表示就行。我的系是向下走x+1,反之x-1,向右下走y+1,左上走y-1,对于给定数字,转换成坐标的话先讨论它是第几层,然后看它是这一层的第几个点,因此判断它是第几条边,再根据坐标系转换。转换完成后,增加x坐标,y坐标可以-1也可以不变,减少x坐标,y坐标可以+1也可以不变,
2013-04-08 18:01:14
1445
原创 POJ 1436 Horizontally Visible Segments
题意:给定n条竖直的线段,求有多少个三元组,使得这三条线段两两可见(可见的定义为这两条线段可以连一条水平线段而不与任意其他线段相交)题解:将线段按照x坐标排序,判断两个线段是否可见,就是将后一个线段向左投影能够在第一个线段上留下阴影。用线段树代表某个区间当前阴影代表谁,处理新线段即给那段区间赋值,并记录会覆盖哪些值就行。因为要考虑阴影投射在非整数点,且线段y坐标都是整数,所以线段树的大小要乘二
2013-04-08 16:09:10
1646
原创 POJ 3437 Tree Grafting
题意:给出一个树的中序遍历的上下情况,求这棵树的高度以及它转化为二叉树后的高度。题解:直接求树的高度比较简单,和求区间最大深度的算法一样,就是统计一下就行了;求二叉树的话,实际上这道题说了最多1w个结点,所以可以直接建一棵树,然后再深搜树形DP就行了。#include#include#includeusing namespace std;const int N=10000;cha
2013-04-01 17:04:20
1973
原创 POJ 2951 Cake Cutting
题意:给定一个w*h的蛋糕,将其分成m份,也就是切m-1刀(必须保证每次都将一块蛋糕切成两份,按照水平或者竖直),求最后m份中最大的那份的面积最小是多少。题解:记忆化搜索,dp[k][i][j]为将一块i*j的蛋糕切k刀的最大面积的最小值,枚举下一刀的横竖以及切的位置和其中一份的刀数。#include#include#includeusing namespace std;const
2013-03-26 17:37:29
1308
原创 POJ 3003 Spiderman’s workout
题意:蜘蛛侠爬墙锻炼,总共爬n次,能上能下,但最后必须落在地面,且中途不能爬到地下去。要按照最优策略即爬的最高点必须要尽可能低。题解:典型DP题,dp[i][j]代表第i步爬到j高度时所爬过的最高点,同时用pr[i][j]代表上一次的高度,状态转移就一加一减就行了,最后dfs输出结果就行。#include#include#includeusing namespace std;int
2013-03-26 17:08:43
1426
原创 POJ 1312 Numerically Speaking
题意:26进制与10进制互相转换。题解:JAVA的BigInteger偷渡之。import java.math.*;import java.util.HashMap;import java.util.Scanner;class Main{ static boolean isdigit(char x) { return x>='0'&&x<='9'; } static vo
2013-03-25 19:11:33
1212
原创 POJ 2373 Dividing the Path
题意:长度为L的区间,有N头牛有各自喜欢活动的区间(Si,Ei),喷水的喷头只能安装在整数点上,且它能喷到的半径在[A,B]之间,现在要求:用最少的喷水头不交叉的覆盖整个L,并且满足每头牛喜欢活动的区间里只有一个喷头再喷。题解:线段树优化DP,dp[i]代表喷完前i个地方所需要的最少喷头数,那么dp[i]=min(dp[j]+1),i-2b#include#include#includ
2013-03-25 16:50:21
2461
原创 POJ 3167 Cow Patterns
题意:给定长度为n和m的两个数字序列(数均小于等于25),用m去按照一定方式去匹配n,即:如果n中的区间[a,b]各数字的名次与m中各数字的名次完全一样,那么他们就是匹配的。问题:求所有的匹配个数及他们出现的首位置。题解:KMP的升级版,对KMP有一定了解后做这道题就比较容易了,由于区间不同后,名次就不同了,统计名次也比较麻烦,所以对于区间[a,b]中的一个数的名次,可以对应为这个数之前比它小
2013-03-19 20:08:58
3349
原创 POJ 1868 Antiarithmetic?
题意:给定一个长为n的(0,1,2....n-1)的排列,问是否存在等差数列。题解:可以记录每个数出现的位置pos[i],枚举等差数列中间项以及公差,判断(pos[i+d]-pos[i])*(pos[i-d]-pos[i])是否小于0。#include#includeusing namespace std;const int N=10005;int pos[N];int main
2013-03-18 16:09:45
1219
原创 不自损八百,何以伤敌一千——ACM两年总结
既然金华区域赛已结,剩下的泰国赛区也不过是去玩玩而已,那么,也是时候做一个总结了。实际上距上一年度总结,也就半年有余,不过,ACM或许应该以每一次的比赛作为一个时段的终结点,亦是下一个时段的起始点,更何况,刚比完赛之后,或许是最容易堕落之时。 纵观过去一年,也就参加了半年前金华邀请赛,刚过去不久的长春区域赛以及金华区域赛而已,第一场铜牌(貌似还在铜牌中间),第二场由于打星,什么都没有,但
2013-03-17 20:04:35
2968
1
原创 你若是天才,我便是疯子————ACM一年总结
自金华邀请赛结束后便一直有写这总结的想法了,不过当时却没想那么远,只想做一下个小汇总,让自己明白自己在哪里有所不足,还能继续前进。校赛过后,又隔了一个星期,终于开始提笔了,借着world final 结束之时,我想为自己的ACM之路做个更加彻底的全面的总结。 有不少人问过我是否以前弄过计算机竞赛,我也承认,我弄过,大概一年,就在高二的时候吧,但是和我同读高中的同学都会知道,所谓的一
2013-03-17 20:02:22
4737
原创 POJ 1821 Fence
题意:连续的N块木板,有K个粉刷匠,分别坐在第Si块木板前,每个粉刷匠不能移动位置,且最多能粉刷连续的Li块木板(必须包括Si或者不要该粉刷匠),每个粉刷匠粉刷一块木板可以得Pi块钱,求总共的最大利益。题解:dp[i][j]代表前i个粉刷匠粉刷完成至多前j个木板的最大利益,状态转移有三种:1、不需要第i个粉刷匠,即前i-1个粉刷匠完成前j个木板的工作:dp[i][j]=dp[i-1][j]
2013-03-17 19:50:16
2688
1
原创 POJ 1188 Gleaming the Cubes
题意:给定n个正方体,求他们的交体积。题解:知道两个长方体相交的算法就能很简单的解出这道题,实际上两个长方体交,就是取x1,y1,z1各自的最大值,以及x2,y2,z2各自的最小值就是了。#include#include#includeusing namespace std;struct data{ int x1,y1,z1; int x2,y2,z2;
2013-03-12 17:39:17
1360
原创 POJ 2355 Railway tickets
题意:在一条铁路上有n个站点,要从a到b。火车票有3种,距离题解:典型dp,dp[i]代表到达第i个站点的最小花费,然后用dp[i]更新从i出发能到达的站点,dp[j]=min(dp[j],dp[i]+price[i,j])#include#include#includeusing namespace std;int dp[10005],ds[10005];int main()
2013-03-11 18:36:47
1180
原创 POJ 2351 Time Zones
题意:给出一个时区当前时间,求另一个时区当前时间。题解:模拟,用好数据结构储存时间就行了。#include#include#include#includeusing namespace std;struct Data{ int h,m; Data(int _h,int _m){h=_h;m=_m;} Data(){};};struct Zone{
2013-03-11 17:35:06
1071
原创 POJ 2888 Magic Bracelet
题意:用m种不同颜色的珠子连成一条长为n的项链,其中,有k对珠子不能相邻,问总共有多少种(mod 9973)n题解:组合计数也就burning和polya了,这题用的是Burning Side。考虑在一种置换f下的稳定核方法,由于只有旋转对称,如果是旋转k个珠子,那么稳定核的循环节也就是gcd(n,k)=r,枚举k的话是不现实的,那么只有枚举r,即n的所有约数。gcd(n,k)=r,即gc
2013-03-09 18:49:15
2065
原创 POJ 1739 Tony's Tour
题意:给定n*m的带障碍格子图,求从左下角走到右下角的哈密顿路的总数。题解:更进一步的插头DP,主要解法可以参照我的上篇日志:http://blog.youkuaiyun.com/tmeteorj/article/details/8635090。改动之处在于单向插头,上篇中用01和10分别代表左右括号,这道题则需要加11作为单向括号(因为它在括号序列状态中是没有与之匹配的括号的)#include
2013-03-06 15:56:39
640
原创 Ural 1519 Formula 1
题意:找出N*M大小的带障碍格子的哈密顿回路总数。题解:插头DP进阶题,也是入门题,插头DP的详解还是看《基于连通性状态压缩的动态规划问题》论文吧。12列共13个插头,一共有3种插头,3进制可解,但用位操作处理2进制更容易,所以设成4进制,2位代表1个插头的状态,用括号表示法即 00:无插头;01:'(';10:‘)’,26位长度的状态是开不了的,所以用hash表进行优化处理,我用一个
2013-03-04 19:13:55
984
原创 HDOJ 1693
题意:给定N*M的矩阵,里面有些有树,有些没树(用0表示),问有多少种方法,通过任意个不交叉环路把树全连起来(就是哈密顿回路或者多个哈密顿回路覆盖所有非0数)题解:插头DP入门题,实际上,感觉插头DP也就是状态压缩DP的一种特例而已。若要学插头DP,请参见《基于连通性状态压缩的动态规划问题》,看了它,也就知道一些基本概念和解题思路了。这道题我的方法是dp[i][j][st]代表第i行格子,
2013-02-26 17:50:18
524
原创 POJ 3685
题意:N*N的矩阵,第i行第j列的元素为i*i+j*j+10^5*i-10^5*j+i*j,求第M大的数。题解:二分枚举答案,算出整个矩阵中比它大的元素个数以及比它小的元素个数(枚举j,二分枚举i)#include#include#include#includeusing namespace std;typedef long long LL;const LL TP=100000
2013-01-25 16:58:51
1077
树状数组另一类用法(C++源码)
2014-01-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人