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 ...
随机推荐
- oracle 远程登录
打开命令终端,输入命令:sqlplus /nolog 输入命令:conn sys/sys@dba as sysdba
- (转)love2d有用的辅助库--gamework
此文转自朱大仙,感谢他的劳作. 翻译来源地址:https://github.com/Kadoba/gamework gamework是控制LOVE2D游戏进程流的一个项目. ↑ 这个是按原文译的, 当 ...
- modSecurity和Naxsi哪个更适合Nginx搭建WAF
nginx增加modsecurity模块 modsecurity原本是Apache上的一款开源waf,可以有效的增强web安全性,目前已经支持nginx和IIS,配合nginx的灵活和高效,可以打造成 ...
- selenium测试环境搭建(一)
selenium测试环境搭建 下载资源 1. selenium-java-2.53.0.zip 下载地址:http://pan.baidu.com/s/1dFDf27Z 2. Firefox Set ...
- 在J2EE的Web应用中,编译后的class文件存放的目录为(选择1项)
在J2EE的Web应用中,编译后的class文件存放的目录为(选择1项) A. classes目录 B. images目录 C. jar目录 D. 任意位置 解答:A
- ulimit命令学习
通过ulimit -n命令可以查看linux系统里打开文件描述符的最大值,一般缺省值是1024,对一台繁忙的服务器来说,这个值偏小,所以有必要重新设置linux系统里打开文件描述符的最大值.那么应该在 ...
- linux下源代码搭建php环境之mysql(一)
如今已经大半夜了,五一劳动节挺无聊的. 折腾一下吧.实在是睡不着.于是乎在电脑上安装个虚拟机,然后呢,在虚拟机上搭建一个php环境. 首先我得安装MYSQL吧. 发现遇到的问题真多. .待我娓娓道来. ...
- laravel 调试模式及日志配置
1)调试模式和日志的配置都在 config/app.php 配置文件中 2)打开调试模式 'debug' => env('APP_DEBUG', true) 3)laravel的日志默认已经打开 ...
- Python UnboundLocalError 异常
如下,当我们在函数中对全局变量重新赋值的时候就会出现 UnboundLocalError 异常,虽然 num 这个变量在外部已经被定义成全局变量,但是如果在函数中进行重新赋值操作,python 会自动 ...
- 说说M451例程之PWM的寄存器讲解
M451提供了两路PWM发生器.每路PWM支持6通道PWM输出或输入捕捉.有一个12位的预分频器把时钟源分频后输入给16位的计数器,另外还有一个16位的比较器.PWM计数器支持向上,向下,上下计数方式 ...