![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题之路
文章平均质量分 57
逐梦起航-带梦飞翔
为了更加长远的快乐!
展开
-
2022CCPC预选赛J Roulette
初始前d的钱,然后概率p能赌赢,赢或者输由交互决定。这题什么都不卡,所以最低赌注是。,这样可以省去写高精度的问题。实际上可以赌得豪一点,直接。原创 2022-09-12 15:25:12 · 368 阅读 · 0 评论 -
Codeforces Round #781 CF1665 CDE
1665A - GCD vs LCM1665B - Array Cloning Technique1665C - Tree Infection(贪心)(模拟)最小次数,使所有点感染。每一秒钟,1)可以感染一个新的节点,2)兄弟群(拥有同一个父亲的点)会新增一位被感染(-> 注意这里,即使这个兄弟群中主动感染了2个以上,一秒也只能多一个新感染的)首先统计兄弟群,兄弟群大小为sum[i],i为他们共同的父亲。接下来就是这串数字进行处理。我想的是先去感染大的兄弟群,让感染人在内部扩散。但是我忽原创 2022-04-09 21:48:21 · 1337 阅读 · 3 评论 -
bzoj1452 [JSOI2009]Count
刷题记录:bzoj1452 [JSOI2009]Count,一道只能用树状数组,不能用线段树的题目。原创 2017-12-23 13:11:02 · 282 阅读 · 0 评论 -
bzoj1861 [Zjoi2006]Book 书架
【题意】如指令所示:1. Top S——表示把编号为S的书放在最上面。 2. Bottom S——表示把编号为S的书放在最下面。 3. Insert S T——T∈{-1,0,1},若编号为S的书上面有X本书,则这条命令表示把这本书放回去后它的上面有X+T本书; 4. Ask S——询问编号为S的书的上面目前有多少本书。 5. Query S——询问从上面数起的第S本书的编号。【题解】伸展树借助伸...原创 2017-12-23 13:19:45 · 315 阅读 · 0 评论 -
bzoj1037 [ZJOI2008]生日聚会Party
刷题记录:bzoj1037 [ZJOI2008]生日聚会Party 详解疑惑:DP必须这样吗?不能用原始的方式吗?原创 2017-12-22 20:55:41 · 265 阅读 · 0 评论 -
bzoj1055 [HAOI2008]玩具取名
bzoj1055 [HAOI2008]玩具取名区间动态+记忆化搜索dp时做如下2件事:1、如果状态已经处理过,则不必重复处理;2、判断状态能否成立:枚举能变换成该字符的所有可能,其中要用到某区间能否变成k这个字符,直接调用dp函数来计算,这就是记忆化搜索的精髓。原创 2017-12-23 13:38:58 · 183 阅读 · 0 评论 -
bzoj1026 [SCOI2009]windy数
题目描述windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数?【正解】DP+拆分求解思路:快速求出1~n和1~m中的windy数的个数,然后作差。这是前缀和的思想。其中再求1~每个数的windy数时要运用到拆分的思想。第1步:预处理出一定长原创 2017-12-23 13:31:23 · 242 阅读 · 0 评论 -
瓜瓜的时空旅行
题目描述西瓜们生活在编号 1···n 的 n个平行时空中,2n−2 台时光机将这些平行时空联系在一起。一台时光机有 3个整数参数 u,v,t 表示从时空 u 可以花费 t 的时间穿梭到时空 v。为了确保时空之间可以相互穿梭,同时方便作为现世的 1号时空的通行,西瓜们将这些时光机进行分工:前 n−1 台时光机确保从 1号时空可以直接 / 间接抵达任意时空,后 n−1台时光机负责从 2···n号时空直...原创 2018-04-25 14:38:35 · 210 阅读 · 0 评论 -
caioj1696、luogu2512 糖果传递
题意有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。求使所有人获得均等糖果的最小代价。 题解中位数的运用当出现求Σ|a[i]-k|(其中k待定)的最小值,可以用货仓选址来解决。这题比较复杂,需要推导公式后才能发现。尽管糖果给的方向不一定,但我们可以总的看成往左给。即设p[i]表示i传出给i-1 p[i]个糖果。所以cos...原创 2018-07-10 16:30:17 · 308 阅读 · 0 评论 -
poj1328 Radar Installation(贪心)
题意地图的x轴的上方为海,下方为陆地,海中有n个小岛,坐标为(x,y)。有一种雷达,能探测到的范围为以r为半径的圆。问海岸线上至少造多少雷达可以把所有的小岛都包含在内。注意雷达是建在海岸线上的,也就是x轴上的。 题解贪心用勾股定理可以求出覆盖第i个点的圆心的区间,即在这个范围中圆心一定能覆盖到点i。我们先求出覆盖每个点的圆心的区间,这样我们把n个点转换成了n个区间,问题也转换...原创 2018-07-17 12:55:47 · 198 阅读 · 0 评论 -
poj3190 Stall Reservations(贪心)(优先队列)
题目每个奶牛产奶的时间为A到B,每个奶牛产奶时要占用一间房子,问n头奶牛产奶共需要多少房子,并输出每头奶牛用哪间房子。 题解贪心+优先队列按时间顺序,如果当前有空房子则给它;要不就新建一间给它。如果每头牛都搜一遍所有房子,太慢了!时间复杂度O(n^2)。既然每次在乎的都是空的房间,我们就开一个优先队列来存储这些房间的使用结束的时间,搞一个小根堆就好了。这样可以下降到O(nlog...原创 2018-07-17 14:27:31 · 203 阅读 · 0 评论 -
poj2299 Ultra-QuickSort(逆序对)
题意给定一个长度为n的序列A,如果只允许进行比较和交换相邻两个数的操作,求至少需要多少次交换才能把A从小到大排序。题解归并排序求逆序对为什么要求逆序对呢?在一个有序的序列中逆序对的个数为0,逆序对就好像一个个反叛军,只要有一个存活,这个序列就会“不得安宁”。消灭所有逆序对就成了本题的关键。题目很给力,逐个消灭逆序对的方法就是通过把邻近的逆序对交换。所以,只要能求出A中逆序对的个数,本题就引刃而解了...原创 2018-07-11 12:48:19 · 306 阅读 · 0 评论 -
poj3614 Sunscreen(贪心)
题意有C个奶牛去晒太阳,每个奶牛各自能够忍受的阳光强度有一个最小值mn和一个最大值mx,太大就晒伤了,太小奶牛没感觉。而刚开始的阳光的强度非常大,奶牛都承受不住,然后奶牛就得涂抹防晒霜,防晒霜的作用是让阳光照在身上的阳光强度固定为某个值。那么为了不让奶牛烫伤,又不会没有效果。给出了L种防晒霜。每种的固定的阳光强度a和数量n也给出来了。每个奶牛只能抹一瓶防晒霜,最后问能够享受晒太阳的奶牛...原创 2018-07-17 15:28:07 · 290 阅读 · 0 评论 -
poj2054 Color a Tree(贪心)
题意要给一棵N个节点的树染色,染节点i时,它的父亲节点必须已经染色,根除外。每个节点有一个权值a[i],第T次染色的代价是T*a[i]。求最小的代价使所有点被染色。 题解贪心想要简单的选择最大权值并优先给其染色的想法是错误的。但是如果i节点的儿子s是权值最大的节点,在给i染完色后立刻给s染色是必然的。根据这个性质,我们可以把i和s两个点捆绑在一起,缩成一个点,并用其平均数来替代...原创 2018-07-18 15:32:06 · 399 阅读 · 0 评论 -
hihocoder1384 Genius ACM(倍增)
题目给定一个整数 m,对于任意一个整数集合 S,定义“校验值”如下:从集合 S 中取出 m 对数(即 2*M 个数,不能重复使用集合中的数,如果 S 中的整 数不够 m 对,则取到不能取为止),使得“每对数的差的平方”之和最大,这个最大值 就称为集合 S 的“校验值”。现在给定一个长度为 n 的数列 A 以及一个整数 k。我们要把 A 分成若干段,使得 每一段的“校验值”都不超过 k。求最少需要分...原创 2018-07-14 17:05:37 · 552 阅读 · 0 评论 -
洛谷2953 [USACO09OPEN]牛的数字游戏Cow Digit Game(博弈)
题目贝茜和约翰在玩一个数字游戏.贝茜需要你帮助她。游戏一共进行了G(1≤G≤100)场。第i场游戏开始于一个正整数Ni(l≤Ni≤1,000,000)。游戏规则是这样的:双方轮流操作,将当前的数字减去一个数,这个数可以是当前数字的最大数码,也可以是最小的非0数码.比如当前的数是3014,操作者可以减去1变成3013,也可以减去4变成3010。若干次操作之后,这个数字会变成0.这时候不能再操作的一方...原创 2018-07-14 09:56:27 · 403 阅读 · 0 评论 -
poj3784 Running Median(对顶堆)
题意动态维护中位数问题:依次读入一个整数序列,每当已经读入的整数个数为奇数时,输出已读入的整数构成的序列的中位数。我的想法中位数是第(n+1)/2大的数,也可以看成是排完序后中间位置的数。再确定了一个中位数后,每加入一个新数,就用一个二分插入排序将其放入中位数左或右,这样会涉及到链表上的二分查找,我不会。其实可以用vector容器代替链表的,可以一试。题解对顶堆聪明的解题人,在中位数这里把序列折成...原创 2018-07-11 12:51:02 · 300 阅读 · 0 评论 -
bzoj1271 & 洛谷4403 秦腾与教学评估(贪心)
题目在秦腾进入北京大学学习的第一个学期,就不幸遇到了前所未有的教学评估。在教学评估期间,同学们被要求八点起床,十一点回宿舍睡觉,不 准旷课,上课不准迟到,上课不准睡觉……甚至连著名的北大三角地也在教学评估期间被以影响校容的理由被拆除。这些“变态”规定令习惯了自由自在随性生活学习的北大同学叫苦不迭。这一天又到了星期五,一大早就是秦腾最不喜欢的高等代数课。可是因为是教学评估时期,不能迟到,于是...原创 2018-07-20 16:03:08 · 298 阅读 · 0 评论 -
hdu4864 Task(贪心)
题意给你N个机器和M个任务, 每个任务有两个值花费时间x和难度y, 每个机器也有两个值最大工作时间x1和最大工作难度y1, 机器可以胜任某个工作的条件是:机器在时间上和难度上均大于任务,机器胜任一个工作可以拿到x*500+2*y的钱,现在问你怎么匹配才能使匹配数最大且钱数最多。 我的想法贪心让机器去选任务,所选的任务一定是难度上和时间上最接近的。这样可以顺利的求出最大匹配数,但求...原创 2018-07-20 16:26:54 · 354 阅读 · 0 评论 -
poj3889 Fractal Streets(递归)(分治)
题意给你一个原始的分形图,t组数据,对于每组数据,输入3个数n,h,o(n为在第n级,h,o为两个房子的编号) 。求在第n级情况下,编号为h和o的两个点之间的距离*10为多少。其中,第n级分形图形成规则如下:1、首先先在右下角和右上角复制一遍n-1情况下的分形图;2、然后将n-1情况下的分形图逆时针旋转90度,放到左上角;3、最后将n-1情况下的分形图顺时针旋转90度,放到左下角;4、按照上述规则...原创 2018-07-16 09:47:11 · 1248 阅读 · 0 评论 -
poj2965 The Pilots Brothers' refrigerator(贪心)
题意有一个4*4的由+和-组成的矩阵,通过 某个点所在行和列的所有点由+变-或由-变+ 这种操作,使所有的点变成-。 题解1暴搜每个点最多进行一次操作,所以暴力枚举O(2^16),算上常数O(2^21)。 代码#include<cstdio>#include<cstring>#include<algorithm>using ...原创 2018-07-21 16:33:51 · 193 阅读 · 0 评论 -
CH0802 占卜DIY(模拟)
题目lyd学会了使用扑克DIY占卜。方法如下:一副去掉大小王的扑克共52张,打乱后均分为13堆,编号1~13,每堆4张,其中第13堆称作“生命牌”,也就是说你有4条命。这里边,4张K被称作死神。初始状态下,所有的牌背面朝上扣下。流程如下:1.抽取生命牌中的最上面一张(第一张)。2.把这张牌翻开,正面朝上,放到牌上的数字所对应编号的堆的最上边。(例如抽到2,正面朝上放到第2堆牌最上面,又...原创 2018-07-20 16:52:04 · 816 阅读 · 0 评论 -
hdu4699 Editor(对顶堆)
题意5种操作:I x 光标前插入x这个数D 删除光标前的数L 光标左移一位 若已到最左边移不动,就不移R 光标右移一位 若移不动,就不移了Q k 输出光标前的序列 从1到k中最大连续序列和 我的想法假设这题不存在光标左移、右移,只有I、D、Q三种操作。对于I、D很容易想到用一个栈来维护已有的数字。对于Q我们当然需要求一下前缀和,另外还需要额外开一个与这个栈同步的栈,...原创 2018-08-03 21:28:37 · 256 阅读 · 0 评论 -
poj2083 Fractal(递归)
题目A fractal is an object or quantity that displays self-similarity, in a somewhat technical sense, on all scales. The object need not exhibit exactly the same structure at all scales, but the same "...原创 2018-08-01 19:41:41 · 722 阅读 · 0 评论 -
poj1050 To the Max(DP)
题意给一个n*n的矩阵,求最大子矩阵和。 我的想法这种子矩阵和的问题一般都是用个前缀和来求,一算复杂度O(n^4),一下子没了头绪。其实这题不用前缀和。 题解DP我们枚举st,ed两行,把其间的行全部压缩成一行,求以st和ed为两边的最大子矩阵和的问题,就转为求这个和数组的最大子串。求一个序列的最大子串和很简单,作为基础知识应该懂的。这样做的时间复杂度为O(n^...原创 2018-08-01 20:25:42 · 236 阅读 · 0 评论 -
CH1301 邻值查询(链表)(SET容器)
题目给定一个长度为 n(n<=10^5)的序列 A,A 中的数各不相同。对于 A 中的每一个数 Ai,求: 以及令上式取到最小值的 j(记为 Pi)。若最小值点不唯一,则选择使 Aj 较小的那个。 题解1离线做法:链表+排序先把所有数按顺序排序,然后依次插入链表。这时一个节点的prev和next分别对应它的前驱和后继。我们从后往前枚举每个数,再找到它的邻值后,便把它删了。因...原创 2018-08-10 20:02:32 · 899 阅读 · 1 评论 -
poj2823 Sliding Window(单调队列)
题意给出一个长度为n的数列a[i],对于其中长度为k的子数列,输出其最小值和最大值。 题解单调队列队列存值和位置位置离i超过k的,出队对于最大值,用降序维护,每次放入一个值时一定要让数列顶的数大于它最小值反之 代码#include<cstdio>#include<cstring>#include<algorithm>u...原创 2018-08-10 20:41:11 · 139 阅读 · 0 评论 -
poj2259 Team Queue(模拟)
题意有n个小组,要进行排队。当一个人来到队伍时,若队伍中有自己小组成员时,他就直接站到其后面(类似有熟人就插队);如果没有,则站到队伍最后面。 出队列时和普通队列一样。给出小组成员,入队指令与入队成员号码,再给出出队指令,输出出队成员号码。 题解模拟很容易想到,一条队伍中同小组的成员一定聚集在一起,所以我们可以直接用队伍的编号来表示这些聚集区。在每个小组中,要记录他们的先后顺序。...原创 2018-08-06 22:04:35 · 329 阅读 · 0 评论 -
洛谷3396 哈希冲突(分块)(预处理)(暴力)
题意有n个数,分别为a[i]。对于询问操作,给定一个模数x,求所有下标mod x等于y的数的和。对于修改操作,把位置x上的数改成y。 思路朴素做法不难想到,复杂度O(n^2)。接着可以考虑预处理的问题了,毕竟询问有15W个。设ans[p][k]表示模数是p,余数是k的数的和。虽然询问O(1),但预处理O(n^2),还是不能接受。何况空间复杂度还是O(n^2)的。先解决空...原创 2018-08-06 21:50:30 · 231 阅读 · 0 评论 -
caioj1206 【计算几何】最近点对的距离(分治)
题意给出n个点的坐标,求最近两点间的距离。(一下简称“最小点对的距离”) 题解一种方法是kd-tree,不懂略过。分治+暴力把所有点先按x升序排序。现在要求第l~r个点中的最小点对的距离,我们把其拆成两部分l~mid和mid+1~r,继续分治下去。回来后,再看看跨两部分的两个点点有没有更小的距离。要做到这个,需要插入一个小暴力。以函数x=a[mid].x为中心线,两边在d...原创 2018-08-02 16:48:54 · 435 阅读 · 0 评论 -
poj2442 Sequence(堆)
题意给定m个长度为n的序列,从每个序列中任取一个数求和,可以构成n^m个和,求其中最小的n个和。 题解堆这题就像同余方程求解一样,可以分步求解。对于第i行和第i+1行的解是一个1*n的矩阵,我们将其替代第i行和第i+1行,放回原矩阵中。这样一来问题就简化成2个长度为n的序列,分别任取一个数求和,求最小的n个。这两个序列a,b内部先分别有小到大的排序。最小解无疑是(a[1],...原创 2018-08-14 20:45:05 · 341 阅读 · 0 评论 -
CH1602 The XOR Largest Pair(Trie)
题意在给定的n个整数a1,a2,…,an中选出两个进行异或运算,得到的结果最大是多少。 题解trie异或是建立在二进制上的,所以这题的解放当然离不开二进制。把每个数用二进制表示出来,从高位(31位)到低位逐个插入,建成01trie。根据异或的特性,想要结果大,必须两者二进制位差别大。从树根(高位)开始,每次尽量选择与自己不同的子节点去,一直按这样的策略匹配到末位。每个数先与...原创 2018-08-14 20:46:27 · 313 阅读 · 0 评论 -
poj2764 The xor-longest Path(Trie)
题意一颗树n个节点,每个边有个权值,在树上找一条简单路径,使得这条路径上的边权异或值最大。 题解前缀异或和+trie设d[x]=d[fa[x]] xor e[k].c,这样做的好处是可以很方便的求出两点路径上边权的异或值wight(x,y)=d[x] xor d[y]。无论是在同一棵子树还是分散在两棵子树中,都适用。题意就转换成了求n个数中任取两个数的最大异或值。这是个基本题型...原创 2018-08-14 20:47:52 · 224 阅读 · 0 评论 -
poj1723 Soldiers(中位数)
题意给出n个点的坐标,它们只能往上、下、左、右一格一格地移动,求使其移动至水平线上的最小步数。 题解中位数先易后难,对于纵向的问题,我们推个公式,,这个很容易看出是货仓选址问题,k取y[i]的中位数就可以了。对于横向的问题,同样推一下公式,,推到这里,我们把与i相关的项全部合在了一起,只要把x[i]-i看作一个整体,这个子问题也是中位数问题。 代码#includ...原创 2018-08-02 19:28:02 · 785 阅读 · 0 评论 -
poj1220 Number Base Conversion(模拟)
题意进制转换。 题解模拟一个比较粗暴易懂的方法是像手工做一样,先把p进制转为10进制,再用短除法转为q进制。这样会涉及高精度加、乘、除(高精除低精),比较麻烦。要注意到,高精度间的运算是没有进制限制的。所以在一开始,我们就可以把全部运算切换到q进制下进行。相当于我们把p进制数分解时,不以10进制为记录其数的进制,而是在运算中直接%q,将其切换乘q进制。如果不懂的可以看代码...原创 2018-08-03 08:32:37 · 268 阅读 · 0 评论 -
poj3179 Corral the Cows(二分)(双指针)
题意约翰打算建一个围栏来圈养他的奶牛.作为最挑剔的兽类,奶牛们要求这个围栏必须是正方 形的,而且围栏里至少要有C< 500)个草场,来供应她们的午餐.约翰的土地上共有C<=N<=500)个草场,每个草场在一块1x1的方格内,而且这个方格的 坐标不会超过10000.有时候,会有多个草场在同一个方格内,那他们的坐标就会相同.告诉约翰,最小的围栏的边长是多少? 题解...原创 2018-08-03 12:32:23 · 828 阅读 · 0 评论 -
bzoj2351 [BeiJing2011]Matrix(二维hash)
题意给定一个M行N列的01矩阵,以及Q个A行B列的01矩阵,你需要求出这Q个矩阵哪些在原矩阵中出现过。 我的想法hash在不知道二维hash前,我想把一个二维矩阵转为一维的序列再hash。实现中却出现了除法,一想发现hash不能除。因为hash值本身就是模数,除法不满足同余定律。所以hash值只能通过加减乘来变化。代码放着,哪位神犇做出来了也告诉我一声。WA代码#i...原创 2018-08-13 10:58:56 · 273 阅读 · 0 评论 -
bzoj1398 Necklace(最小表示法)
题意给出两串数字,判断它们是否是同构串。 题解最小表示法裸题~~~ 代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxl=1000010;char s1[2*maxl],s2[2*maxl];in...原创 2018-08-13 11:22:26 · 291 阅读 · 0 评论 -
poj2185 Milking Grid(KMP)
题解给出一个大矩阵,求最小覆盖矩阵,大矩阵可由这个小矩阵拼成。(允许最后有残缺) 题解KMP先来讨论一个简化问题:给一个字符串,求最小覆盖串(允许最后有残缺)的长度。答案:len-next[len]。记得之前做过一道题,求最大重复子串长。那题判断是否重复的方法是len%(len-next[len])==0,如果为true,重复次数为len/(len-next[len]),长...原创 2018-08-13 12:51:26 · 230 阅读 · 0 评论 -
poj3630 Phone List(trie树)||(排序)(暴力)
题意给出n个数,判断是否有数为另一个数的前缀。 题解1排序+暴力比较这个方法好简便。以字符串的形式记录下来,排序后,相邻两个字符串比较即可。时间复杂度O(nlogn)。 题解2trie树是前缀要考虑两种情况,有可能先是一个短位的数字A,再是一个长位的数字B。根据常识,B不可能是A的前缀。对于这种情况,在A数字的末尾做一个标记,如果由数字B从这个标记上经过,则A是B的...原创 2018-08-13 14:48:44 · 277 阅读 · 0 评论