随笔分类 - poj
摘要:题目链接:http://poj.org/problem?id=2456 题意 给出 $n$ 座牛舍的坐标 $x_i$,问 $m$ 头牛两两之间最小间距的最大值。 题解 二分最大值,然后把牛贪心地在牛舍间分配即可。 代码 #include <cstdio> #include <algorithm> u
阅读全文
摘要:题目链接:http://poj.org/problem?id=3280 题意 给定字符串 $s$,长度为 $m$,由 $n$ 个小写字母构成。在 $s$ 的任意位置增删字符,把它变为回文串,增删特定字母的花费不同。求最小花费。 题解 $dp_{ij}$ 表示将区间 $[i,j]$ 变为回文的最小花费
阅读全文
摘要:题目链接:http://poj.org/problem?id=2356 题意 有 $n$ 个数,从中选取一些数使得它们的和为 $n$ 的倍数。($n≤10000,1≤a_i≤15000$) 题解 $n$ 个前缀和加上初始的 $0$ 共有 $n + 1$ 个数,对 $n$ 取余一定会有两个前缀和同余,
阅读全文
摘要:题目链接:http://poj.org/problem?id=2299 题意 给出含有 $n$ 个不同的数的数组,相邻元素间可以两两交换,计算数组变为升序需要交换多少次。 题解 其实就是计算数组中的逆序数。 题解一(归并排序) 考虑两个区间合并的过程,如果左边区间未归并数首部的值大于右边区间未归并数
阅读全文
摘要:题目链接:http://poj.org/problem?id=3320 题意 在 n 个元素的数组中寻找包含所有大小元素的最短连续区间。 思路 双指针,在保证指针区间包括所有大小的同时每次删减最左端的一个大小。 代码 #include <cstdio> #include <set> #include
阅读全文
摘要:题目链接:http://poj.org/problem?id=3061 题意 在 n 个元素的数组中寻找和不小于 s 的最短连续区间。 思路 思路一 作前缀和二分查找,时间复杂度 $O_{(nlogn)}$ 。 代码一 #include <cstdio> #include <algorithm> u
阅读全文
摘要:上古oj:http://poj.org/problem?id=1852 题意 长 $l$ cm 的水平杆上有 $n$ 只蚂蚁,每只蚂蚁的速度均为 $1$ cm/s。当蚂蚁到达杆的一端时,它立即从杆上掉下来。当两只蚂蚁相遇时,他们转身开始向相反的方向行走。已知每只蚂蚁初始时距离左端的距离,蚂蚁初始面朝
阅读全文
摘要:题目链接:http://poj.org/problem?id=1064 题意 有 N 条绳子,它们的长度分别为 Li 。如果从它们中切割出 K 条长度相同的绳子的话,这 K 条绳子每条最长能有多长?答案保留到小数点后 2 位。 思路 二分确认每次是否至少能切割出 K 条绳子。 代码 #include
阅读全文
摘要:题目链接:http://poj.org/problem?id=2528 第一次写这么长的代码... 题意: 有一长为107的区间,给n个区间染色,问最后可以看到几种颜色。(1≤n≤104) 思路: 区间问题比较适合用线段树处理,因为区间较大,需要将端点离散化集中起来减小内存开支。 Tips: std
阅读全文
摘要:题目链接:http://poj.org/problem?id=2182 题意: 有一行牛身高从1到n,已知每个牛左面身高低于该牛的牛的个数,问这行牛的排列情况。(2≤n≤8000) 思路: 每次从后往前处理时从前往后找到余下数列的第pre[i]+1小元素。 Tips: poj不支持<bits/std
阅读全文
摘要:题意: 0到N的数轴上,每次可以选择移动到x-1,x+1,2*x,问从n移动到k的最少步数。 思路: 同时遍历三种可能并记忆化入队即可。 Tips: n大于等于k时最短步数为n-k。 在移动的过程中可能会越界、重复访问。 poj不支持<bits/stdc++.h>和基于范围的for循环。 #incl
阅读全文

浙公网安备 33010602011771号