sicily 1046. Plane Spotting
2011-07-10 00:48
253 查看
/*题意: 给出一个长度为N的非负整数序列(所有数不超过200),还有两个整数M和K,求前M个最优的长度不小于K的连续子序列。 连续子序列的优先级如何比较 平均值大的序列优于平均值小的 长度大的序列优于长度小的 结束位置靠前的序列优于结束位置靠后的 */ #include<iostream> #include<stdio.h> #include<cmath> #include<algorithm> using namespace std; int n,m,k,arr[310]; struct node { double ave; int len; int st,ed; bool operator<(const node& o)const { if(fabs(ave-o.ave)<1e-6) { if(len==o.len) return ed<o.ed; else return len>o.len; } else return ave>o.ave; } }table[90000]; //对于平均数优先级比较也可以使用分数,if(s*o.len==o.s*len)... else return s*o.len>o.s*len; //其中s是连续子序列的和 int main() { int cases; cin>>cases; for(int id=1;id<=cases;++id) { cin>>n>>m>>k; for(int i=1;i<=n;++i) cin>>arr[i]; int t=0; for(int len=k;len<=n;++len) { for(int i=len;i<=n;++i) { double s=0; for(int j=i-len+1;j<=i;++j) s+=arr[j]; table[t].ave=s/len; table[t].len=len; table[t].st=i-len+1;table[t].ed=i; ++t; } } sort(table,table+t); printf("Result for run %d:\n",id); for(int i=0;i<m&&i<t;++i) printf("%d-%d\n",table[i].st,table[i].ed); } return 0; }
相关文章推荐
- sicily 1046. Plane Spotting
- Sicily.1046. Plane Spotting(排序)
- sicily 1046. Plane Spotting
- sicily 1046 Plane Spotting
- sicily 1046 Plane Spotting
- [sicily online]1046. Plane Spotting
- sicily 1046 Plane Spotting
- sicily 1046. Plane Spotting(排序求topN)
- sicily--1046. Plane Spotting
- Sicily 1046, Plane Spotting
- 1046. Plane Spotting
- 1046. Plane Spotting
- sicily1046
- 1046. Plane Spotting
- 1046 Plane Spotting
- 1046. Plane Spotting
- 1046. Plane Spotting
- 1046. Plane Spotting
- 玲珑oj 1046- chess play【水】
- 1046. 划拳(15)