上一页 1 2 3 4 5 6 ··· 32 下一页
摘要: 二分题意:给出n条线段,以米的单位给出,小数点后两位(精确到厘米),要你对这些线段裁剪,裁剪出m条等长的线段,并且让这些线段尽可能长另外线段的长度不能小于1厘米,如果筹不够m条,输出0.00做法就是二分答案,但是二分的区间有讲究一开始我认为长度的上限应该是 min { len[i] },即最短的那条线段,后来才想到是错的,应该是max{ len[i] },因为有一点想当然了,认为裁剪线段,就是每条线段都要裁剪,其实不是的,并不是每条线段都要裁剪好像4 22.003.004.00答案是2.00吗?不是的,应该是3.00,虽然3.00大于第一条线段的长度,那么就不要裁剪第1条线段,直接从第2,第3 阅读全文
posted @ 2013-06-11 18:37 Titanium 阅读(2734) 评论(0) 推荐(1) 编辑
摘要: 构造类问题,打表找规律题意:输入n,生成一个n的全排列a,生成一个n的全排列b,从第1位到第n位,每个位上的对应的(ai+bi)%n=ci,然后得到n位的序列c,看看c是不是也是一个n的全排列,是的话就成功了,输出。如果无论怎样都找不到合适的a和b去构造出c,那么就输出-1这题一想通了,仅是那么的水,但是自己还是很长时间去思考说说思考的过程1.很容易想到,题目是想我们我们构造一个合适的a,b,进而产生合适的c,虽然题目让我们输出任意一个合法的排列就可以了,但其实要我们找的不是排列方案,而是匹配方案试想一下,如果手头上有合适的一个排列,那么我们把对应的ai,bi,ci捆版在一次,我们完全可以对这 阅读全文
posted @ 2013-06-11 12:41 Titanium 阅读(491) 评论(0) 推荐(1) 编辑
摘要: LCA题意:单case,一棵无根树,输入点数和操作数,下面一行n个值代表每个点的权。下面n-1行是树边操作分为0 x w ,表示把点x的权改为wk a b , 求出,从a到b的路径中,第k大的点权这题,没什么太特别的地方,一开始写怕会超时,最后没有,就是直接按照题意来就可以了对于修改操作就直接修改对于查询第k个权的操作,先求出a,b的lca,然后将a到b路径上的点权都保存在一个数组中,然后降序排序,输出第k个元素即可#include <iostream>#include <cstdio>#include <cstring>#include <cmath 阅读全文
posted @ 2013-06-10 18:49 Titanium 阅读(1447) 评论(1) 推荐(0) 编辑
摘要: http://codeforces.com/contest/305/problem/B数学,模拟题意:略这题,可以按照后面Hint那样逆回来模拟,但是long long会溢出,case 40#中的溢出,让人没了脾气,刚好溢出又刚好能输出YES,所以就正着模拟,可以避开溢出问题,但是要注意一点为了叙述,我们就举n=2的例子对于等式可以写成 a1 + (1/x) = p/q , 如果它们相等,那么我们先算出 p / q的整数部分 Int = p / q (计算机做除法自动取整)若Int < a1 , 那么这个等式是不可能相等的,一定是左边大若Int > a1 + 1 , 那么这个等式是 阅读全文
posted @ 2013-06-09 23:14 Titanium 阅读(441) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/contest/313/problem/D区间DP很好的一道题目,是上周的比赛的题目了现在才补上来题意:给一个总区间,下面m个小区间,每个小区间有对应的花费,要求用这些小区间去覆盖总区间(允许有重叠),要求覆盖k个单元(不一定连续,只要k个),问最小花费是多少很典型的区间dp问题,不过数据很大,要想想怎么处理留意到,总区间长度只有300,但是可供选择的小区间的数目多达10^5个,所以可知很多区间是可以去掉的,相同的区间,我们当然只保留花费最小的,但是除此之外还能怎样再减少小区间的数目呢?while(m--) { int x,y; ... 阅读全文
posted @ 2013-06-08 21:53 Titanium 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 二分比较好的二分题目,需要花点脑筋想到,另外写的细节也多题意:比较好懂,a数组有n个元素,b数组有m个元素,a数组的元素分别和b数组的元素相乘得到新的元素,那么一共会得到n*m个元素,将这些元素降序排序,找到第k大的元素是谁为检验算法正确性,一个暴力的程序很容易写出来,关键是正解是什么,ab数组的元素个数都很多,暴力会超时,而且空间也不允许使用二分,而且是嵌套的二分,两个二分的目的不同外层二分是位了枚举答案,内层二分是检验当前的答案是否符合做法:先将ab数组降序排序,那么我们知道a[1]*b[1]是最大值,a[n]*b[m]是最小值,其他元素的乘积一定在这个区间内,我们并不知道答案是多少,所以 阅读全文
posted @ 2013-06-08 19:11 Titanium 阅读(388) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/315/B数据结构?这题比赛时想到了线段树,后来发现错了,确定是数据结构方向的,一直想,想了可能有20分钟的样子,觉得可以水过去,然后就去水,然后过了,赛后这题被归为数据结构,但是觉得这个分类有时候真的不太靠谱,不知道数据结构到底怎么写,但是看别人的代码,水过去的做法更多题意:3个种操作1 x val ,把数组下标x的元素的值改为val2 val , 把整个数组每个元素的值都增加val3 x , 查询下标x的元素当前的值问题的关键是修改某个单元的值,试想2操作做了好几次,即整个数组的值加了好几个值,这时候执行1操 阅读全文
posted @ 2013-06-08 12:09 Titanium 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 欧拉回路题意:给一个有向图,判断是否是欧拉回路,并且输出路径, 要求字典序最小。其中输出时这个给的,x y z,x和y是点的编号(点数最多44),z是边的编号(这边是有编号的,边数最大1995),其中输出路径不是输出点而是输出边的编号,所以字典序最小是指边的字典序最小。每组数据以0 0 结束。其中每组数组的第一行,两个点x,y,选较小的那个作为起点这题,图是保证连通的,所以不需要判断连通,所以判断是不是欧拉图,只需要看每个点的度是否都为偶数,不是的话则不存在欧拉回路,是的话就存在欧拉回路输出字典序最小的路径,环一个建图方法即可e[k][0] , e[k][1]表示第k条边的两个顶点我们用递归的 阅读全文
posted @ 2013-06-07 18:20 Titanium 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 树题意:给一个有向图,判断是否为有根数树这题应该来讲是个水题但是OJ将其归为星题,主要是容易WA,理清逻辑就可以了注意:有根树的判定,1.连通,2边数+1 = 点数 3.无环 由两个可以推到另一个做这题紧紧抓住树的定义即可,另外处理一下下面的一些特殊情况1.题意要求是树,不能是森林2.空树也是树,题目一开始说了3.数据中可能有自环,即1 1这种,这样就不是一棵树了3.有重边,1 2 , 1 2,同样不是树4.有环,1 2 , 2 1,同样不是树5.横叉边 2 3 , 4 3 , 同样不是树网上都说并查集,其实不用那么麻烦,就模拟一下即可#include <iostream>#inc 阅读全文
posted @ 2013-06-07 14:57 Titanium 阅读(286) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/contest/313/problem/C贪心,构造性问题题意:一开始看错了以为是一个直接递归就能解决的问题,后来才发现,是要构造一个矩阵。给了4^n个数字,然后让你利用这些数字构造出一个2^n*2^n的方阵,并且令到这个方阵的beauty值最大。一个方阵的beauty值是这样定义的,这个方阵如果只有一个元素,那么它的beauty值就是这个元素,当然这个方阵里面的最大元素也是它。如果这个方阵不止一个元素,这个方阵一定能分割为4个等大的小方阵(因为保证是2^n*2^n的。一定可分割),大方阵的beauty值等于4个小方阵的beauty值相加,再加上大方 阅读全文
posted @ 2013-06-06 19:34 Titanium 阅读(296) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 32 下一页