- 博客(10)
- 收藏
- 关注
原创 POJ 2709 混合颜料 acm 贪心
Description 杂货店出售一种由N(3也就是它不属于这N种之一。幸运的是,灰色颜料是比较好配置的,如果你取出三种不同颜色的颜料各x ml,混合起来就可以得到x ml的灰色颜料(注意不是3x)。 现在,你知道每种颜料各需要多少ml。你决定买尽可能少的“颜料套装”,来满足你需要的这N+1种颜料。那么你最少需要买多少个套装呢? Input 输
2015-08-04 10:58:38
870
原创 CSU 1548 Road And Bridge acm 三分
Description You need to design road from (0, 0) to (x, y) in plane with the lowest cost. Unfortunately, there are N Rivers between (0, 0) and (x, y).It costs c1 Yuan RMB per meter to build road,
2015-08-04 10:55:31
324
原创 CodeForces 405B Playing Dominoes acm 模拟题
Description Little Chris knows there's no fun in playing dominoes, he thinks it's too random and doesn't require skill. Instead, he decided to play with the dominoes and make a "domino show". Chr
2015-08-04 10:40:38
416
原创 CSU 1469 Change The Handles acm 模拟题
Description There are N·M handles on the ground. Every handle can be in one of two states: open or closed. The handles are represented as an N·M matrix. You can change the state of handl
2015-08-04 10:22:28
270
原创 acm解题报告 POJ 2366 Sacrament of the sum
使用二分加暴力的方法可以解决这题,对第一个序列遍历,第二个序列进行二分查找。时间复杂度:n*log(2)n 源代码: #include int a[50010], b[50010]; int main(){ int n1, n2; scanf("%d", &n1); for (int i = 0; i scanf("%d", &n2); for (int i = 0;
2015-07-23 10:39:08
397
原创 acm解题报告 HDU 1061 Rightmost Digit
要得到最右边那一位数字只需将N^Nmod10即可,但是当N很大时,N^N算不出来,所以需要用上同余的性质,即(a^b)mod c=(a^(b mod c))mod c。 所以求N^Nmod10的快速方法是对幂数N进行二分,如果N为偶数则N^N=N^(N/2)*N^(N/2),如果为奇数N^N=N^(N/2)*N^(N/2)*N。 源代码: #include long long rightm
2015-07-23 10:24:22
302
原创 acm解题报告 HDU 1969 Pie
因为题目要求分给每个人的派都是来自一个派的而不是拼接的,所以没人得到的派大小一定小于最的大派,先从大到小排序。然后对第一个(最大的派)进行二分操作,low=0,high=最大派的大小。mid=(high+low)/2。判断如果以这个大小能否得到指定块数的派。 源代码: #include #include #define pi 3.14159265358979323846 using na
2015-07-23 10:12:01
463
原创 acm解题报告 HDU 2899 Strange fuction
首先将方程求导,发现从0到导数为零的范围,原方程递减,之后方程递增,所以求出导数为0的点即为最小值点,与 HDU 2199 类似,通过二分的方法找到精确的最小值点,然后带到原方程中即得到最小值。 源代码: #include double cal1(double x, double y){ double a = 6 * x*x*x*x*x*x*x + 8 * x*x*x*x*x*
2015-07-23 09:53:02
310
原创 acm解题报告 HDU 2199 Can you solve this equation?
由于方程式单调递增的,所以直接使用二分,找到误差不超过0.00005的解就可以了。 源代码: #include double cal(double a){ double y = 8 * a*a*a*a + 7 * a*a*a + 2 * a*a + 3 * a + 6; return y; } double decimal(double a){ double b=0; r
2015-07-23 09:46:43
258
原创 acm解题报告 HDU 2141 Can you find it?
如果使用最暴力的方法,那么时间复杂度是500*500*500*1000=1.25e11>>3*3*10e8.所以肯定超时了,如果使用二分的方法,时间复杂度为500*500*log(2)500*1000≈1.3e9>9*10e8。还是会超时,但是如果现将前两个数组两两相加的结果存在一个新数组并排好序后使用二分,时间复杂度为500*500+2*log(2)500+1000*500*2*log(2)50
2015-07-23 09:30:08
386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人