自定义博客皮肤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-黎辰

虽然弱,却执着

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

原创 图像处理(二)laplacian锐化

图像处理第二次作业实验材料原图: laplacian的filter的类型fspecial('laplacian', 0.2) %默认值系数: 默认值0.2拉普拉斯-高斯金字塔的层数: 4实验一:用 3⋅33 \cdot 3 的laplacian filter锐化原图代码如下:clc;%清空命令窗口的内容clear;%清空所有使用的资源close all;%关闭所有文件fi

2015-10-28 21:00:26 3430

原创 图像处理(一)bicubic解释推导

bicubic的解释bicubic interpolation解释cubic的推倒: 如果一个函数f(x)f(x)在x=0和x=1的位置上的函数值已知,那么这个函数在闭区间[0,1]上的值是可以被插入的,利用一个读度数为3的多项式去描述这条曲线,那么: 设 f(x)=ax3+bx2+cx+d(1)设 \ f(x) = ax^3+bx^2+c^x+d \tag{1} 对这个函数求导,得

2015-10-28 20:51:50 21859 3

原创 Shell实现(四) 执行命令的实现(包含管道的实现)

基本思路:首先是执行命令的实现 通过exec族函数实现的然后是管道的实现,有两种实现方案,一种是调用pipe函数,但是既然可以自己写一个,为什么要记这么一个傻逼的函数呢? 调用pipe函数很无脑,需要一个规模为2的文件描述符数组,用来表示向管道中写的流和从管道中读的流自己设计一个也很无脑,建立一个文件作为管道的载体,然后方法和上面的类似。具体实现:第一种方案是代码比较简单的自己实现的p

2015-10-24 23:03:34 6228 1

原创 Shell实现(三)读取命令的实现

基本思路读取命令我采取的读取整个字符串后再进行分段和分析: 首先是parse_token将字符串通过分号为分隔,得到每组命令,每组命令当中只包含管道,输入输出重定向和单条命令及其参数。然后是parse_group将每段得到的字符串通过管道为分隔,得到只包含参数,输入输出重定向和单条命令的更加简单的命令串最后是parse_command分析单条指令,得到输入输出重定向的文件流和命令的属性还有命

2015-10-24 22:37:37 2044 1

原创 shell实现(二) 打印提示信息的实现

提示信息的内容提示信息包括当前的工作目录,操作的用户,是否为根用户等信息的呈现… 没有什么好说的,就是几行很简单的代码,难度相当于输出一个hello world !!!#include "lshell.h"/*************************************uid_t getuid();//获得当期用户的用户idvoid getcwd( char* , int ) /

2015-10-24 22:01:50 2530

原创 shell实现(一)设计接口和结构体

1.函数库的引用#include <sys/stat.h>//获得文件的属性的函数库#include <sys/types.h>//提供基本的系统数据类型,如CPU时钟周期等#include <sys/wait.h>//调用系统的阻塞等待函数#include <stdio.h>//C语言输入输出库#include <stdlib.h>//C语言标准库#include <errno.h>//

2015-10-24 21:48:36 3872 1

原创 UNIX编程(一) C语言实现一个模仿bash的shell实现

前言:作为天津大学软件学院的操作系统课程的一个简单的UNIX编程的需作业,需要的知识并不多。 - C语言基础 - 宏定义相关知识 - POSIX代码库 - READLINE代码库(选)基本功能:1.显示类似于类UNIX操作系统控制台的提示信息 当前工作目录当前用户信息2.指令分析 分析指令可指令的参数实现管道实现输入输出重定向 通过&实现后台运行 通过”(“和”)”实现su

2015-10-23 17:41:58 4742 6

原创 hdu 3727 Jewel(主席树学习第四弹)

题目链接:hdu 3727题目大意:给出n个操作,插入一个数,或者查询: - 查询区间第k大 - 查询某个数的排名 - 查询整体第k大 最后问三种查询的结果之和。题目分析:首先对数进行离散化然后对数字建立主席树,第k大的做法详见我的主席树学习第一弹查询某个数的排名,树状数组直接做就好了,记录每个点是否出现过,然后找到sum(x)就是前缀一共有多少个数,也就是当前数的排名。 AC代码:#

2015-10-13 21:11:27 1580

原创 hdu 4866 Shooting(主席树学习第三弹)

题目链接:hdu 4866题目大意:给出n条直线,每次查询给出一个x,求这个x位置上方的前k个线段的高度之和。题目分析:首先对高度进行离散化建立主席树,将每条直线对应为两个点,左端点+1,右端点-1,然后每个点建一个线段树,然后每次查询对于一个x,只需要二分查找找到时序点,然后找到线段数量为k的最左的前缀即可。 AC代码:#include <stdio.h>#include <string.h>

2015-10-12 19:05:36 1385

原创 hdu 4605 Magic Ball Game(主席树学习第二弹)

题目链接:hdu 4605题目大意:给出一棵二叉树,每个点具有权值,给出q次查询,每次查询给出一个X,找到到达点v的概率(表示为7x/2y7^x/2^y),行走规则为,若X>w[u],那么走到左孩子和右孩子的概率分别是1/2,X题目分析:因为没有强制在线,所以树状数组也是可以做的,大致思路如下: 首先我们要对所有出现的数进行离散化,因为包括查询在内数的个数不会超过10510^5。然后对数建立两

2015-10-11 17:40:58 1029

原创 poj 2104 K-th Number (主席树学习第一弹)

题目链接:poj 2104题目大意:给出n个数,询问m次,每次询问在区间[l,r]里的第k大的树。题目分析:其实是可以直接划分树搞的,但是为了学习主席树,写了一发,发现代码量更少更简洁。首先将数字离散化,然后对数字进行建树,然后按照原顺序对主席树进行修改,也就是将数位对应到时序上,那么也就是每次将查询对应到就是查找时序在找到r时序的线段树和l时序的线段树的差,每次向下深入时,就是如果左子树的数的

2015-10-10 22:20:53 1239

原创 codeforces 494B B. Obsessive String(dp)

题目链接:codeforces 494B题目大意:给出两个字符串,问第一个字符串由多少种方法提取出一些子串使这些子串中都包含t模式串。题目分析:定义状态dp[i]表示前i个字符由多少种方法得到符合要求的字符串组。dp[i]=dp[i−1]+∑j=0l−1dp[j]+ldp[i] = dp[i-1] + \sum_{j=0}^{l-1}dp[j] + l解释: 首先dp[i-1]代表的是不重新

2015-10-07 10:43:34 2860

原创 codeforces 486D D. Valid Sets(树形dp)

题目链接:codeforces 486D题目大意:给出一棵树,求这棵树的满足最大点与最小点之差小于d的连通子图的个数。题目分析:因为涉及到图中的最大点和最小点,所以我们先枚举一个点作为最大点,然后搜比它小的与它连通的点进行dp对于每个与它相邻不比它大的点有两种情况,不选这个点的话,那么只有一种情况,因为所选的子图必须是连通的,如果不选这个点,那么它的子树中的点都不选,如果选这个点,那么递归地考虑

2015-10-06 19:01:11 2028

原创 codeforces 372B B. Counting Rectangles is Fun(暴力)

题目链接:codeforces 372B题目大意:给出一个01矩阵,每次询问给出一个范围,问这个范围当中的全0矩阵的个数。题目分析:首先做一个预处理,处理出sum[i][j][k][t]也就是在以(i,j)为左上角的矩阵中以(k,t)为右下角能够得到的阶梯的最大面积。(因为阶梯状能够保证每个点都可以作为左上角得到一个矩形)暴力求取即可然后每次查询,枚举右下角,然后求和即可。 AC代码:#inc

2015-10-06 16:10:15 992

原创 codeforces 402D D. Upgrading Array(dp+数论)

题目链接:codeforces 402D题目大意:给出一个数列,可以进行一种操作将某一个前缀除去他们的gcd,有一个函数f(x),f(1) = 0 , f(x) = f(x/p)+1,f(x) = f(x/p)-1(p是坏素数)问 ∑i≤nf(a[i])\sum_{i \leq n} f(a[i] )的最大值题目分析:首先根据那个递推式我们知道结果就是每个数的f(x)就是它的质因数当中的好素数的个

2015-10-06 14:22:31 1932

原创 codeforces 432D D . Prefixes and Suffixes(后缀数组)

题目链接:codeforces 432D题目大意:给出一个字符串,求有多少种长度的前缀和后缀相等,并且得到的这个子串在原字符串中出现的次数。题目分析:首先利用后缀数组处理出sa[i]代表排名第i位的后缀的起始位置处理出rank[i]代表第i个位置起始的后缀的rank处理出height[i]代表排名第i位的和排名i-1位的公共前缀的长度。那么我们要找后缀和前缀相等的就是找到rank[0],然后

2015-10-06 10:08:49 2063

原创 codeforces 571B B. Minimization(dp)

题目链接:codeforces 571B题目大意:给出一个序列,可以任意调整序列的顺序,使得给出的式子的值最小 ∑k=1n−k|ai−ai+k|\sum_{k=1}^{n-k} | a_i - a_{i+k}|题目分析:我们知道通过递增k可以得到一条链,那么我们就能够得到n%k条长度为n/k+1的链,得到k-n%k条长度为n/k的链,因为链上相邻的元素都会有一个差,这个差之和是an−a1a_n-

2015-10-05 21:43:02 2838

原创 codeforces 583B B. Once Again...(dp)

题目链接:codeforces 583B题目大意:给出一个序列,是由一个长度为n的序列复制T次得到的,问最长子序列的长度。题目分析:我们可以暴力的做n*n内的部分,得到这部分的最长不降子序列。我们可以知道如果通过选取递减的可以得到更好的结果,那么在这之中一定已经选过,就算每次下降都能得到更好的结果,那么n次下降也能保证后面添加的全部都是只加入相同的元素,所以我们找到出现次数最多的元素,然后加入这

2015-10-05 20:07:19 2049

原创 codeforces 487B B. Strip(rmq+线段树+二分)

题目链接:codeforces 487B题目大意:给出一个序列,要把序列划分成段,每一段最少有L个元素,段中的最大元素和最小元素之差不大于s,问划分的段的最少的数量是多少。题目分析:首先用rmq维护区间最大值和区间最小值。然后按顺序扫描数组,线段树维护的数组,每个记录当前点作为最后一个点的前i个点划分的最小的段数,那么每次更新就是二分找到可以转移到我的最远距离,然后再选取与我距离大于l的那部分,

2015-10-05 16:13:39 1576

原创 codeforces 351B B. Jeff and Furik(概率)

题目链接:codeforces 351B题目大意:给出一个游戏,先手选择一对相邻的数交换位置,后手随机找一对数,然后掷硬币决定是否交换,如果不能交换,那么就重新找。问大致序列有序的采取最优策略的布数的期望。题目分析:定义dp[i]表示减少i个逆序对的步数的期望。dp[i]=1+1+dp[i−2]⋅0.5+dp[i−1+1]]⋅0.5dp[i] = 1+1 + dp[i-2] \cdot 0.5

2015-10-05 11:34:10 1604

原创 codeforces 245H H. Queries for Number of Palindromes(区间dp)

题目链接:codeforces 245H题目大意:给出一个字符串,询问任意区间内的回文子串的个数。题目分析:定义isPar[i][j]表示区间字符串[i,j]是否是回文,可以通过isPar[i+1][j-1]递推得到。定义dp[i][j]表示及区间[i,j]内的回文子串的个数,转移方程如下:dp[i][j]=dp[i+1][j]+dp[i][j−1]−dp[i+1][j−1]+isPar[i][

2015-10-05 09:44:49 1340

原创 codeforces 158E. Phone Talks(dp)

题目链接:codeforces 158E题目大意:给出一些电话,有打进来的时间和持续的时间,如果人在打电话,那么新打进来的电话入队,如果人没有打电话,那么人必须立即接电话,或者选择一次放弃的机会,问这个最多有多长的连续的空闲的时间。题目分析:定义状态dp[i][j]表示接到第i个电话在放弃j次的情况下最少需要多长时间。转移方程很简单:dp[i][j]=min(max(dp[i−1][j]+di,

2015-10-04 20:37:36 1458 3

原创 codeforces 163A A. Substring and Subsequence(dp)

题目链接:codeforces 163A题目大意:给出两个字符串,求第一个字符串的子串和第二个字符串的子序列相等的个数。题目分析:定义状态dp[i][j]表示s的子串以i结尾,t的子序列以j结尾的相等的对数。转移方程很简单,就是当某一位上两个字符相等的时候,dp[i][j]=∑k<jdp[i−1][k]dp[i][j] = \sum_{k<j} dp[i-1][k] AC代码:#include

2015-10-04 19:13:29 998

原创 codeforces 107B B. Basketball Team(概率)

题目链接:codeforces 107B题目大意:给出n个指标,有m个部门,每个部门推举了一些人,问至少存在一个h部门的人的情况下的概率。题目分析:逆向思维,只需要考虑不存在h部门的人的概率,也就是1−Cn−1sum−sh−1Cn−1sum−11 - \frac{C_{sum-s_h-1}^{n-1}}{C_{sum-1}^{n-1}},因为分母部分相等,所以可以直接消去。AC代码:#includ

2015-10-04 18:37:40 598

原创 codeforces 22B B. Bargaining Table(dp)

题目链接:codeforces 22B题目大意:给出一个矩阵,求周长最大的矩形的周长题目分析:求出每个点为底的最大的高度(0),然后枚举右下角,再枚举矩形的高度,然后算取长度,进而算取周长即可。AC代码:#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#define MAX 30using n

2015-10-04 16:27:50 1331

原创 codeforces 358D D. Dima and Hares(dp)

题目分析:codeoforces 358D题目大意:给出n个数,每个数取走的贡献与相邻的数有关,如果取这个数的时候,左右的数都还没被取,那么权值为a,如果左右两个数有一个被取走了,那么权值为b,如果左右两个数都被取走了,那么权值为c,求取取走全部数的最大值。题目分析:定义状态: dp[i][1][0]表示选第i时,相邻的数有一个被取走,这个数在当前数左侧。dp[i][1][1]表示选第i时,相

2015-10-04 15:29:03 1552

原创 codeforces 366C C. Dima and Salad(dp)

题目链接:codeforces 366C题目大意:给出n个物品,有两个属性,问最后第一个属性的总和是第二个属性的k倍的时候,第一个属性最大是多少。题目分析:我们将物品做一个变形,重量为a[i]-b[i]*k,收益是a,那么我们只需要对重量为正的做一遍背包,对质量为负的取绝对值做一遍背包,然后重量相等的背包的收益之和就是当前重量下的最大收益. AC代码:#include <iostream>#in

2015-10-04 09:41:58 2083 1

原创 codeforces 337D D. Book of Evil(树形dp)

题目链接:codeforces 337D题目大意:给出一棵树,给出感染物的感染范围,给出一些已经确定被感染的点,问感染物可能放置的点的个数。题目分析:定义状态dp[i]代表某个点到达离它最远的确定的感染点的距离。然后我们首先dfs一遍,求得以1为根的树,每个点到子树中的感染点的最大距离,然后再dfs一遍,求得dp[i]所要求的值,利用一个dd[i]数组表示第i点的父亲,除了自己及以自己为根的子树

2015-10-03 20:50:28 1958

原创 codeforces 180C C. Letter(dp)

题目链接:codeforces 180C题目大意:给出一个字符串,问最少修改多少个字符,能够得到一个前面是大写,后面是小写的字符串。题目分析:定义状态dp[i][0]表示当前位是大写,得到合法状态的最小花费。定义状态dp[i][1]表示当前位是小写,得到合法状态的最小花费。转移方程很简单,具体看代码。 AC代码:#include <iostream>#include <cstdio>#in

2015-10-03 16:47:07 1357

原创 codeforces 455C C. Civilization(树形dp+树的直径+并查集)

题目链接:codeforces 455C题目大意:给出一些点,他们之间初始存在一些边,给出两种操作,第一种是查询某个点所在的树的直径,另一种是将两个树合并,要求使合并后的树的直径最小。题目分析:首先算取没做操作前的连通块里的树的直径,也就是先dfs一遍,找到深度最大的点,然后从这个点再搜,找到的最远的距离就是这棵树的直径,因为可以证明从根搜深度最大的点一定是树的直径的一个端点,因为它可以通过到达次

2015-10-03 16:30:06 2459

原创 codeforces 453B B. Little Pony and Harmony Chest(dp+数论)

题目链接:codeforces 453B题目大意:给出一个序列a,求取一个序列b,b序列的数两两互质,问能够导致∑|ai−bi|\sum | a_i - b_i|最小的方案题目分析:定义状态dp[i][j]表示前i个数达到j状态的最小的结果,j状态表示已经被用过的质数。因为当一个a的数据范围不超过30,所以如果某个数超过60,那么选择1一定比它更优,所以我们能够用到的数的质因子也一定不会超过60

2015-10-03 14:50:26 1958

原创 codeforces 459E E. Pashmak and Graph(dp)

题目链接:codeforces 459E题目大意:给出n个点,m条边的有向图,每个边有边权,求一条最长的边权上升的路径的长度。题目分析:定义dp[i]表示第i条边结尾的情况下的最长路径。定义g[i]表示点i结尾的情况的最长路径。对所有的边进行排序,那么前面的边只可能小于等于后面的边。所以dp[i] = g[e[i].u]+1 然后只需要特殊考虑一下边相等的情况,更新g[i]即可,具体见代码

2015-10-03 10:51:34 1849

原创 codeforces 478D D. Red-Green Towers(dp)

题目链接:codeforces 478D题目大意:给出r个红砖,g个绿砖,问有多少种方法搭成最高的塔。题目分析:定义状态dp[i][j]表示构造i层的塔需要j块绿砖的方案数。转移方程:dp[i][j]=dp[i−1][j−i]+dp[i−1][j]dp[i][j] = dp[i-1][j-i] + dp[i-1][j]分别代表当前这一层放绿砖还是放红砖(当然要先判断当前状态转移是否合法) AC

2015-10-02 10:01:41 1718

原创 codeforces B. Cow Program (记忆化搜索)

题目链接:codeforces 283B题目大意:给出n个数,奇数次操作x,y都加上a[x],偶数次操作y加上a[x],x减去a[x],走出了范围就结束。 问结束时的y值,如果无法结束,那么输出-1题目分析:记录状态dp[x][2]为在奇数次或偶数次到达x点时走完还会获得的权值。直接搜索,搜索到搜过的状态直接返回。 AC代码:#include <iostream>#include <cstd

2015-10-01 16:13:57 1331

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关注的人

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