HDU 4923 series1
来源:互联网 发布:arclive有没有mac 编辑:程序博客网 时间:2024/06/17 00:58
好吧我承认我有点懒。。。。程序跑到一半Wa了,然后我找不到哪里错了。。。但是大体思路是没错的。
最开始是推出来11100这样的数据化为一组,他们的b是一样的,但是后来不知道怎么处理他们了。。。。
再看题解,说是每个区间求平均数作为b,若后面那个区间的平均数比前面那个区间小,就两个区间合并,在求平均值。不知道为什么。很苦恼啊。
先凑合着看看。
#include <stdio.h>#define maxn 100010#define inf 2e9int n,a[maxn];int situ[maxn][2];double x[maxn],sum;int p;void init(){ int i,j,k; int flag=0; p=0; a[0]=0;a[n+1]=1; for(i=1,j=0,k=0;i<=n;i++) { if(a[1]==0) flag=1; if(flag&&a[i]) flag=0; if(!flag) { if(!a[i-1]&&a[i]) { if(p) { situ[p][0]=i-k; situ[p][1]=k-j;//printf("**%d %d\n",i-k,k-j); } j=i; p++; } if(a[i-1]&&!a[i]) k=i; if(i==n&&!a[n]) { i=i+1; situ[p][0]=i-k; situ[p][1]=k-j; // printf("**%d %d\n",i-k,k-j); p++; } } }}double mathe(double x,int b,int a){ double y; y=(a+b)*x*x-2*a*x+a; //printf("%6lf %d %d %6lf\n",x,b,a,y); return y;}void find(){ init(); int i,j,k; j=1; x[0]=-inf; for(i=1;i<p;i++,j++) { x[j]=(double)situ[i][1]/(situ[i][0]+situ[i][1]); if(x[j]<x[j-1]) { double temp=(double)(situ[i-1][1]+situ[i][1])/(situ[i-1][1]+situ[i-1][0]+situ[i][0]+situ[i][1]); x[j]=x[j-1]=temp; } } for(i=1;i<p;i++) sum+=mathe(x[i],situ[i][0],situ[i][1]);}int main(){ int t; scanf("%d",&t); while(t--) { sum=0; scanf("%d",&n); int i,j; for(i=1;i<=n;i++) scanf("%d",&a[i]); find(); printf("%.6lf\n",sum); }}
0 0
- HDU 4923 series1
- 数据分析numpy和series1
- 为什么在chart图例总多出一个series1?
- HDU 4923
- HDU 4923
- hdu 4923
- hdu 4923 第六次多校
- hdu 4923 单调栈
- 2014多校联合六(HDU 4923 HDU 4925 HDU 4927 HDU 4930)
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- 黑马程序员学习7
- HDU2121 Ice_cream’s world II 【最小树形图】+【不定根】
- cron调度问题
- PAT Basic 1019. 数字黑洞 (20)
- BOJ 2014新生暑假个人排位赛09 整合
- HDU 4923 series1
- 把Android源码中的密码对转换为keystore的方法
- 本地网页无法显示Flash的解决方案
- 黑马程序员学习8
- java方法递归调用
- wordpress自定义小工具(widget)详解
- POJ题目1704(Staircase Nim(阶梯博弈))
- hdu2035--人见人爱A^B(快速幂函数)
- java 高精度