自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NEERC 2016年B题 Binary code

读研以后好久没有研究算法竞赛的题目了。这段时间算法课,刚好作业是要讲算法,就选了一道题目研究了一下,感觉还是蛮有意思的。但是说实话本弱鸡太菜了,靠自己肯定解决不了这么难的题,就参考了别人的代码啦(这个也找了半天,有好多人的实现都没看懂)。而且这个过程也接触到了以前没有接触过的构图技巧,叫什么前后缀优化建图,还是很有意义的。题目链接(里面B题):https://codeforces.com/...

2019-10-29 19:02:11 496 1

原创 hdu6242(随机化)

题目链接:点击打开链接大致题意:给出N个不同的点,让你找出一个点P使得其到至少⌈N/2⌉个点的距离均为R思路:先解决较简单情形,比如N=1,2时可以考虑在所给点中随便选一个点,取距离为0即符合题意而N=3,4时则不妨取第一个点和第二个点的中点,然后距离取两者到其中点的距离然后N>=5,则P点至少要到其中三个点距离相同显然,如果这三点共线,是达不到上述要求的而题目保证至少存在这样一个P,所以若...

2018-05-09 21:59:41 615

原创 hdu6249(区间dp)

好像最近写的几篇博客都是关于动态规划的,看来动态规划在acm里面也是常客~~~hdu6249题目链接:点击打开链接大意:给出m个闭区间,各区间左端点和右端点都在[1,n]内,求从中选出k个区间的最大区间并。1≤T≤1001≤K≤M1≤N,M≤20001≤Li≤Ri≤N数据规模见上,对其进行分析,估计这道题应该是用o(n^2)的解法思路:对于区间问题,我首先想到的就是离散化处理,对各个区间端点进行排...

2018-05-09 12:58:27 1024

原创 hdu5834(树形dp)

去年蓝桥杯结束以后基本就没有在oj上刷题了,最近突然被老师拉去要打JSCPC(江苏省大学生程序设计大赛),只能在hdu上找找以前ccpc的题目刷刷,顺便复习复习(而且估计也没时间刷那种比较水的题了)题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5834参考题解:http://www.cnblogs.com/WABoss/p/5771931.h

2018-04-22 14:58:54 549

原创 第八届蓝桥杯国赛Java b组 第六题

标题:区间移位数轴上有n个闭区间:D1,...,Dn。其中区间Di用一对整数[ai, bi]来描述,满足ai 已知这些区间的长度之和至少有10000。所以,通过适当的移动这些区间,你总可以使得他们的“并”覆盖[0, 10000]——也就是说[0, 10000]这个区间内的每一个点都落于至少一个区间内。你希望找一个移动方法,使得位移差最大的那个区间的位移量最小。

2017-05-31 17:40:36 1580 1

原创 第八届蓝桥杯国赛Java b组 第五题

标题:填字母游戏小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说:“我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了”。K大师在纸上画了一行n个格子,要小明和他交替往其中填入字母。并且:1. 轮到某人填的时候,只能在某个空格中填入L或O2. 谁先让字母组成了“LOL”的字样,谁获胜。3. 如果所有格子都填满了,

2017-05-31 17:38:42 1444

原创 第八届蓝桥杯国赛Java b组 第四题

标题:小计算器模拟程序型计算器,依次输入指令,可能包含的指令有1. 数字:'NUM X',X为一个只包含大写字母和数字的字符串,表示一个当前进制的数2. 运算指令:'ADD','SUB','MUL','DIV','MOD',分别表示加减乘,除法取商,除法取余3. 进制转换指令:'CHANGE K',将当前进制转换为K进制(2≤K≤36)4. 输出指令:'EQUA

2017-05-31 17:37:29 2440

原创 第八届蓝桥杯国赛Java b组 第三题

标题:树形显示对于分类结构可以用树形来形象地表示。比如:文件系统就是典型的例子。树中的结点具有父子关系。我们在显示的时候,把子项向右缩进(用空格,不是tab),并添加必要的连接线,以使其层次关系更醒目。下面的代码就是为了这个目的的,请仔细阅读源码,并填写划线部分缺少的代码。import java.util.*;class MyTr

2017-05-31 17:35:07 820 1

原创 第八届蓝桥杯国赛Java b组 第二题

标题:生命游戏康威生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。  这个游戏在一个无限大的2D网格上进行。初始时,每个小方格中居住着一个活着或死了的细胞。下一时刻每个细胞的状态都由它周围八个格子的细胞状态决定。具体来说:1. 当前细胞为存活状态时,当周围低于2个(不包含2个)存活细胞时, 该细胞变成死亡状态。(模拟生命数量

2017-05-31 17:33:35 1183

原创 第八届蓝桥杯国赛Java b组 第一题

标题:平方十位数由0~9这10个数字不重复、不遗漏,可以组成很多10位数字。这其中也有很多恰好是平方数(是某个数的平方)。比如:1026753849,就是其中最小的一个平方数。请你找出其中最大的一个平方数是多少?注意:你需要提交的是一个10位数字,不要填写任何多余内容。

2017-05-31 17:32:28 1283

原创 蓝桥杯总结

蓝桥杯

2017-05-30 16:49:27 6244 5

原创 poj2528(离散化+线段树)

点击打开题目链接大意:n(n          求出最后还能看见多少张海报。思路:离散化,根据所输数据处理,分成len段。然后对于各个海报,二分求得其占据第a段到第b段。           然后,利用线段树,区间染色(比如第i张海报,相当于在区间上染色i)。           最后,求出所有区间上不同颜色数。代码如

2017-05-23 20:38:03 312

原创 poj2524(并查集)

点击打开题目链接大意:多组数据。每组数据中,n个学生,每个学生信最多一种教。给出m对学生信息,每对中两个学生信的教一样。求这n个学生信教种数最多有多少。思路:并查集,基础练手题代码如下:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream

2017-05-23 19:27:27 335

原创 poj1226(哈希)

点击打开题目链接大意:多组数据,每组n个字符串,寻找最长的X,使得对n个字符串中的任意一个,X或者X反转过来的字符串是其子串。(输出X的长度即可)思路:这道好像KMP或者后缀数组都能做,但我还是习惯用哈希。此题可以先二分这个长度(显然如果某个长度满足那么小于这个长度的串也是能找到的),不妨记这个长度为len。然后呢,以第一个字符串为标准,正一遍反一遍扫过去得到该字符串中,以

2017-05-22 23:23:04 290

原创 poj2440(矩阵快速幂)

点击打开题目链接大意:L位由0和1组成的基因,基因中不能包含子串101以及111,求这样的基因数(L思路:10^8,果断快速幂。然后不包含101及111,不妨用f[i,k]表示满足条件,共含i位,且末三位为k的基因数然后按k分情况进行递推。例如:f[i,000]=f[i-1,100]+f[i-1,000],f[i,010]=f[i-1,001](不能是101)等等然

2017-05-22 17:42:50 273

原创 poj2019(二维线段树)

点击打开题目链接大致题意:给定一个n*n矩阵以及k个查询。每个查询中给出两个数x,y,则该查询询问以第x行第y列为左上角的b*b矩阵中元素最大值与最小值之差。思路:二维问题简单化,可先考虑一维的情形,即考虑区间内元素最大最小值问题。这个可以用RMQ解决,当然,写线段树也可以,这道题我就直接以线段树为基础了。主要的式子就是maxval[o]=max(maxval[o*

2017-05-13 20:50:49 447

原创 poj2001(Trie树)

点击打开题目链接大致题意:给定一系列单词,为每个单词寻找最短前缀使其能被唯一标识,与其他单词都区分开来网上百度出的几道Trie树的题目发现用容器,比如HashMap等就可以做,但是这道似乎就不行了,相当来说应该是Trie树的典型应用题。思路比较简单,就是Trie树建立,结点统计被几个单词占用了,然后再对每个单词遍历一遍Trie树找到第一个结点只被该单词占用的(即该结

2017-05-12 19:39:12 397

原创 poj3080(枚举+kmp)

点击打开题目链接大致题意:多组数据,每组给定m个字符串,求这些字符串最长公共子串。若子串长度小于3,则输出no significant commonalities。若有多个最长公共子串(长度相等),则取其中字典序最小的那个。思路:以第一个字符串为参考标准,假设其长为len,则其有len个前缀。题目就转化为求剩余m-1个字符串与得到的这len个字符串的最长公共前缀

2017-05-11 20:48:33 823

原创 蓝桥杯 Log大侠 题解

标题:Log大侠    atm参加了速算训练班,经过刻苦修炼,对以2为底的对数算得飞快,人称Log大侠。    一天,Log大侠的好友 drd 有一些整数序列需要变换,Log大侠正好施展法力...    变换的规则是: 对其某个子序列的每个整数变为: [log_2 (x) + 1]  其中 [] 表示向下取整,就是对每个数字求以2为底的对数,然后取下整。

2017-05-09 22:02:19 1289 1

原创 第七届 蓝桥杯 决赛 碱基(哈希,不保证对)

碱基生物学家正在对n个物种进行研究。其中第i个物种的DNA序列为s[i],其中的第j个碱基为s[i][j],碱基一定是A、T、G、C之一。生物学家想找到这些生物中一部分生物的一些共性,他们现在关注那些至少在m个生物中出现的长度为k的连续碱基序列。准确的说,科学家关心的序列用2m元组(i1,p1,i2,p2....im,pm)表示,满足:1且对于所有q(0

2017-05-09 18:46:22 2136

原创 poj3977(折半搜索)

点击打开题目链接多数据集,每个数据集给出不超过35个数,求其中非空子集使得该子集数字和的绝对值最小。如果有多个这样的子集,取元素数目最少的。最后输出该子集中数字的和的绝对值,以及子集所含元素数目。35个数,容易想到折半,对半分开搜索,这样的话对于某一半的序列单纯枚举各数选与不选,差不多就是2^17种,复杂度显然可以接受。这道题思路就是前一半先搜完(各个元素枚

2017-05-08 22:34:12 561

原创 poj1949(拓扑,dp)

点击打开题目链接大意:有n个任务,第i个任务需要时间xi来完成,并且第i个任务必须在它 “前面的” 某些任务完成之后才能开始。给你任务信息,问你最短需要多少时间来完成任务。这道题做完了以后感觉分类不太清晰,看了网上,有说拓扑排序,大多都是说是dp。我先是想到拓扑排序的,感觉递推自然而然就用上了,dp[i]=max(dp[j]+t[i]) (j是i之前要完成的

2017-05-08 17:03:57 337

原创 poj1952(经典dp题)

点击打开题目链接下面是别处找来的中文翻译版【问题描述】    “逢低吸纳”是炒股的一条成功秘诀。如果你想成为一个成功的投资者,就要遵守这条秘诀:"逢低吸纳,越低越买"这句话的意思是:每次你购买股票时的股价一定要比你上次购买时的股价低.按照这个规则购买股票的次数越多越好,看看你最多能按这个规则买几次。给定连续的N天中每天的股价。你可以在任何一天购买一次股票,但是购买时的股价一

2017-05-07 21:03:01 799

原创 poj1200(字符串哈希)

点击打开题目链接题意就是,给出一个字符串,里面有NC个不同字符,求其中长度为n的不同子字符串个数差不多就是字符串的哈希算法的一道简单应用题了,《挑战程序设计竞赛》书上第373页开始有相关内容其中,假设字符串C=c1c2...cm,选取两个合适的互素常数b和h,可定义哈希函数H(c)=(c1*b^(m-1)+c2*b^(m-2)+c2*b^(m-3)+...+cm*b^0)  mod

2017-05-07 15:04:54 467

原创 poj1659(纯搜索)

题目一道中文题,应该比较好理解了吧~~~这道用搜索,就是一个一个湖泊过去,搜索这些湖泊与哪些湖泊相连,动态更新邻接矩阵以及各个湖泊剩余与其有水路相连的未确定湖泊数(这里用brr数组)。而且,对于第i个湖泊,因为已经搜索了前面i-1个湖泊,这i-1个湖泊与该湖泊的水路相连状态也就确定了。所以就直接从第i+1个湖泊搜下去,搜brr[i]个。相当于平常的求n个数中取k个的组合方案问题多了一层

2017-05-05 22:49:21 280

原创 poj2955(区间dp)

题目大意:给出一个字符串,求其中最长括号都已匹配好子串(只需知道长度即可)比较简单的区间dp,对于f[i][i+1],如果第i个字符与第i+1个匹配则f[i][i+1]=2否则等于0其他的,f[i][j]=max(f[i][k]+f[k+1][j])(分两段考虑),(形式类似(S1)(S2))如果第i个字符与第j个字符匹配,则最优方案中两者可能在同一段,此时f[i][j]=

2017-05-02 23:28:44 242

原创 poj1047(树形dp)

题目转化下就是给出一棵树求最少要断掉多少条边才能分隔出一个有p个节点的子树这道树形dp就相对难一点了,我写的中还用到了数组的滚动,整理出来方程即f[root][j]=min{f2[root][j]+1,f2[root][k]+f[node][j-k]}前面那部分,即把root->node这条边分隔开来而后面那部分,即是前面保留k个结点,而以node为根的子树保留j-k个结点

2017-05-02 18:57:39 229

原创 poj2282(数位dp)

题目这题题目比较好理解,就是统计a,b之间的数中数码0~9分别出现的次数思路:如果a>b不妨将两者互换顺序,这样就相当于a减去1~a-1中数码0~9出现次数。考虑某个数num,令v[i][j]表示该数前i位中j出现的次数,这个比较好算,预处理一下就行了然后呢,用f[i][j]表示1~该数前i位表示的数中j出现的个数则通常情况下f[i][j] = f[i - 1][j]

2017-05-02 17:30:36 329

原创 poj2342(树形dp)

题目思路:这道是一道比较简单的树形dp题。各员工与其直接上司直接连边然后建树即可之后,用f[root]表示以root为根的树,选择root所得到的最大快乐度而g[root]则表示以root为根的树,不选择root所得到的最大快乐度由于员工与其直接上司在一个派对内同时出席,所以可得f[root]=v[root]+sum(g[child]),g[root]=max(sum(max(f[

2017-05-02 15:50:47 394

原创 poj1631(最长上升子序列 nlogn)

题目见http://poj.org/problem?id=1631最长上升子序列(LIS)裸题(这么说相信题目看看也懂了吧)多数据,由于每个数据p然后就要利用O(nlogn)算法去做http://blog.csdn.net/zhangyx_xyz/article/details/50949957这个博客讲的还是不错的,比较好懂然后不多说,照样子写个模板实现实现,代码如下

2017-04-30 16:51:39 430

原创 poj1014(较复杂的背包问题)

题目:http://poj.org/problem?id=1014import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.StringTokenizer;class Rea

2017-04-30 12:18:47 438

原创 邮局 解题报告

历届试题 邮局  时间限制:1.0s   内存限制:256.0MB    问题描述C村住着n户村民,由于交通闭塞,C村的村民只能通过信件与外界交流。为了方便村民们发信,C村打算在C村建设k个邮局,这样每户村民可以去离自己家最近的邮局发信。  现在给出了m个备选的邮局,请从中选出k个来,使得村民到自己家最近的邮局的距离和最小。其中两点之间的距离定义为两点之间的直线距离。

2017-03-21 15:45:56 753

原创 算法提高 Problem S4: Interesting Numbers 加强版 解题报告

Problem Description  We call a number interesting, if and only if:  1. Its digits consists of only 0, 1, 2 and 3, and all these digits occurred at least once.  2. Inside this number, all 0s occu

2017-03-14 19:10:29 1301

原创 斐波那契 解题报告

历届试题 斐波那契  时间限制:1.0s   内存限制:256.0MB    问题描述  斐波那契数列大家都非常熟悉。它的定义是:f(x) = 1 .... (x=1,2)f(x) = f(x-1) + f(x-2) .... (x>2)  对于给定的整数 n 和 m,我们希望求出:f(1) + f(2) + ... + f(n) 的值。但这个值可能非常

2017-03-04 17:08:34 1808

原创 公式求值 解题报告

历届试题 公式求值  时间限制:1.0s   内存限制:256.0MB    问题描述  输入n, m, k,输出下面公式的值。         其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数。输入格式  输入的第一行包含一个整数n;第二行包含一个整数m,第三行包含一个整数k。输出格式  计算上面公式的值,由于答案非常

2017-03-03 21:01:39 3068

原创 poj3685 解题报告

原题链接:http://poj.org/problem?id=3685这道题题意就是给定一个n*n的矩阵A,A(i,j)= i2 + 100000 × i + j2 - 100000 × j + i × j,求其中第M小元素思路:这道题是《挑战程序设计竞赛》后面的练习题之一,书上是将该题划分到"查找第K大的值"这一部分那么之后应该如何解决呢?二分答案!假设二分到某数值是va

2017-02-28 19:33:31 340

原创 城市建设 解题报告

历届试题 城市建设  时间限制:1.0s   内存限制:256.0MB    问题描述  栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修。市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他。C市中有n个比较重要的地点,市长希望这些地点重点被考虑。现在可以修一些道路来连接其中的一些地点,每条道路可以连接其中的两个地点。另外由于C市有一条河从中穿

2017-02-21 13:47:44 436

原创 poj2441(状压dp)

题目链接:http://poj.org/problem?id=2441,题意相当于给定n个公牛及它们各自想打的篮球场地,求取方案数使得这n个公牛都有场地可打且这些场地均不重复。看完《挑战程序设计竞赛》做的第一道状态压缩动态规划题,状态转移方程相对比较好想。注意这道数据还是比较大,亦用滚动数组~~~一开始我是用n作为第二维进行状态转移的,超时了~~~后来看了讨论,便转为m作为第二维,

2017-02-18 11:21:33 337

原创 提升输入效率代码

lrj《算法竞赛入门经典训练指南》中直接参考代码的,感觉挺有用,就单独拿出来当模板记了。poj上一道线段树改位运算还是TLE,迫不得已,就借鉴这个试试,果然过了。然后之前国王的烦恼看分数也八九不离十,就代入了一下,提升了输入效率,结果算是勉强过了数据,终于AC了~~~lrj书中原话:最常用的Scanner类通常比scanf系列慢5~10倍,应尽量避免;下面的代码包装了速度较快的Bu

2017-02-15 22:19:51 393

原创 打印十字图 解题报告

思路:这道题本菜一开始确实没有什么头绪,知道是模拟而且对称,但是由于字符要么是.要么是$,感觉比较乱,规律感觉无从下手。网上别人都说该题简单,但是我看代码还是看不懂~~~不过后来看到下面这张图以后就豁然开朗了!(参考:http://blog.csdn.net/u013451048/article/details/43865259)然后呢,就是代码的实现了。首先模拟中间画十字

2017-02-15 19:26:13 340

空空如也

空空如也

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

TA关注的人

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