自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

llin-黎辰

虽然弱,却执着

  • 博客(58)
  • 资源 (5)
  • 收藏
  • 关注

原创 hdu 5167 暴力

因为斐波那契数增长速度很快,暴力求解即可#include #include #include #include #include #include #define MAX 1000using namespace std;typedef long long LL;LL f[MAX];map mp;void init ( ){ queue q; f

2015-01-31 23:28:24 883

原创 hdu 1505 1506的加强版

跟1506思路一致1506AC代码:#include #include #include #include #define MAX 1007using namespace std;int t,n,m;bool a[MAX][MAX];int h[MAX];int lef[MAX],rig[MAX];int ans;int main ( ){ sca

2015-01-31 21:27:25 420

原创 hdu 1506 并查集的思想

就是利用rig和lef数组记录左边连续的比自身高的最远位置,然后统计,每次只要找到一个中断点则查询结束,避免了重复运算,最坏复杂度是n^2但平均复杂度,但对于一般的数据还是有很优秀的复杂度的#include #include #include #include #define MAX 100007using namespace std;typedef long long LL;

2015-01-31 20:10:49 523

原创 hdu 1003 前缀和的应用

输出太恶心不解释......思路很简单#include #include #include #include #include #include #define MAX 100007using namespace std;int lef,rig;int ans;int sum,loc;int main ( ){ int t,n,a; scanf (

2015-01-31 19:12:50 810

原创 hdu 1864 背包问题

这道题比较难的就是对读入和特殊条件的判断,做完之后就是个背包..注意细节#include #include #include #include #include #define MAX 30007using namespace std;double sum;int n,m;int dp[3000050];int main ( ){ while ( ~sc

2015-01-31 18:19:02 372

原创 hdu 2955 背包问题

因为要获取最大利益,概率为浮点型,而二者又满足背包关系,但浮点型不能作为容量,所以我们对换二者花费和收益的关系,再通过扫描一遍数组获取最终结果dp[i] = max ( dp[i] , dp[i-c[j]] * p[j] )dp记录的是获得利益i不被抓到的最大概率,因为只要有一次被抓到就算作抓到,而所有次数全未被抓到才算作未抓到,所以不被抓到的概率易求且有明显的递推关系;最开始对d

2015-01-31 15:58:42 465

原创 hdu 4597 dp+前缀和+记忆化搜索

dp[i][i+len1][j][j+len2] = sum[i][len1+i][j][j+len2] -min { dp[i+1][i+len1][j][j+len2] , dp[i][i+len1-1][j][j+len2] , dp[i][i+len1][j+1][j+len2],dp[i][i+len1][j][j+len2-1]}因为每个人都足够聪明,所以每个人作为先手时都会保证自

2015-01-31 13:12:08 463

原创 hdu 4283 区间dp+对出栈顺序的理解+前缀和

这道题主要考的是对出栈顺序的理解,如果第i个人要第k个上台的话,那么[2,k]个人一定在它之前上台,[k+1,n]个人在它之后上台,这时由栈的性质决定的,人的上台顺序,也就是出栈顺序是不会影响当前结果的,所以这就要用到区间dp的思想的,既然可以以这种方式将区间分割到1,那么我们就可以进行动态规划,有一个处理就是对要记录前缀和,这样才能在调整区间首位元素,直接通过o(1)的加减操作维护区间的值#

2015-01-31 10:53:36 474

原创 hdu 2476 区间dp

涉及到两个过程,先是要计算出把一个空串转换成b串的最小花费dp[i][j] = min ( dp[i][j-1] + 1 , dp[i][k] + dp[k+1][j](b[j]==b[k] );第一种情况就是前面涂好的情况下直接对j刷字符第二种情况就是当j和k处的字符相等时,那么我们可以将k到j刷一遍,那么花费就是k之前的刷一遍的代价和k+1到j-1之间刷一遍的代价之和,因为j处和k

2015-01-31 00:39:37 431

原创 hdu 1205 鸽巢原理

运用鸽巢原理,假设最多的糖果有Max个,那么必须要有max-1个其他种类的糖果才能吃完,如果其他种类的糖果多于max-1个,那么至少要有一个种糖果存在max+1个,才会出现当前状态无解,而这种状况下又与最多糖果数为max矛盾,所以要满足有解的充要条件是max-1 #include #include #include #include #include using namespace

2015-01-30 22:13:17 575

原创 hdu 搜索+剪枝

剪枝是c[i] #include #include #include #include #define MAX 7using namespace std;int a[MAX][MAX];int c[MAX*MAX];bool flag = false;int t,n,m,k;void dfs ( int cnt = 0 ){ // cout << cnt <<

2015-01-30 18:43:42 474

原创 hdu 5112 排序+求最大水题

#include #include #include #include #define MAX 10007using namespace std;struct record{ int t,x; bool operator < ( const record& a ) const { return t < a.t; }}r[MAX]

2015-01-30 17:21:20 519

原创 hdu 5115 区间dp

dp[i][j]代表消灭这个区间中的狼消耗的最小代价转移过程中枚举每一个点作为最后一个杀死点的最小代价代码如下:#include #include #include #include #define MAX 207using namespace std;int dp[MAX][MAX];int a[MAX];int b[MAX];int main ( ){

2015-01-30 16:50:08 436

原创 hdu 5119 循环数组+简单dp

dp[i][j],在第i位上数值为j的方法数,没什么好说的,就是数据量大要用循环数组存#include #include #include #include #define MAX 2000000using namespace std;typedef long long LL;LL dp[2][MAX+7];int a[MAX+7]; int n,m;int ma

2015-01-30 01:11:56 500

原创 hdu 5120 圆和圆交面积模板

简单的集合题...关键是板子....#include #include #include #include #include #define repf(i,a,b) for(int i=(a);iusing namespace std;typedef long long LL;const double PI = 3.141592653;/*s

2015-01-30 00:21:03 507

转载 poj 2546 圆和圆相交的面积交模板

#include #include #include #include #include #define repf(i,a,b) for(int i=(a);i<=(b);i++)using namespace std;typedef long long LL;const double PI = 3.141592653;struct Round{ double x

2015-01-29 23:07:54 559

原创 hdu 5122

因为只允许向后挪一种操作,所有可以倒序操作,如果当前元素比后面的元素都小,那么它就不需要后挪,如果每次都向后比较n^2的复杂度,肯定超时,所以我们可以用一个变量记录当前处理过元素中的最小值,只和最小值比较即可#include #include #include #include #define MAX 3000007using namespace std;int num[MAX

2015-01-29 22:28:30 481

原创 hdu 5123 水题

#include #include #include #include #define MAX 107using namespace std;int vote[MAX];int t,n,a;int main ( ){ scanf ( "%d" , &t ); while ( t-- ) { memset ( vote , 0 , si

2015-01-29 20:31:55 486

原创 hdu 5125 二分nlogn求最长上升子序列(LIS)+dp

首先dp[i][j],i代表当前的位置,j代表已经消耗了多少能量,转移方程很好推dp[i][j] = max ( dp[k][j] + 1 , dp[k][j-1] + 1 )  如果a[k][m]那么直接做是n^3,会超时,那么我们可以把求最长子序列优化到nlogn,比较常见的是应用树状数组下面我提供一个二分求取的方法,就用数组d[i][m],记录长度为i且消耗能量为m时的最小的序列

2015-01-29 20:03:20 587

转载 最长上升子序列nlogn算法

这题目是经典的DP题目,也可叫作LIS(Longest Increasing Subsequence)最长上升子序列 或者 最长不下降子序列。很基础的题目,有两种算法,复杂度分别为O(n*logn)和O(n^2) 。A.O(n^2)算法分析如下: (a[1]...a[n] 存的都是输入的数) 1、对于a[n]来说,由于它是最后一个数,所以当从a[n]开始查找时,只存在长度为

2015-01-29 15:50:21 527

原创 hdu 5124 离散化+头尾标记+快速读入+STL----map ,set

题目是要判断被覆盖最多次的点的覆盖次数,我们可以将一条直线的首点标记为1,尾点+1标记为-1,那么如果一个点在这条直线中,那么这点的前缀和中就会有这条直线贡献的值1,否则不会有,我们只需要去掉重点离散化后做好标记处理即可#include #include #include #include #include #include #define MAX 100007

2015-01-29 15:34:57 485

原创 poj 2282 数位统计

数位统计其实就是将某一位假定为某一个数字情况下统计所有的组合情况然后求和,在我的博客中有详细的讲解0的做法的博客poj 3286 统计0下面是本题的代码,比较容易懂:注意一个trick就是n,m大小关系是不确定的#include #include #include #include using namespace std;typedef long long LL;

2015-01-29 15:29:17 610

转载 安卓开发笔记(五)declare-styleable中format详解

我们在做项目的时候,由于android自带的属性不能满足需求,android提供了自定义属性的方法,其中的format是做什么用的?以及如何使用它?下面列出一些常用的。1. reference:参考某一资源ID。    (1)属性定义:                                               (2)属性使用:            

2015-01-29 13:58:05 672

原创 poj 3252 数位dp (数位统计)

就是统计每个数不算本身的round数,具体解法如下前前后后做过三遍,每一次都wa了好多次.........dp解法:#include #include #include #include #define MAX 40using namespace std;typedef int LL;LL dp[MAX][MAX];void pre ( ){ dp

2015-01-29 12:37:19 607

原创 poj 3286 数位统计

要统计在两个数之间的数位上有0的个数的总数,所以可以在查询出0到任何一个数之间的数的数位0的总和,在通过sum[n]-sum[m-1]获得所求的值难点在于统计,我们可以锁定某一位为0时共有多少中情况,也就是该位是0会给最终结果贡献多少,当某一位为0时,相对于它的高位的看成一个数且不能为0,当该位数的员数大于0时,那么相对于该位的低位组成的数每一位可以是任意数字.利用排列组合的乘法原则,可以得到

2015-01-28 23:22:55 581

原创 poj 线段相交+暴力枚举

数据水...没啥好讲的 模板+暴力秒的#include #include #include #include #include #include #define eps 1e-8#define MAX 100007using namespace std;struct Point{    double x,y;    Point():x(0

2015-01-28 21:08:36 415

原创 poj 1556 线段相交+最短路

先利用线段相交,判断可以建立的边,然后求存最短路即可#include #include #include #include #include #include #define eps 1e-6#define MAX 10007using namespace std;int n;struct Point { double x , y;}point[MAX][

2015-01-28 18:26:20 522

原创 poj 1269 判断两直线的关系并求交点

主要是利用向量的叉积,求交点的时候就是解二元一次方程组,没什么难度,采用斜率法算的因为精度损失过大,可能导致wrong#include #include #include #include #include #define eps 1e-8using namespace std;struct Point{ double x,y; Point():x(0),y

2015-01-28 13:22:27 490

原创 poj 3304 判断线段与直线交

这道题是求是否存在一条直线导致所有给定线段在这条直线上的投影是否有共同的交点,那么从这点做该条直线的垂线,一定能够交到所有的线段(根据投影的性质得到),所以问题转化成了能否找到一条直线穿过所有的线段,我们能够通过叉积判断一条线段和直线是否相交,那么我们可以枚举每两个端点组成的直线,因为凡是满足穿过所有线段的直线,一定可以通过旋转得到一个正好和至少有两个端点在直线上的临界状态.注意判断端点距离极

2015-01-27 22:47:53 486

原创 poj 2318 叉积解点和直线的关系

要判断点的位置,就是利用二分法判断和分界线的相对位置,最终确定点的所在块,利用数组,判断点的位置时利用叉积算有方向的面积.#include #include #include #include #include //#include #define MAX 5007using namespace std;struct Point { int x , y;

2015-01-27 20:36:26 421

转载 acm 计算几何题目集合

//第一期计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板很重要,模板必须高度可靠。3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板。如果代码一片混乱,那么会严重影响做题正确率。4.注意精度控制。5.能用整数的地方尽量用整数,要想到扩大数据的方法(扩大一倍,或扩大sqrt2)。因为整数不用考

2015-01-27 14:36:43 1306

原创 poj 1265 皮克定理+多边形面积+边上点的数量的求取

计算机几何主要是结论:1.皮克定理: 设sum_e是边上整点的个数,可以通过gcd求取(不算起点)的整点数,设sum_i为内部的多边形内部的整点,多边形的面积就是 area = sum_i +  sum_e/2 - 1 2 . 多边形面积:可以将多边形拆分为多个三角形,三角形可以利用向量的叉积求取面积,即x1y2 -x2y1的一半#include #include #inc

2015-01-27 13:39:41 647

转载 安卓开发笔记(四)onTouchEvent方法的使用

手机屏幕事件的处理方法onTouchEvent。该方法在View类中的定义,并且所有的View子类全部重写了该方法,应用程序可以通过该方法处理手机屏幕的触摸事件。该方法的签名如下所示。public boolean onTouchEvent(MotionEvent event) 参数event:参数event为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息,例如触摸的位

2015-01-27 05:41:23 722

转载 安卓开发笔记(三)android 相对布局属性

AndroidRelativeLayout布局 android:layout_marginTop="25dip" //顶部距离 android:gravity="left" //空间布局位置 android:layout_marginLeft="15dip //距离左边距 // 相对于给定ID控件 android:layout_above 将该控件的底部置于给定

2015-01-27 03:40:23 509

原创 hdu 4912 贪心+最近公共祖先

先对所有的路径求取lca,然后按照lca从大到小的顺序选取路径若一条路径p1的lca(p1) 的深度大于p2的lca(p2),那么若p1和p2出现冲突,那么p1一定包含p2的lca(p2),那么p2只可能与以lca(p2)为子树中的路径冲突,而p1要冲突的范围更大,两个的贡献同样是1,如果存在一棵比lca(p1)和lca(p2)深度都大的子树中的子树中路径,如果它和p1不冲突,却和p2冲突,那

2015-01-27 00:09:08 508

原创 hdu 2874 森林中处理最近公共祖先问题

注意两个问题,第一个是在森林中,所以需要判断两个点是否是在一棵树中,第二个是求取路径时可以借助到根的路径长度来求取,类似于前缀和的一种优化#include #include #include #include #include #define MAX 20007using namespace std;int n , m , c , u , v , w ;struct{

2015-01-26 19:18:57 474

转载 安卓开发笔记(二) Android使用AttributeSet自定义控件的方法

在xml 文件里定义控件的属性,我们已经习惯了android:attrs="" ,那么我们能不能定义自己的属性能,比如:test:attrs="" 呢?答案是肯定的. 好了我就不卖关子了,直接进入主题。大致以下步骤: 一、 在res/values 文件下定义一个attrs.xml 文件.代码如下: 一、在res/values文件下定义一个attrs.xml文件.代码如下:

2015-01-26 15:47:40 1191

原创 hdu 2586 最近公共祖先

用数组记录每个定点的父亲,和到父亲的边的权值,利用在线的lca求解即可#include #include #include #include #define MAX 40007using namespace std;typedef long long LL;struct { int v , next , w;}e[MAX<<1];int head[MAX];

2015-01-26 12:25:05 463

原创 hdu 5163 前缀和+枚举

#include #include #include #include #define MAX 100007using namespace std;long long sum[MAX],ans;int main ( ){ int t,n,m,start,end,begin; scanf ( "%d" , &t ); while ( t-- ) { scanf (

2015-01-26 11:00:21 497

原创 hdu 5162 水题

#include #include #include #include using namespace std;struct Node { int num; int index;}a[5];bool cmp ( Node a , Node b ){ return a.num > b.num;} int main ( ){ int t;

2015-01-26 10:28:33 572

Java PathFinder-jpf-core

一个基于符号执行的Java执行模型路径查找器

2016-05-14

apache-commons-logging

apache-commons-logging

2016-05-01

apache-commons-digester

2016-05-01

vim-配色方案

比较大众的配色方案,欢迎大家下载,如果不好用可以评论中指出,我会修改

2014-12-15

api-demos-source codes

适合初学者看,方便sdk中不带源码的人群

2014-12-13

空空如也

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

TA关注的人

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