poj之旅——2566,2739
来源:互联网 发布:办户外婚礼多少钱知乎 编辑:程序博客网 时间:2024/05/22 00:12
2566:从数列中找出连续序列,使得和的绝对值与目标数之差最小
2739:将一个整数分解为连续的素数之和,有多少种分法
题解:非常简单的尺取法解题即可。
参考程序:
2566:
#include<cstdio>#include<algorithm>#define maxn 110000#define INF 0x7f7f7f7fusing namespace std;struct P{int sum,id;bool operator < (P rhs)const{return sum<rhs.sum;}/*P(int sum,int id):sum(sum),id(id){}加上这句话,就有no match for function P::P()的错误,明明在最短路时有同样的代码,为什么这里就过不了呢请教路过大神*/}b[maxn];int res,from,to,n,k;int a[maxn];void prepare(){b[0].sum=0;b[0].id=0;for (int i=0;i<n;i++)b[i+1].sum=b[i].sum+a[i], b[i+1].id=i+1;sort(b,b+1+n);}int next(int t,int l,int r){//枚举区间为(l,r]if (l>=r)return -INF;int now=b[r].sum-b[l].sum;if (abs(res-t)>abs(now-t)){res=now;from=min(b[r].id,b[l].id);to=max(b[r].id,b[l].id);}return now;}void solve(int num){res=-INF;int sum=-INF;int front=0,back=0;while (true){while (back<n && sum<num)sum=next(num,front,++back);if (sum<num)break;sum=next(num,++front,back);}printf("%d %d %d\n",res,from+1,to);}int main(){while (scanf("%d%d",&n,&k)==2 && (n || k)){for (int i=0;i<n;i++)scanf("%d",&a[i]);prepare();for (int Qu=0;Qu<k;Qu++){int num;scanf("%d",&num);solve(num);}}return 0;}
2739:
#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#define maxn 11000using namespace std;int cnt;struct Prime{int n;bool is[maxn];int prime[maxn];void make(){n=maxn;memset(is,1,sizeof(is));is[0]=false;is[1]=false;int m=(int)floor(sqrt((double)n)+0.5);for (int i=2;i<=m;i++)if (is[i])for (int j=i*i;j<=n;j+=i)is[j]=false;for (int i=2;i<=n;i++)if (is[i])prime[cnt++]=i;}}form;int main(){form.make();int n;while (scanf("%d",&n)==1 && n){int l=0,r=0,sum=0,res=0;for (;;){while (sum<n && r<cnt)sum+=form.prime[r++];if (sum<n)break;elseif (sum==n)res++;sum-=form.prime[l++];}printf("%d\n",res);}return 0;}
0 0
- poj之旅——2566,2739
- poj之旅——3258
- poj之旅——3273
- poj之旅——3104
- poj之旅——3045
- poj之旅——2976
- poj之旅——3111。
- poj之旅——3579
- poj之旅——1979
- poj之旅——3009
- poj之旅——3669
- poj之旅——2718
- poj之旅——3187
- poj之旅——3050
- poj之旅——2376
- poj之旅——1328
- poj之旅——3190
- poj之旅——2393
- 浅谈SQL Server中的三种物理连接操作(Nested Loop Join、Merge Join、Hash Join)
- JdbcTemplate返回Map和做ORM的性能比较
- 滚动页面加载 (手机移动)
- LeetCode-191.Number of 1 Bits
- 直播推流之nginx服务器搭建
- poj之旅——2566,2739
- Restful形式接口文档生成之Swagger与SpringMVC整合手记
- codeforces 535D. Tavas and Malekas----#299div2D
- 从一个文件夹中遍历文件插入到数据库
- FFmpeg第一次编译
- 自定义的网络框架
- C++ Primer 第七章函数 7.6 内联函数
- 实模式和保护模式
- GL_BOOK_7