hdu2446 (二分搜索)
来源:互联网 发布:c语言编写有窗口的程序 编辑:程序博客网 时间:2024/06/09 17:06
打表两个数组 然后二分就好#include <iostream>#include "stdio.h"#include "stdlib.h"#include "string.h"#include "algorithm"#include <queue>#define N 1800000#define LL long long intusing namespace std;LL ss[N]={0},as[N]={0};LL find_one(LL n){ int l=1,r=N-1,mid; while(l<r) { mid=(l+r)/2; if(as[mid]<n) l=mid+1; else if(as[mid]>n) r=mid-1; else return mid; } return l;}LL find_two(LL n,LL tmp){ LL l=1,r=tmp,mid; while(l<r) { mid=(l+r)/2; if(ss[mid]<n) l=mid+1; else if(ss[mid]>n) r=mid-1; else return mid; } return l;}int main(){ int t;LL s; for(int i=1;i<N;i++) ss[i]=ss[i-1]+i; for(int i=1;i<N;i++) as[i]=as[i-1]+ss[i]; scanf("%d",&t); while(t--) { scanf("%lld",&s); LL pos_heap=find_one(s); if(as[pos_heap]<s) pos_heap++; LL pos_two=find_two(s-as[pos_heap-1],pos_heap); if(ss[pos_two]<s-as[pos_heap-1]) pos_two++; LL pos_thr; if(ss[pos_two]==s-as[pos_heap-1]) pos_thr=pos_two; else pos_thr=s-as[pos_heap-1]-ss[pos_two-1]; printf("%lld %lld %lld\n" ,pos_heap,pos_two,pos_thr); } return 0;}
Distributed under GPLv3. | Project Homepage | Developer: 51isoft crccw | Current Style:Cerulean.
Select Style: 0 0
- hdu2446 (二分搜索)
- hdu2446--二分搜索+打表
- HDU2446
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- AnjularJS初学(AnjularJS验证)
- Compute 16-bit One's Complement Sum (memo)
- SelectTop200_2.java
- js键盘码
- POJ1840(hash)
- hdu2446 (二分搜索)
- 使用zxing扫码打开闪光灯
- UISearchBar样式修改
- angularjs学习笔记【不定期更新】
- 测试方法-----黑盒测试篇(输入项的测试方法)
- SelectTop200_3.java
- 电子类产品生产经验总结
- 黑马程序员------网络编程
- 随着ScrollView上下滚动 标题栏透明度随之而改变