自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

aozil_yang的博客

点滴记录,记录成长,帮助你我!

  • 博客(607)
  • 收藏
  • 关注

原创 Codeforces Round #398 (Div. 2) -- B. The Queue (贪心+暴力)

大体题意:告诉你工作站的工作起始时间 终止时间, 和处理一个人的时间间隔。并告诉你n 个人来的时间。 求你要求的话 什么时候去 排队时间最少, 如果你和某个人去的时间一样,你会排在它们后面。思路:暴力贪心就好了。先找有缝的,发现一个人的就诊时间大于上一个人结束时间,那么直接输出 上一个人输出时间。以上找的是不用排队的时间。如果找不到,就要找需要排队的时间。直接枚举每

2017-02-18 22:13:24 304

原创 ICPCCamp2017 Day 5 I Coprime Queries(莫比乌斯函数 + 容斥定理 + 二分)

题意:给你n 个数,和n 个询问,每个询问有l,r,x,问在区间l~r中与x互质的最大位置在哪里?思路:以为是个线段树,想了好久 都没有确切的好的思路。其实是容斥定理。考虑30:质因子分解 30 = 2*3 *5那么我们可以求出l到r中 与30 不互质的数有几个。很显然那些数满足 有2的因子或者有3 的因子或者有5的因子。是一个并集。那么我们就加上2的个数 加上

2017-02-18 03:13:45 497

原创 ICPCCamp2017 Day 5 E HDRF(DFS序列 + 线段树 + 离散化)

大体题意:给你一颗树,ri 为以当前结点为根的最小子树上的权值(单点),每个点有固定的权值vi,每个点的权值都不一样,每次你必须优先访问ri最小的,然后删掉,然后重新计算ri,求这个删除点的路径?思路:比赛中只想到了用dp 记录某个点的最小权值,然后一直跳下去,然后在回来更新dp这样肯定是超时的。因为回来更新太慢了。其实没必要用dp记录最小权值。直接给这棵树 进行dfs序列

2017-02-17 17:33:44 461

原创 ICPCCamp2017 Day 4 B Dissertation(LCS 动态规划--改进版 )

大体题意:给你两个字符串,求LCS的长度,一个不超过100W,一个不超过1000思路:正常的LCS的dp肯定不能进行,这样会超时。令dp[i][j]表示当前枚举的LCS的长度为第i位,字符为第二个字符串的的第j 个字符。dp[i][j] 为第一个字符串的的前哪个位置。那么假设dp[i][j] 是已知的话,那么考虑转移第j+1个字符,假设对LCS没有贡献的话,只能转移 dp[i]

2017-02-17 02:26:55 470

原创 ICPCCamp2017 Day 4 A The Catcher in the Rye(二分+光的折射定律)

大体题意:告诉你有三个矩形连在一起,要求你从第一个矩形左下角出发,到第三个矩形的右上角,在每个矩形中速度不一样,求最少时间?思路:最容易想到的是三分。取第一个矩形的走的高度是x, 第二个玻璃走的高度是y,列一个函数发现是一个凹函数。三分就好了。但是时间是0.25s  过不了。不过有大神 有一个小技巧,就是把这三个矩形 缩小h倍。  最后算完 在乘回去。  (好猛= =)

2017-02-16 22:51:03 423

原创 ICPCCamp2017 Day 4 F Factory(三分套三分)

大体题意:给你二维坐标面上n个点,让你求出一个点,到这n个点的距离和最小?思路:赛后才想出怎么做来= =写一写表达式:sqrt((x0-x1)^2 + (y0-y1)^2 ) + sqrt((x0-x2)^2 + (y0-y2)^2 ) + sqrt((x0-x3)^2 + (y0-y3)^2 ) ....观察发现,x0是一个凹凸函数(二次函数)关系,y0也是一个凹凸函数(

2017-02-16 21:11:38 654

原创 ICPCCamp2017 Day 3 F Median on Binary Tree(树dp)

觉的不写博客不行了,要不然以后都忘了= =大体题意:给你一个完全二叉树,标号为层次标号1~n,定义一个a(0求每个a的最大值。思路:题意很绕,比赛没做出来。观察a的值,(k-a+1)/2 这是1~ (k-a)的中位数。观察图发现:我们可以把中位数x左边的标成-1,右边的都标成+1那么这个子树的权值之和就是a 。可能大家觉得不好处理,应该是权值之和-1

2017-02-16 00:37:42 390

原创 HDU 3966 Aragorn's Story (树链剖分)

大体题意:给你一棵树,给你三种操作,u到v 结点之间的结点 加上K,减去k ,查询结点u的权值?思路:数据比较大,肯定不能直接暴力。通过这个题目学习到了树链剖分(可以百度一下)。这个题目用树状数组就足够了。简单记录一下 树链剖分。第一个dfs  记录每个结点深度和 重儿子(子孙最多的儿子)。第二个dfs 就开始把重边化成重链了。并且重新编号(因为树状数组和线段树只能

2017-02-13 01:50:33 473

原创 例题7-10 UVA 11212 Editing a Book (IDA*搜索)

大体题意:给你一个n 个数全排列数组,要求你可以选择一个连续的序列 随便插到一个位置,求最少几步 能到达严格上升的序列?思路:正解是IDA*搜索。一开始简单的以为是BFS ,一想 他还是一个 全排列的数组 用康托展开不正好可以完美哈希么,就写了个bfs  加了一些剪枝 ,9个数的数据跑的非常慢。应该用dfs。根据刘汝佳的分析,有几个地方分析的非常巧妙。我们可以利用后继不

2017-02-09 15:13:40 375

原创 HDU 5643 King's Game (约瑟夫环问题的变形 递推)

大体题意:有n 个人,进行比赛,第一轮比赛 从1开始报数,报到1的出局,第二轮报2,,,,  问最后谁没出局?思路:一看就是约瑟夫环问题的变型了。在简单记录一下思考的过程吧:n 个人 编号为0,1,2,,,,,n-1.假设这一局k-1 出局了。那么重新编号:k  k+1 k+2,,,, n-1  0 1   k-20  1     2              

2017-02-08 23:32:53 633

原创 HDU 5918 Sequence I (2016长春区域赛, KMP)

大体题意:给你a数组和b 数组和p,问有多少个子序列,aq,a(q+p),a(q+2p).,., 完全等于b 数组。思路:两个数组最大是1e6.又是字符串匹配问题,首先想到kmp算法。这个题目里面b 数组是固定的,直接获得b 的next数组。然后我们划分成p 个a数组,这p 个字符串分别与b 数组进行匹配即可。吐槽:当然还在想万一模板串比查找串的长度小,或者大怎么办

2017-02-08 23:26:27 477

原创 HDU 5978 To begin or not to begin (简单博弈--找规律)

大体题意:给你k 个黑球和1个红球,两个轮流抽,抽到红球算赢,问先手赢的概率大还是后手大,还是概率相等?思路:写几个小的数手算一下 就看到规律了。如果k 是偶数的话,那么先手的概率是 ((n+2)/3)/(n+1)  大于后手的概率 输出1如果k 是奇数的话,那么先手后手概率都是1/2.#include #include #include using namespac

2017-02-08 20:23:54 981

原创 HDU 5983 Pocket Cube (简单模拟)

大体题意:给你一个2*2*2的魔方,问你能否一步到达各个面的颜色完全一样。思路:其实挺简单的,题意已经给足了提示,已经告诉你了魔方怎么进行标号。(就是那个图)只要给魔方标号,怎么转就很简单了,可以预处理一个b 数组和c 数组,分别是魔方转一个面时候的侧面的八个面和上面的四个面,循环赋值即可。这样 写好循环赋值函数后,转六个面只需要更改b数组和c数组即可。详细见代码:#i

2017-02-06 15:49:43 1258

原创 Codeforces Round #395 (Div. 2) -- C. Timofey and a tree(并查集+缩点)

大体题意:给你一棵树,要求找一个结点来作为根节点,使得所有的子树颜色都一样,整棵树不是子树,其余的是,存在的话输出那个点。思路:并查集+缩点。先把颜色一样的,并且连在一起的点缩成一个点。(类似连通块) 缩点后也一定是树。这样最后的形式就是  一个根结点连接着很多其他结点,这样枚举所有的边,统计一下缩点的度数。找出那个度数为总和-1的那个点就是答案,没有的话,就是NO咯。

2017-02-03 01:57:24 443

原创 POJ 1077 Eight (正向BFS + 康托展开)

题意不说了 八数码问题:和上篇博客 HDU 1043  题目是一样的!但是做法上有些出入。HDU 时间限制比较长,而且是多组输入,所以要逆向bfs 进行打表处理。而POJ 1077 这个题目,时间是1S ,单组输入。因此输入一组 搜索一组即可。9个数的排列  判重用康托展开来做。但是这个队列要自己写,STL的queue 会超时。自己写的队列,在输出时 能很方

2017-01-24 16:25:24 757

原创 HDU 1043 Eight ((八数码问题)逆向BFS + 康托定理判重)

题意不说了,就是一个八数码思路:很暴力,直接把空格看成0,然后把九个数字连接起来,用这个数来代表这个状态。然后正常来想这个题目时,肯定是 从给定状态到目标态来bfs搜索,但是这样做死活爆内存 (好难受= =)我们需要转个弯,从目标态向给定态搜索,这样可以直接预处理打表了。正好这是一个9个不同数字的排列,用康托定理完美去重。注: 用c++交的,G++还是爆内存= =#in

2017-01-23 21:58:55 795

原创 例题7-7 UVA 1354 Mobile Computing (搜索+二叉树(类哈夫曼树))

思路:想一想就可以知道,一个结点要么有两个儿子,要么没儿子。那么这就很像哈夫曼树,因此我们可以枚举所有的哈夫曼树(任意枚举两个不同的结点来合并)然后从根结点开始遍历二叉树,在遍历的同时,来枚举左边 和右边的最大值。然后R-L 便是这个二叉树的宽度。更新一下答案即可!有一个小小的坑把,没注意到:就是只有一个砝码的时候,答案应该是0 不是-1.想一想还是很实际的:只

2017-01-22 16:17:21 404

原创 例题7-5 UVA 129 Krypton Factor (困难的串,搜索)

题意:给你n 和l ,求出按字典序来算第n小的由前l 个字母组成的困难的串,如果一个字符串中包含两个相邻的重复子串,那么是容易的串,否则是困难的串。思路:直接搜索即可!当枚举到第c 位时,我们只需要判断后缀是否重复即可,因为前面的都已经判断过了。另外如果一个字母一个字母枚举的话,那么就已经保证了字典序的顺序了,无需在排序了。输出格式注意下即可。#include #incl

2017-01-20 14:02:00 418

原创 例题7-4 UVA 524 Prime Ring Problem

题意:给你数字n ,求的一个1~n 的数字环,使得任意相邻的数的和为素数! 打印所有解。思路:直接素数打表判断素数,回溯法暴力每一个位置的每一个数即可。#include #include #include #include #include using namespace std;unordered_mapmp;int vis[100];void init(){

2017-01-20 13:13:15 279

原创 Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) -- C. Felicity is Coming! (STL水过)

大体题意:有n 个体育馆每个体育馆里有 不同的精灵同样数字的精灵进化的结果是一样的不同数字进化的结果一定不同有多少个不同的进化方法使得每个体育馆进化后 和原来一样?思路:两个精灵可以互相进化的话,那么它们两个在所有的体育馆的数量和位置都必须一样。这样找出同类的所有数量后,求阶乘即可,因为它们内部随便排列都是合适的。然后把所有的阶乘乘起来即可!思路明确后,方法就很多了! 就随

2017-01-13 18:32:40 833

原创 Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined) -- B. Bash's Big Day (唯一分解定理)

大体题意:给你n 个数,让你选出尽可能多的数来,使得gcd(x1,x2,x3,,,xn) != 1; 输出最大数量?思路:思路比较偏比较麻烦,参考一下把!gcd不是1的话,说明它们有共同的质因子!数据范围是 每个数都是10W以内!  素数也就1W个因此我们可以给每一个数进行质因子分解。给分解出来的质因子p   统计一下,vos[p]++,表示有一个数 是p这个素因子。

2017-01-13 18:19:47 497

原创 URAL 1081 Binary Lexicographic Sequence (递推 + 递归)

大体题意:定义一个合法的二进制序列为序列中没有两个1是相邻的,对于所有长度为n的合法序列按照字典序排序后(保留前导0),求第K大的串是多少?思路:我们先得求出一个n位的合法二进制的个数是多少!f[1] = 2;f[2] = 3f[3] = 5f[4] = 8这几个很容易算出来,然后我们就很明显的发现规律了,这是一个斐波那契数列!其实想一想确实这个样!你构造第

2017-01-12 15:37:12 366

原创 POJ 2790 Consecutive ones (搜索 + 剪枝)

大体题意:给你一个n*m的0-1矩阵(n,m 思路:因为保证了答案唯一,所有正解只有一个,因此不合法的情况会有很多,因此我们可以考虑 搜索 + 剪枝的方案。矩阵只有0 和1 因此一个位置要么填0要么填1,这两种方式都考虑到剪枝就可以很轻松的过了!最先想到的肯定是枚举列,在枚举每一行检测是否合法!剪枝方法:如果这一列这一个位置是1的话,那么前面的一个位置也必须是1,否则就

2017-01-11 14:23:02 343

原创 ZOJ 2642 Feel Good (单调栈)

大体题意:给你n 个数,要求找一个区间[l,r] 使得区间中的最小值 × 区间和 的值最大?思路:直接单调栈即可!枚举每一个数作为最小值,找到 la[i]和ne[i]即 前面的边界和后面的边界!枚举更新一下答案即可!注意开long long#include #include #include #include using namespace std;cons

2017-01-11 07:53:26 394

原创 POJ 1267 Fence(几何 + 二分)

大体题意:给你n 条木棍,要用它们组成凸多边形,每个木棍都要用上,使得面积最大,数据范围3 如果不存在的话,要输出0.00.(结果保留两位小数)思路:首先这个题目得知道,固定边长的多边形面积最大是 圆内接多边形!参考网站:点我打开网站是然后思路是很明确的,我们直接二分枚举圆的半径R,然后判断那n 个边是否能放在这半径为R的圆里面。判断方法:你可以把根据圆的半

2017-01-10 14:53:54 579

原创 Uva 10288 Coupons (概率dp)

大题题意:一共有n 种不同的优惠券,每次得到每种优惠券的概率相同。问期望多少次可以得到所有n 种的优惠券,以带分数的形式输出!思路:这个题 用dp思想比较好理解一些!令dp[i]表示已经得到了 i种优惠券!那么dp[i]的转移可以来自i-1种的情况得到一种新的种类!也可以来自i种 得到了一种原来的种类!在+1即可!即:dp[i] = dp[i-1] * (n-i

2017-01-09 18:36:17 354

原创 HDU 4405 Aeroplane chess(一维概率dp)

大体题意:一维的飞行棋,你从0点开始出发,到n点,你有一个骰子,如果点数是x的话,你能走到i + x的位置,其中i是你的当前位置,求掷骰子次数的最少期望值? 其中会在某一个点由飞行器,直接从x飞到y,是必须飞!!思路:很水的一个概率dp了,令dp[i]表示从i位置出发到n 的期望值!显然dp[n] = 0;倒着递推显然更好做,更容易理解一些!在i 位置,如果有飞行器的话,直

2016-12-30 16:09:12 348

原创 Codeforces Round #385 (Div. 2) -- B. Hongcow Solves A Puzzle (判断是否是矩形,水题)

大体题意:给你一个n*m 的矩阵,  你要用两个同样的图形构造出一个矩形来,问是否可以?   .表示 这个地方是空地,X表示是一个小元素!你不可以旋转覆盖, 只能移动整体!思路:这个题意一开始理解错了,被hack了,其实移动 只能是整体移动!因此 只要判断这个图形是否是矩形就可以了!详细见代码:#include #define ps push_back#define f

2016-12-18 11:30:56 755

原创 Codeforces Round #385 (Div. 2) -- C. Hongcow Builds A Nation(并查集)

大体题意:给你n 个点m个边的图,告诉其中一些点是政府点,如果任意两个政府点 不能直接或者间接到达的话,那么称这个图就是一个稳定的图,要求让你在这个图中加尽量多的边,使得 这个图还是稳定的!思路:其实思路很简单:简单的并查集应用!因为题目保证输入的图一定是一个稳定的图,那么每一个政府点 都在一个独立的并查集内部!我们先给每一个并查集内部的点进行连接!  任意连接都是合法的!

2016-12-18 11:21:48 527

原创 UVA 11300 Spreading the Wealth (思路题目)

大体题意:坐在圆桌上有n 个人,没人有一定数量的金币,你的目的是使得没个人的金币都一样,你的分金币方法是可以把手里的金币分给相邻的人,问最少分的数量!思路:很巧妙的一道题目,书上说的很详细,简单记录一下!假设每个人的金币数量是a1,a2,a3,,,,an,第一个人得到的金币数是 x1, 第二个得到的金币数是x2,,,,,,依次类推:会得到一个等式:(拿样例举例子)

2016-12-12 00:13:27 449

原创 HDU 5974 A Simple Math Problem (数论,大连区域赛)

大体题意:给你a和b,让你求出X和Y,使得X + Y = a    lcm(x,y) = b思路:看数据范围肯定不能进行暴力枚举了!令gcd(x,y) = g;那么g * k1 = x;g * k2 = y;因为g 是最大公约数,那么k1与k2 必互质!=>   g*k1*k2 = b=>   g*k1 + g * k2 = a;所以k1 * k2 =

2016-12-09 14:56:51 2820 6

原创 UVA 1267 && LA 3902 Network (思路--树上的DFS)

大体题意:给你n 个节点的树,其中叶子节点是客户端,内部的节点是服务器!你需要把一些服务器变成VOD,使得每个客户端到最近VOD的距离不超过K,开始的时候,已经有了一个VOD ,标号是s(也是根节点),求在最少安装多少VOD使得上述描述成立!思路:本以为是一个dp,看了分析后,感觉想的太复杂了!先把无根树转成有根树,其实这已经是一个有根树了,把S作为根节点,然后dfs 求出每一个节

2016-12-06 15:43:53 376

原创 UVA 12124 Assemble (二分 + 字典树)

大体题意:你有b 元钱,要组装一台电脑,有n 个配件,属于不同的种类,你要在每一种配件里选择一个配件,使得品质最差的配件尽可能的大,问最差配件的最大值!思路:解决“最小值最大”的常用方法是二分答案。我们可以二分答案 x, x 即可品质最差的配件的质量!然后我们开始枚举每一种配件,我们在每一种配件质量大于等于x 的配件中选择一个最便宜的!当质量与钱数均合适的情况下,这个答案x

2016-12-05 22:34:08 346

原创 UVA 12097 Pie LA 3635 (二分)

大体题意:给你n 个圆形派,有F+1个人来分这n 个派,每个人得到派的面积必须一样大,求最大面积(派必须是完整的,不能拼接!)思路:二分,我们直接二分答案x,看这个x合适不合适的标准是  能不能在n 个圆形派中,分出面积为x 的个数不少于f+1个,不行的话,继续搜!一个面积为S的派能分面积为x 的个数为  S/x详细见代码:错了很多遍,注意二分的边界问题!!#inclu

2016-12-05 22:22:25 359

原创 Codeforces Round #382 (Div. 2) -- C. Tennis Championship (数学找规律 -- 斐波那契数列)

大体题意:n 个人进行比赛,问你一个做多打多少场比赛? 两个人进行比赛,它们比赛场次之差不差过1,否则不能打,一旦一个人打比赛输了,就不能继续往后打了!思路:很水的一道题目,想复杂了!其实是一个找规律的题目。当你写出几个数据来后,就能猜出来了:2 3 4 5 6 7 8 9 10 11 12 131 2 2 3 3 3 4 4  4  4  4   5下面同一类的个

2016-11-29 00:25:23 576

原创 Codeforces Round #382 (Div. 2) -- D. Taxes (数学 -- 哥德巴赫猜想, 唯一分解定理)

大体题意:你有n元钱,你需要交税,交锐的价格为n 的最大因子(不等于n),为了缩小税钱,你可以拆成多个钱相加的形式,但是不能拆出1来,问你最少交多少钱?思路:肯定是全都是素数最好了,那么问题就是把n 拆成多个素数之和的形式!根据哥德巴赫猜想,任何大于2 的偶数必定写成两个质数相加的形式!因为我们判断  如果n 本身时素数直接输出1如果不是素数, 是偶数的话,直接输出2如

2016-11-29 00:19:36 944

原创 UVALive 4097 Yungom (思路--set||优先队列的模拟)

大体题意:给你有m 种字符,并告诉你每个字符的权值,你要组成n 个单词,n 个单词中,任意两个单词的其中一个 不是另一个单词的前缀,一个单词的权值是各个字符的权值之和! 求组成n 个单词的最小权值?思路:其实这个题  稍微的类似于哈夫曼树,也不完全一样,有些许相似之处!我们先定一个根节点 , 根节点没有字符,  连接着m 个字符,每个叶子结点都是一个完整的单词,如果个数不足n 个单

2016-11-23 00:26:41 480

原创 UVALive 4035 Undetectable Tour (二分 + 并查集)

大体题意:你要从左下角走到右上角,但是安装了k (k 思路:只要能够从左边或者上边出发 找一系列连续的监视器 链接到右边或者下边 我们就逃不了! 因此我们先给每个监视器按照范围排序,找一个合理的值  前面的肯定都符合  后面肯定都不行!难点就是判断这个半径行不行,方法是并查集,把左上边看成一个点,把右下边看成另一个点,其余监视器都是点,能相连就相连 最后如果发现左上边和右下边相连肯

2016-11-21 01:01:35 452

原创 Codeforces Round #379 (Div. 2) -- D. Anton and Chess (if else 的水题)

大体题意:给你国际象棋一种残局,问白方是否已经输掉!  (下一步该黑方走)  黑方的棋有三种  (只能横着走 和 只能斜着走 和 既能横着走又能斜着走! = =  没玩过国际象棋 (勿喷!))思路:因为这个棋盘太大了,最大20亿×20亿 肯定不能乱扫!其实思路很简单:直接统计出 白方棋子 八个方向上  最近的黑方棋子即可!  然后  讨论这八个方向是否有棋,有棋的话能否被吃掉!

2016-11-16 17:49:28 430

原创 Codeforces Round #379 (Div. 2) -- C. Anton and Making Potions(简单的分类讨论 + 二分)

大体题意:你要制作n 个药水,正常情况下 是x秒能造1瓶,但为了节省时间,你有两种方式来加速!一种是花费一定数量的金币 来获得速度,  会改变制造一瓶的时间 ,另一种 会瞬间得到 一定量的药水!你有s 金币,告诉你每一类的每一个的花费。求最少时间!  每一类最多用一个魔法!思路:简单模拟一下就行了!为了不漏解,分四种情况讨论!1. 两种全不用  直接是x 秒1瓶!这个很

2016-11-16 17:44:10 506

空空如也

空空如也

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

TA关注的人

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