杂题
Lei2015_
这个作者很懒,什么都没留下…
展开
-
UVA 10905 Children's Game
这题还是比较有意思的,给你一堆数字,你要把这堆数字一个一个的串联起来组成一个大数字,要求这个数字最大。本来以为只是比较一下字符串。把字典序从大到小接连起来。后来想想不对。两个字符串长短不同的时候会有错误。比如 90和9 90的字典序要大于9,但是9放在前面比较好。所以,当短的数字在长的数字里面出现循环的时候非常棘手。可以递归的把长数字里面的短数字给去掉,然后比较剩下的部分就好了。原创 2013-12-08 17:45:51 · 536 阅读 · 0 评论 -
SGU 148 枚举出奇迹 单调性以及前缀和
。。。。题目不难。。很多技巧。。解题报告:讲的真好这种题感觉和单调队列优化的问题差不多。首先,最重要的一点是目标是最后一层,所以,当我不直接对最后一层用钱时,我选择一层开始用钱施压,则,从这一层到最后的水必须都得到最后一层,否则没有意义。所以,我只需要枚举这个最高点在哪里就可以了。假如我知道这个最高点在哪里,我就可以从这个点枚举到最后一个点,假设这一层为 p 层(从上到下是 1原创 2014-03-27 15:28:03 · 989 阅读 · 0 评论 -
SGU 397 链表 或者 两个栈。
一开始觉得这个题要平衡树来做。。。毕竟要动态的插入。。毕竟啊,平衡树的插入是 logn 的是因为他一开始不知道把元素插入到哪里。通过寻找,然后才插入的,这个我一开始就知道他应该插入哪里,所以,根本用不着平衡树,链表就OK了。虽然很简单。。但是是第一次用 STL 的链表栈 #include #include #include #include #include #i原创 2014-03-27 10:19:09 · 497 阅读 · 0 评论 -
不可重复全排列。。。。
比如说 122有重复数字想想如何计算个数,就是全排列除以重复的全排列只要让重复的有顺序就好了。。于是用个used 来计算个数,第n个只有在第n-1个用过之后才能用。这样就 OK 了#include #include #include #include #include #include #include #include #include #include原创 2014-03-19 18:20:10 · 737 阅读 · 0 评论 -
POJ 3670 搞。。
对于两种情况,可以当一种情况来处理,3332211只需要把前一种情况的数字变成 4-cow[i] 就可以了对于两个分割点 需要修改的就是第一个分割点前面的 2 3 用 front2 front3表示第二个分割点与第一个分割点之间的 1 3 mid1 mid3第二个分割点之后的 1 2 back1 back2所有修改次数就是 front2+front3+mid1+mi原创 2014-03-18 12:37:43 · 627 阅读 · 0 评论 -
POJ 3668 分数保存斜率
一开始的时候直接用 double 来保存斜率,真是 too young too simple .. always naive2000*2000的数组开不下,只好优化下内存,好在hash这个东西存的时候每个只需要1 bit ,一个int就能装32bit拉。最后 斜率为0和斜率为 无穷大要特判一下。#include #include #include #include #inclu原创 2014-03-18 10:45:57 · 554 阅读 · 0 评论 -
POJ 2559 最大矩形。。
栈的应用,计算每个矩形往左往右最多能扩展到哪里。然后再枚举一遍 O(n) 的#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace原创 2014-03-27 19:50:48 · 559 阅读 · 0 评论 -
POJ 2255 经典的重建二叉树
根据前序遍历和中序遍历构造后序遍历。根据树的递归性。其实每次我们找根就OK了,剩下的递归来做。根据前序找到根,根据中序找到左子树和右子树。然后递归的进行。#include #include #include #include #include #include #include #include #include #include #include #includ原创 2014-03-14 22:56:00 · 674 阅读 · 0 评论 -
POJ 2109 少见多怪,利用double log pow 解决高精度
kn = p,给出n 和 p 求k本来想用二分+高精度来做,当想了想还是觉得有点不靠谱,第一代码实现起来麻烦,第二,复杂度有点悬,case多点就可能超时。就像上次天津的比赛的时候被 ZWJ 爆过的那道题一样,用 log 来解决高精度问题。另外 double 的表示范围是 10^(-307) ~ 10^(-308) 题目中够用了。所以可以搞定。直接计算 pow(p,1/n) ,就完了原创 2014-01-20 11:41:01 · 629 阅读 · 0 评论 -
POJ 3295 后缀表达式
给你一个表达式 类似这种形式 ApNq 大写字母代表操作(&& || 之类的),小写字母代表 bool 变量,若表达式无论变量值为何均为真,则输出 tautology ,否则输出 not.下面是操作符的真值表,想起来前一段时间看到的抽象语法树, 我就根据表达式构造一颗树, 然后分别给变量赋值就 OK 拉。Definitions of K, A, N, C, and E原创 2014-01-21 00:05:57 · 806 阅读 · 0 评论 -
CodeForces Round 223 Div 2 C Sereja and Prefixes
乱搞题..题目链接 http://codeforces.com/problemset/problem/380/A一个人要做个数字序列,有两种操作,1 是 向后面加个数字 2 是向后面加上从 1 到 l 的复制 C 次的序列最后有 m 个询问记录下每个操作所诞生的序列的开始位置记录下每个操作的信息,放在 node 里面遇到 类型 1 的节点 直接返回值遇到 类型 2 的节原创 2014-01-13 02:05:26 · 638 阅读 · 0 评论 -
CodeForce 375B D - Maximum Submatrix 2
这又是一个需要保存后缀和来减少计算量的题目给你一个01矩阵,可以交换行,问,能得到的只包含1的子矩阵是多大,矩阵 n 行 m 列,0 对于这个子矩阵,我们枚举他可能的左上角,然后计算获得以此为左上角得到的最大 1 的矩阵是多少,这样问题就在于,怎么知道这个矩阵最大的长和宽呢?容易想到的是取得从每一个位置开始连续的 1 的个数,对于 1 较少的, 可以想象这个矩阵长比较大, 对于1 比较原创 2014-01-10 21:02:31 · 895 阅读 · 0 评论 -
UVA 10057 中位数
题目给出N个数,求出其中一个数A,所有数与这个数的差的绝对值最小。这个数必须是中位数。假设N是奇数,对于中位数MID,左边有N/2个数,右边有N/2个数。假设此时和为SUM。如果A不选择MID,而是选择MID左边一个数的话,则左边的数到A的距离均减一,右边的数加上中位数到MID距离加一。SUM‘=SUM+1,SUM增大,同理右边。所以必须是中位数。对于带权中位数。对于每一个原创 2013-12-08 16:40:50 · 581 阅读 · 0 评论 -
SGU 231
相加为素数的素数对。。素数除了 2 都是奇数,d原创 2014-05-09 17:13:31 · 480 阅读 · 0 评论