acm常用技巧二 POJ 3061 POJ 3320 POJ 3276 尺取法
来源:互联网 发布:4d设计软件 编辑:程序博客网 时间:2024/05/12 09:33
一.POJ 3061
给n个非负数,求出连续的m个数的和加起来比k;求最小的m
int n,S;int a[MXN];int sum[MXN];void Fun(){ for(int i=0;i<n;++i){ sum[i+1]=sum[i]+a[i]; } if(sum[n]<S){ puts("0"); return; } int res=n; for(int s=0;sum[s]+S<=sum[n];++s){ int t=lower_bound(sum+s,sum+n,sum[s]+S)-sum; res=min(res,t-s); } printf("%d\n",res);}
void Fun(){ int res=n+1; int s=0,t=0,sum=0; while(1){ while(t<n&&sum<S) sum+=a[t++]; if(sum<S) break; res=min(res,t-s); sum-=a[s++]; } if(res>n) res=0; printf("%d\n",res);}
二.POJ 3320
找一段最短的子串使得它包含所有该序列中出现过的数字
int P;int a[MXNP];void Fun(){ set<int> all; for(int i=0;i<P;++i) all.insert(a[i]); int n=all.size(); int s=0,t=0,num=0; map<int,int> count; int res=P; while(1){ while(t<P&&num<n){ if(count[a[t++]]++==0) num++; } if(num<n) break; res=min(res,t-s); if(--count[a[s++]]==0){ --num; } } printf("%d\n",res);}
三.POJ 3276
int N;int dir[MXN];int f[MXN];int calc(int K){ memset(f,0,sizeof(f)); int res=0; int sum=0; for(int i=0;i+K<=N;++i){ if((dir[i]+sum)%2){ ++res; f[i]=1; } sum+=f[i]; if(i-K+1>=0) sum-=f[i-K+1]; } for(int i=N-K+1;i<N;++i){ if((dir[i]+sum)%2){ return -1; } if(i-K+1>=0) sum-=f[i-K+1]; } return res;}void Fun(){ int K=1,M=N; for(int k=1;k<=N;++k){ int m=calc(k); if(m>=0&&M>m){ M=m; K=k; } } printf("%d %d\n",K,M);}
- acm常用技巧二 POJ 3061 POJ 3320 POJ 3276 尺取法
- ACM 尺取法 poj 3320
- [ACM] POJ 3061 Subsequence (尺取法)
- 【算法技巧】尺取法 POJ 3061 Subsequence
- 尺取法(POJ 3061,3320,3276)
- POJ 3276 尺取法
- poj 3320 尺取法
- poj 3320 尺取法
- poj 3320 尺取法
- POJ 3320 (尺取法)
- poj 3320 尺取法
- poj 3320 尺取法
- poj 3320 尺取法
- poj 3061 尺取法
- poj 3061 尺取法
- poj 3061 尺取法
- poj 3061 尺取法
- POJ 3061 (尺取法)
- Git 入门
- __align(num) 分析
- 把win7装到内存上的虚拟硬盘,并且从虚拟硬盘启动
- 反汇编分析C++中的const
- 从面向对象编程的角度解析c#中的事件处理机制
- acm常用技巧二 POJ 3061 POJ 3320 POJ 3276 尺取法
- 使用 jQuery Mobile 与 HTML5 开发 listView样式总结
- hdoj1032 ( 线段树-区间查询)
- python调用动态链接库传送protobuf数据
- 轻松搞定面试中的链表题目
- 3.3 《硬啃设计模式》第12章 超级手机 - 外观模式(Facade Pattern)
- Eclipse C/C++开发环境搭建
- win XP 不能访问无线wifi 补丁 Windows XP 更新程序 (KB893357)
- 利用自定义函数求四个数的最大公约数