码农场 » POJ 2566 Bound Found 题解 《挑战程序设计竞赛》
来源:互联网 发布:程序员必须会c语言吗 编辑:程序博客网 时间:2024/05/22 03:03
本题用的是取尺法,是难得的好题,不过题目数据似乎有些问题,取尺法的复杂度为O(k*n),很明显应该TLE,但是却过了。
而且,本题是想加排序之后才采用的取尺法。
#include <iostream>#include<cstdio>#include<algorithm>#include<math.h>using namespace std;const int N=100005;const int MIN=-100000000;int n,k,a[N],t,from,to;pair<int,int> sum[N];int Sum(int l,int r,int &closet){ if(l>=r) return MIN; int ans=sum[r].first-sum[l].first; if(abs(ans-t)<abs(closet-t)) { closet=ans; from=min(sum[l].second,sum[r].second); to=max(sum[l].second,sum[r].second); } return ans;}int main(){ while(scanf("%d%d",&n,&k),n!=0||k!=0) { sum[0]=make_pair(0,0); for(int i=0;i<n;i++) { scanf("%d",&a[i]); sum[i+1]=make_pair(sum[i].first+a[i],i+1); } sort(sum,sum+n+1); while(k--) { scanf("%d",&t); int l=0,r=0,ans=MIN,closet=MIN; while(1) { while(r<n&&ans<t) { ans=Sum(l,++r,closet); } if(ans<t) break; ans=Sum(++l,r,closet); } printf("%d %d %d\n",closet,from+1,to); } } return 0;}
0 0
- 码农场 » POJ 2566 Bound Found 题解 《挑战程序设计竞赛》
- 码农场 » POJ 3421 X-factor Chains 题解 《挑战程序设计竞赛》
- 码农场 » POJ 2914 Minimum Cut 题解 《挑战程序设计竞赛》
- 求余小技巧 码农场 » POJ 3641 Pseudoprime numbers 题解 《挑战程序设计竞赛》
- POJ 1990 MooFest 题解 《挑战程序设计竞赛》
- POJ 2079 Triangle 题解 《挑战程序设计竞赛》
- 挑战程序设计竞赛---POJ.2686
- 挑战程序设计竞赛---POJ.3233
- POJ 2566 Bound Found
- POJ-2566-Bound Found
- poj 2566Bound Found
- poj 2566 Bound Found
- poj 2566 Bound Found
- poj 2566 Bound Found
- POJ 2566 Bound Found
- 【POJ】2566 Bound Found
- POJ 2566 Bound Found
- poj 2566 Bound Found
- 基于FBX SDK的FBX模型解析与加载
- iOS开发的一些奇巧淫技
- windows资源管理(内核对象/GDI对象/user对象)
- 进程fork()两次---解决一个进程不必等待子进程终止,也不希望子进程处于僵死状态(一般是服务器进程fork())
- iOS开发-文件管理(一)
- 码农场 » POJ 2566 Bound Found 题解 《挑战程序设计竞赛》
- IOS 启动画面设置
- XCode快捷键方法
- Android悬浮窗实现 使用WindowManager
- assert()函数用法总结
- 应用 Valgrind 发现 Linux 程序的内存问题
- Beginner’s Guide to ALE and IDocs – Part II
- Java多线程之线程的通信
- 【SICP练习】2 练习1.6