12 2013 档案
摘要:这。。。水题。可惜坑了无数发。显然对于当前的半径的园,多边形的边数越多,周长越短,面积也就越小。一开始我是用二分去做的,事实证明也是可以的,只是我坑了。其实没必要去用二分哦,这样来考虑这问题。每次我都用最短允许的边与圆相切,看看这条边所占的角度有多大,这样就可以直接得出多少边形了。。。。(神坑吧)接下来直接根据边数算出面积,就得答案了。 这才是真正的全场最水题啊。。。。。啊啊。。嗄。 吖a.a..。 阿。。精度问题也都不用考虑。。。。。#include #include using namespace std;const double full=2*acos(-1.0);double R,r.
阅读全文
摘要:全场最水题。保留打印a[i]份分别需要的钱,从后往前扫一遍,保证取得最优解。查找的时候,二分同时判断最小值即可。注意初值的设定应该设定为long long 的无穷大。#include #include #include #define maxn 100100typedef long long ll;using namespace std;ll a[maxn],b[maxn],c[maxn],f[maxn],ans,n,m,t,k,num;ll find(ll x){ if (x>=a[n]) return n; if (x=x) r=mid; else l=m...
阅读全文
摘要:真正的水题,可惜无法当场机智一下。这样的,在一个圈圈上给你n个黑点,现在要你移动每一个黑点使得所有的点都是等间距的,每个点中最远需要一定的那个点最小可以是多少?其实是这样来考虑的,我们可以随便设置一系列参考点,不妨直接假设为(0,n/m,2*n/m,……),这样我们直接记录所有的点依次移动到这些对应位置所需要的最大的步奏和最小的步奏,这样我们就得到了到这一系列的位置的最大和最小值。这样我们需要的最终目标位置就是在最大值和最小值的中点处。这里理解一下吧,就是答案了。。 智商拙计。、、、#include #include #include #define maxn 1000100using nam
阅读全文
摘要:题意为给你若干个三次函数,以及每一个函数所分布的区间,由于每个函数的所有的系数都是整数,所以最后的函数在整数点处的值也是整数。现在每次可以插入函数或者询问区间,现在要求每次询问区间后,所有的函数在这个区间的函数值的和。其实一个函数在这个区间的分布,就可以看成是四个函数分别在这个区间分布了。这样对于单一的函数,我们可以用线段树来维护了,每次查询和更新的操作都是在O(log(n))的复杂度内实现的。注意不要写挫,另注:UVA的服务器真的很快,果断赞啊。#include #include #include #define maxn 1000100#define M 1000000007typedef
阅读全文
摘要:题目是说给你一个字符串,现在要你用一些特殊的符号代替这个字符串中某一些子串,使得被替换后的串是一个回文串。现在要你求替换后的字符串的最大的可能的长度。其实这个题目没有什么固定的算法哦,我直接暴力就过了,但是中间手滑,wa了太多发。其实可以这样来考虑,我们这个字符串的反序也保存一遍,这样可以建立起一个类似于链表的结构(对于每一个字符,我们在这里指向它下一次出现的下标)这样如果最后可以被替换为n个串,那么一定存在x1,x2,……,xn,是的1-x1,x1-x2,……xn-1-xn是完美的反向匹配的。同时我们需要维护每一个x最小,这样就一定是最小的。虽然可能出现极限数据使得复杂度为n^2,但是……(
阅读全文
摘要:简单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
阅读全文
浙公网安备 33010602011771号