博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU-4342 History repeat itself 二分
阅读量:5037 次
发布时间:2019-06-12

本文共 1029 字,大约阅读时间需要 3 分钟。

先二分找到这个非平方数,然后对一个一个区间进行求和的预处理。要注意边界问题。

代码如下:

#include 
#include
#include
#include
using namespace std;typedef long long Int;Int N, num;long long int sum[1000005];Int bsearch(Int l, Int r) { Int mid, left; while (l <= r) { mid = (l + r) >> 1; left = mid - (int)floor(sqrt(double(mid))); if (N > left) { l = mid + 1; } else { r = mid - 1; } } return l;}void pre(){ int lim = 1 << 16; for (int i = 1; i <= lim; ++i) { sum[i] = sum[i-1]+1LL * (2*i+1) * i; }}int main(){ Int T, pos, s; long long int ans; pre(); scanf("%I64d", &T); while (T--) { ans = 0; scanf("%I64d", &N); pos = bsearch(1, 1LL<<32); s = (int)floor(sqrt(double (pos)))-1; ans += (s+1)*(pos - (s+1)*(s+1)+1); printf("%I64d %I64d\n", pos, ans + sum[s]); } return 0;}

转载于:https://www.cnblogs.com/Lyush/archive/2012/08/07/2627251.html

你可能感兴趣的文章
Spark MLlib 之 Naive Bayes
查看>>
synchronized关键字
查看>>
自定义DataSourceProvider
查看>>
客户端向服务器提交数据,表单形式
查看>>
工具-VS2015前端开发工具简介
查看>>
php修改SESSION的有效生存时间
查看>>
spring security 11种过滤器介绍
查看>>
Hibernate一对多、多对一关联
查看>>
一、记录Git使用中遇到的问题及解决方法
查看>>
学习网址
查看>>
前端表格插件datatables
查看>>
内部类
查看>>
树链剖分入门
查看>>
图解算法时间复杂度
查看>>
UI_搭建MVC
查看>>
一个样例看清楚JQuery子元素选择器children()和find()的差别
查看>>
代码实现导航栏分割线
查看>>
Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...
查看>>
从求解三角形面积的海伦公式说起
查看>>
学习(Java Web)编程技术要点及方向; 完成项目的要决
查看>>