摘要: 真正的水题,可惜无法当场机智一下。这样的,在一个圈圈上给你n个黑点,现在要你移动每一个黑点使得所有的点都是等间距的,每个点中最远需要一定的那个点最小可以是多少?其实是这样来考虑的,我们可以随便设置一系列参考点,不妨直接假设为(0,n/m,2*n/m,……),这样我们直接记录所有的点依次移动到这些对应位置所需要的最大的步奏和最小的步奏,这样我们就得到了到这一系列的位置的最大和最小值。这样我们需要的最终目标位置就是在最大值和最小值的中点处。这里理解一下吧,就是答案了。。 智商拙计。、、、#include #include #include #define maxn 1000100using nam 阅读全文
posted @ 2013-12-01 18:08 092000 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 题意为给你若干个三次函数,以及每一个函数所分布的区间,由于每个函数的所有的系数都是整数,所以最后的函数在整数点处的值也是整数。现在每次可以插入函数或者询问区间,现在要求每次询问区间后,所有的函数在这个区间的函数值的和。其实一个函数在这个区间的分布,就可以看成是四个函数分别在这个区间分布了。这样对于单一的函数,我们可以用线段树来维护了,每次查询和更新的操作都是在O(log(n))的复杂度内实现的。注意不要写挫,另注:UVA的服务器真的很快,果断赞啊。#include #include #include #define maxn 1000100#define M 1000000007typedef 阅读全文
posted @ 2013-12-01 18:03 092000 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 题目是说给你一个字符串,现在要你用一些特殊的符号代替这个字符串中某一些子串,使得被替换后的串是一个回文串。现在要你求替换后的字符串的最大的可能的长度。其实这个题目没有什么固定的算法哦,我直接暴力就过了,但是中间手滑,wa了太多发。其实可以这样来考虑,我们这个字符串的反序也保存一遍,这样可以建立起一个类似于链表的结构(对于每一个字符,我们在这里指向它下一次出现的下标)这样如果最后可以被替换为n个串,那么一定存在x1,x2,……,xn,是的1-x1,x1-x2,……xn-1-xn是完美的反向匹配的。同时我们需要维护每一个x最小,这样就一定是最小的。虽然可能出现极限数据使得复杂度为n^2,但是……( 阅读全文
posted @ 2013-12-01 17:59 092000 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 简单dp题。这样的,意思为给你n个数,要你现在将这n个数分为m组,使得所有组内最大值与最小值的差的和最小。其实可以这样来考虑这个问题,首先可以把所有的数字从小到大排个序,显然如果有一种取法是最优的,那么所有的组里面的数一定是从小到大排序后中间的一段。那么这样就可以dp了,f[i][j]表示前i个数分为j组,最小需要花费的代价,这样对于i+1,我们只要直接枚举最后一位数的切断的位置即可。时间复杂度:O(N^3)#include #include #include #include #define maxn 105using namespace std;int n,m,a[maxn],f[maxn 阅读全文
posted @ 2013-12-01 17:50 092000 阅读(310) 评论(0) 推荐(0) 编辑