Aggregated Counting-----hdu5439(2015 长春网络赛 找规律)
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define N 500000
#define mod 1000000007 __int64 a[N], b[N], ans[N]; void Init()
{
int i;
a[] = b[] = ;
a[] = ;
b[] = ;
for(i=; i<N; i++)
{
a[i] = lower_bound(b+, b+i, i) - b;
b[i] = b[i-] + a[i];
}
ans[] = ;
for(i=; i<N; i++)
{
ans[i] = ans[i-] + (b[i]-b[i-])*(b[i-]+ + b[i]) / % mod * i % mod;
}
} int main()
{
int T, n, i;
Init();
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
int pos = lower_bound(b+, b+N+, n) - b;
__int64 Ans = ans[pos-];
for(i=b[pos-]+; i<=n; i++)
Ans = (Ans + (__int64)i*pos) % mod;
printf("%I64d\n", Ans);
}
return ;
}
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5439
函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置
pos = lower_bound(a, a+n, k) - a; 是在a中>=k的第一个数的位置;
题意:刚开始给一个1,序列a是由a[i]个i组成,最后就变成了1,2,2,3,3,4,4,4,5,5,5.......
就是求Ans: 即n在a中最后出现的位置m,m在a中的最后出现的位置Ans;
我们用b【i】表示i在a中出现的最后位置;
用ans【i】表示b【i】在a中出现的最后位置;
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define N 500000
#define mod 1000000007 __int64 a[N], b[N], ans[N]; void Init()
{
int i;
a[1] = b[1] = 1;
a[2] = 2;
b[2] = 3;
for(i=1; i<N; i++)
{
a[i] = lower_bound(b+1, b+i, i) - b;
b[i] = b[i-1] + a[i];
}
ans[1] = 1;
for(i=2; i<N; i++)
{
ans[i] = ans[i-1] + (b[i]-b[i-1])*(b[i-1]+1 + b[i]) / 2 % mod * i % mod;
}
} int main()
{
int T, n, i;
Init();
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
int pos = lower_bound(b+1, b+N+1, n) - b;
__int64 Ans = ans[pos-1];
for(i=b[pos-1]+1; i<=n; i++)
Ans = (Ans + (__int64)i*pos) % mod;
printf("%I64d\n", Ans);
}
return 0;
}
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define N 500000
#define mod 1000000007 __int64 a[N], b[N], ans[N]; void Init()
{
int i;
a[1] = b[1] = 1;
a[2] = 2;
b[2] = 3;
for(i=1; i<N; i++)
{
a[i] = lower_bound(b+1, b+i, i) - b;
b[i] = b[i-1] + a[i];
}
ans[1] = 1;
for(i=2; i<N; i++)
{
ans[i] = ans[i-1] + (b[i]-b[i-1])*(b[i-1]+1 + b[i]) / 2 % mod * i % mod;
}
} int main()
{
int T, n;
Init();
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
int pos = upper_bound(b+1, b+N+1, n) - b - 1;
__int64 Ans = (ans[pos] + (b[pos] + 1 + n)*(n - b[pos])/2 % mod * (pos+1)) % mod;
printf("%I64d\n", Ans);
}
return 0;
}
Aggregated Counting-----hdu5439(2015 长春网络赛 找规律)的更多相关文章
- Hdu 5439 Aggregated Counting (2015长春网络赛 ACM/ICPC Asia Regional Changchun Online 找规律)
题目链接: Hdu 5439 Aggregated Counting 题目描述: 刚开始给一个1,序列a是由a[i]个i组成,最后1就变成了1,2,2,3,3,4,4,4,5,5,5.......,最 ...
- hdu 4731 2013成都赛区网络赛 找规律
题意:找字串中最长回文串的最小值的串 m=2的时候暴力打表找规律,打表可以用二进制枚举
- 2015长春网络赛1001 求连通快数量的问题dfs
Ponds Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Sub ...
- hdu 5441 (2015长春网络赛E题 带权并查集 )
n个结点,m条边,权值是 从u到v所花的时间 ,每次询问会给一个时间,权值比 询问值小的边就可以走 从u到v 和从v到u算不同的两次 输出有多少种不同的走法(大概是这个意思吧)先把边的权值 从小到大排 ...
- hdu 5446(2015长春网络赛J题 Lucas定理+中国剩余定理)
题意:M=p1*p2*...pk:求C(n,m)%M,pi小于10^5,n,m,M都是小于10^18. pi为质数 M不一定是质数 所以只能用Lucas定理求k次 C(n,m)%Pi最后会得到一个同余 ...
- Hdu 5445 Food Problem (2015长春网络赛 ACM/ICPC Asia Regional Changchun Online)
题目链接: Hdu 5445 Food Problem 题目描述: 有n种甜点,每种都有三个属性(能量,空间,数目),有m辆卡车,每种都有是三个属性(空间,花费,数目).问至少运输p能量的甜点,花费 ...
- Supreme Number 2018沈阳icpc网络赛 找规律
A prime number (or a prime) is a natural number greater than 11 that cannot be formed by multiplying ...
- HDU 4763 Theme Section (2013长春网络赛1005,KMP)
Theme Section Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- HDU 4764 Stone (2013长春网络赛,水博弈)
Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
随机推荐
- JS - caller,callee,call,apply
在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments Arguments : 该对象代表正在执行的函数和调用它的函数的参数. [function.]argument ...
- oracle中floor函数和to_number函数区别
oracle中floor函数没有值默认是0,number函数没有值默认是空
- xcode6 dyld_sim is not owned by root
如果运行复制过来的xcode可能会这个提示,xcode6 dyld_sim is not owned by root解决方法打开终端 输入sudo xcode-select -switch /Appl ...
- love2d--glsl03噪声
由于一些glsl的教程都是3d的,而love是2d的,所以之后以示例为主,我会收集 一些love的shader,分类讲解. 此文简译自love2d社区博客,这里略去作者的自我介绍. 像素着色器入门 示 ...
- Parallelism , Partitioner
转:spark通过合理设置spark.default.parallelism参数提高执行效率 spark中有partition的概念(和slice是同一个概念,在spark1.2中官网已经做出了说明) ...
- make: *** [sapi/cli/php] Error 1 解决办法
make: *** [sapi/cli/php] Error 1 一:考虑过make clean,问题依然 二:(采取此方法后出现启动apache报错:/usr/local/apache2/modul ...
- 9款很酷炫jQuery/HTML5特效应用 有源码哦~
目前最流行的网页特效应用当属jQuery和HTML5的特效应用了,它们可以帮你快速实现网页中的各种特效设计.本文就为了收集了9款非常酷炫的jQuery/HTML5特效应用,可以很方便的 ...
- php -- memcached 内存缓存
一.memcached 简介 在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东.这里简单介绍一下,memcached 是高 ...
- 【SPOJ】8222. Substrings(后缀自动机)
http://www.spoj.com/problems/NSUBSTR/ 题意:给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值.求F(1)..F(Length(S)) 这题 ...
- Python3创建RIDE桌面快捷方式的另一种方法
今天尝试了一下Python3下安装Robot Framework,但是原来的Python2下创建ride快捷方式的方法都不奏效,启动不了ride.于是,转为VBS脚本的方式来间接创建快捷方式.毕竟,每 ...