摘要: 关于数链剖分我在网上看到的有几个比较好的讲解,本篇主要是对AC代码的注释(感谢各位witer的提供)这是讲解http://www.cnblogs.com/kuangbin/archive/2013/08/15/3259083.html另一个是百度文库http://wenku.baidu.com/li... 阅读全文
posted @ 2015-07-02 16:07 Martrix99 阅读(1571) 评论(0) 推荐(0) 编辑
摘要: 依然要用到均值不等式的知识,证明在这里:http://www.cnblogs.com/xtx1999/p/4913067.html 因为知道了两个数的最大公约数和最小公倍数,于是就知道了两个数的乘积。根据均值不等式,两个数和一定两数和一定,它们两个越接近乘积越大。所以乘积一定时,它们越接近和就越小所以枚举即可。 #include #include using namespa... 阅读全文
posted @ 2015-10-27 07:47 Martrix99 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 要用到一个基本的均值不等式:(a+b)^2>=4*a*b 很好证明,把4ab移到左侧,完全平方打开,然后合并。等号在a=b时成立。所以可以知道,和一定的两个数,越接近乘积越大。所以从S/2开始向两端枚举即可。O(n*sqrt(n)) 当然还有一种简单的方法先用筛法筛出数据范围内的素数,枚举时直接判断... 阅读全文
posted @ 2015-10-27 07:37 Martrix99 阅读(1237) 评论(0) 推荐(0) 编辑
摘要: 因为都不同,所以从1开始,然后是2、3、4……所以就是等差数列求和………#include#includeusing namespace std;int n;int main(){ scanf("%d",&n); printf("%d",(1+n)*n/2);} 阅读全文
posted @ 2015-10-27 07:31 Martrix99 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 对于所有的数,统计每个数的2和5的个数,累加起来,取2和5的个数的最小值,即为0的个数、 #include #include using namespace std; int a,b,ans1,ans2; int main() { scanf("%d%d",&a,&b); for(int i=a;i<=b;i++){ int x=i; ... 阅读全文
posted @ 2015-10-26 19:20 Martrix99 阅读(762) 评论(0) 推荐(0) 编辑
摘要: 直接模拟即可 加1 乘2 加1 乘2 。。。。 循环n次#include#includeusing namespace std;int n;double ans;int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) ans+=1,a... 阅读全文
posted @ 2015-10-26 18:41 Martrix99 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 这道题,是自己手算然后发现规律最后打表,AC的。规律如下: 对于一位数,有九种情况,两位数也有九种情况。然后三位数可以视为中间一位数在变化(10种情况,有0,注意),两边是九种。乘法原理9*10=90种。四位数是最外面的数有9种,中间的两位和三位数的中间的一位相同。所以依然是90中,五位数分为三部分... 阅读全文
posted @ 2015-10-26 18:29 Martrix99 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 等差数列,比较水。给前两项,计算公差d,然后a[n]=a[1]+(n-1)*d。输出a[n]。#include#includeusing namespace std;int a1,a2,d,n;int main(){ scanf("%d%d%d",&a1,&a2,&n); d=a2-a1... 阅读全文
posted @ 2015-10-26 17:46 Martrix99 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 水题,直接列方程然后求解即可。假设出一个地球资源的增长速率 v,那么最多的人口就是这些人口消耗资源的速度为v是数量。所以: a*v-a*x=b*v-b*y 解出答案即可。#include#includeusing namespace std;double a,b,x,y; int main(){ ... 阅读全文
posted @ 2015-10-17 11:49 Martrix99 阅读(2953) 评论(0) 推荐(0) 编辑
摘要: 此题可以说是小学奥数中最难的了。根据均值不等式,一些数和一定,那么这些数乘积最大时,这些数全部相等时,乘积最大但是根据题意,每个数都不能相等,所以就需要让这些数尽量接近,并且尽量的多,所以从2开始,然后是3、4、5……当加到一个数t时,若t再加上之前所有的数超过了n,那么令t=n-之前所有数的和,然... 阅读全文
posted @ 2015-10-17 11:35 Martrix99 阅读(776) 评论(0) 推荐(0) 编辑
摘要: 首先明确,至少有一个粗管子,要不然错,题目描述错误。。。。然后对输入进行解释,给出的距离是第i个村子和第i-1个村子的距离。暴力枚举每个村子即可#include#includeint n,a[110],ans=100000000;using namespace std;int main(){ ... 阅读全文
posted @ 2015-10-17 11:22 Martrix99 阅读(264) 评论(0) 推荐(0) 编辑