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 ...
随机推荐
- 转载:vim的复制,删除,粘贴,块操作以及快速替换功能
掌握如下命令有什么好办法,我可以告诉你唯手熟尔!!多看多练对于VIM而言,复制,删除,粘贴的操作应该是非常多的.这次也做一个总结,关于处理VIM下的复制,删除,粘贴等操作.学会使用帮助文件,命令的帮助 ...
- 如何使用PHP开发高效的WEB系统
PHP是一个非常优秀的工具,它能够简单,也能够复杂.不一样的项目,应该用不一样的PHP. 小项目 - 简单而直接的PHP 一般对于一个功能页面在20下面的站点.我们能够用一个非常easy的框架结构来 ...
- 几种在Linux下查询外网IP的办法。
几种在Linux下查询外网IP的办法. Curl 纯文本格式输出: curl icanhazip.com curl ifconfig.me curl curlmyip.com curl ip.ap ...
- C++ 类的抽象初练
/* 某商店经销一种货物,货物的购进和卖出以箱为单位,各箱的重量不一样, 因此商店需要目前库存的总重量. 现在用c++模拟商店货物购进和卖出的情况 */ #include<iostream> ...
- hrbustoj 1104:Leyni, LOLI and Line(解析几何,斜截式的应用)
Leyni, LOLI and Line Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 181(54 users) Tota ...
- python MySQLdb在windows环境下的快速安装
python MySQLdb在windows环境下的快速安装.问题解决方式 使用python访问mysql,需要一系列安装 linux下MySQLdb安装见 Python MySQLdb在Linux下 ...
- 目标检测YOLO算法-学习笔记
算法发展及对比: 17年底,mask-R CNN YOLO YOLO最大的优势就是快 原论文中流程,可以检测出20类物体. 红色网格-张量,在这样一个1×30的张量中保存的数据 横纵坐标中心点缩放到0 ...
- Spring boot Junit Test单元测试
Spring boot 1.40 JUnit 4 需要依赖包 spring-boot-starter-test.spring-test 建立class,加上如下注解,即可进行单元测试,别的帖子里说要加 ...
- RMI几种公布和引用服务的方式
RMI是Java原生的分布式服务机制.支持Java对Java的分布式訪问.採用Java的序列化协议进行CodeC操作. 这里简单说下RMI公布服务和client引用服务的方式. RMI公布服务时支持两 ...
- [置顶]JB开发之制作系统级Application
1.编译工程,生成xx.app 2.制作引导进程xx替换xx.app里面的xx进程 引导进程代码: int main(int argc, char *argv[]) { @autoreleasepoo ...