UVa1451 数形结合
来源:互联网 发布:阿里云北京机房 编辑:程序博客网 时间:2024/06/07 00:09
//#include<bits/stdc++.h>#include<stdio.h>#include<algorithm>#include<queue>#include<string.h>#include<iostream>#include<math.h>#include<set>#include<map>#include<vector>#include<iomanip>using namespace std;#define ll long long#define pb push_backconst int maxn=2e5+9;char s[maxn];int sum[maxn];int Q[maxn];int cmp(int x1,int x2,int x3,int x4){//比较x1-x2 ,x3-x4的斜率return (sum[x2]-sum[x1])*(x4-x3)-(sum[x4]-sum[x3])*(x2-x1);}int main(){int T;scanf("%d",&T);while(T--){int n,len;scanf("%d%d%s",&n,&len,s+1);sum[0]=0;for(int i=1;i<=n;i++)sum[i]=sum[i-1]+s[i]-'0';int ansl=0,ansr=len;//ansl不要int l=0,r=0;for(int i=len;i<=n;i++){while(r-l>1 && cmp(Q[r-1],i-len,Q[r-2],i-len)<0)r--;//删上凸点Q[r++]=i-len;while(r-l>1 && cmp(Q[l+1],i,Q[l],i)>=0)l++;//l+1斜率更大//l寻找切点int tt=cmp(Q[l],i,ansl,ansr);if(tt>0 || tt==0&&(i-Q[l]<ansr-ansl))ansr=i,ansl=Q[l];}printf("%d %d\n",ansl+1,ansr);}}
细节都在注释里了
相关的论文暂时不会去看,等到学计算几何的时候集中攻略吧
阅读全文
0 0
- Uva1451 数形结合
- UVa1451 数形结合
- uva1451 平均值 数形结合
- 数形结合、单调队列+uva1451
- uva1451 - Average(数形结合)
- UVa1451 - Average
- 1451 - Average(数形结合)
- poj2018(斜率数形结合)
- uva 1451 - Average 数形结合
- Matlab数形结合求解不等式
- UVALive 4726 Average(数形结合)
- 1451 - Average(数形结合)
- uva 1451 - Average(数形结合)
- UVa 1451:Average(数形结合)
- LA4726(数形结合 & 单调队列)
- UVa 1451 平均值 数形结合
- LA 3716 DNA Regions 数形结合 -
- HDU-4790 Just Random (数形结合)
- linux环境内存分配原理 mallocinfo
- 斯坦福Stanford coreNLP宾州树库的词性标注规范
- 使用vpn远程控制S7 1200
- 日常(关于游泳之列的真理问题讨论)
- MySQL常用日期函数,日期相减,按天、周、月查询
- UVa1451 数形结合
- MVC模式和三层架构之间的关系
- Trainsorting<逆序找最长递增递减子序列>
- 记载
- 在Eclipse环境下开发Processing
- wu
- scala 正则匹配(模式匹配)
- 分布式缓存Redis+codis集群
- 前端打不开页面报GET http://localhost:8080/page/toPageInfo net::ERR_INCOMPLETE_CHUNKED_ENCODING