想不明白考场上怎么爆零了、可能太自信了

基本用初中的数学就可以把式子化成要维护的东西,x^2,x*y,x,y    然后就计算就行了

注意:   循环变量作为取值需要long long

不要太自信

不对拍就不要交

码:

#include<iostream>
#include<cstdio>
using namespace std;
#define zuo o<<1,l,mid
#define you o<<1|1,mid+1,r
#define N 100005
int n,m,j,a,b,op;
long long i;double xxx[N],yyy[N],x[N<<2],y[N<<2],er[N],x2[N<<2],xy[N<<2],gbjs[N<<2],gbjt[N<<2],jbjs[N<<2],jbjt[N<<2],lx,ly,lxy,lx2,S,T,ans;
bool yjbj[N<<2],ygbj[N<<2];
void up(int o)
{int ll=o<<1;int rr=o<<1|1;x[o]=x[ll]+x[rr];y[o]=y[ll]+y[rr];x2[o]=x2[ll]+x2[rr];xy[o]=xy[ll]+xy[rr];
}
void down(int o,long long l,long long r)
{int ll=o<<1;int rr=o<<1|1;long long mid=(l+r)>>1;if(ygbj[o]){long double s=gbjs[o];long double t=gbjt[o];ygbj[ll]=1;ygbj[rr]=1;gbjs[ll]=gbjs[rr]=gbjs[o];gbjt[ll]=gbjt[rr]=gbjt[o];          ygbj[o]=yjbj[ll]=yjbj[rr]=jbjs[ll]=jbjs[rr]=jbjt[ll]=jbjt[rr]=0;         x[ll]=(l+mid)*(mid-l+1)/2+s*(mid-l+1);y[ll]=(l+mid)*(mid-l+1)/2+t*(mid-l+1);    xy[ll]=(l+mid)*(mid-l+1)/2*(s+t)+er[mid]-er[l-1]+s*t*(mid-l+1);x2[ll]=s*s*(mid-l+1)+(l+mid)*(mid-l+1)*s+er[mid]-er[l-1];            mid+=1;x[rr]=(mid+r)*(r-mid+1)/2+s*(r-mid+1);y[rr]=(mid+r)*(r-mid+1)/2+t*(r-mid+1);    xy[rr]=(mid+r)*(r-mid+1)/2*(s+t)+er[r]-er[mid-1]+s*t*(r-mid+1);x2[rr]=s*s*(r-mid+1)+(mid+r)*(r-mid+1)*s+er[r]-er[mid-1];mid--;}     if(yjbj[o]){long double s=jbjs[o];long double t=jbjt[o];yjbj[o]=0;         yjbj[ll]=1;yjbj[rr]=1;jbjs[ll]+=jbjs[o];    jbjs[rr]+=jbjs[o];jbjt[ll]+=jbjt[o];    jbjt[rr]+=jbjt[o];jbjs[o]=0; jbjt[o]=0;xy[ll]+=(x[ll]*t)+(y[ll]*s)+s*t*(mid-l+1);            x2[ll]+=s*s*(mid-l+1)+2*x[ll]*s;x[ll]+=(mid-l+1)*s;y[ll]+=(mid-l+1)*t;mid++;xy[rr]+=(x[rr]*t)+(y[rr]*s)+s*t*(r-mid+1);            x2[rr]+=s*s*(r-mid+1)+2*x[rr]*s;x[rr]+=(r-mid+1)*s;y[rr]+=(r-mid+1)*t;}
}
void jian(int o,long long l,long long r)
{if(l==r){x[o]=xxx[l];y[o]=yyy[l];x2[o]=x[o]*x[o];xy[o]=x[o]*y[o];        return;}int mid=(l+r)>>1;jian(zuo);jian(you);up(o);
}
void gai(int o,long long l,long long r)
{if(a<=l&&r<=b){if(op==1){lxy+=xy[o];lx+=x[o];ly+=y[o];lx2+=x2[o];        }if(op==2){xy[o]+=(x[o]*T)+(y[o]*S)+S*T*(r-l+1);            x2[o]+=S*S*(r-l+1)+2*x[o]*S;x[o]+=(r-l+1)*S;y[o]+=(r-l+1)*T;yjbj[o]=1;jbjs[o]+=S;jbjt[o]+=T;                    }if(op==3){x[o]=(l+r)*(r-l+1)/2+S*(r-l+1);y[o]=(l+r)*(r-l+1)/2+T*(r-l+1);    xy[o]=(l+r)*(r-l+1)/2*(S+T)+er[r]-er[l-1]+S*T*(r-l+1);x2[o]=S*S*(r-l+1)+(l+r)*(r-l+1)*S+er[r]-er[l-1];jbjs[o]=jbjt[o]=0;    yjbj[o]=0;gbjs[o]=S;gbjt[o]=T;ygbj[o]=1;}return ;}down(o,l,r);int mid=(r+l)>>1;if(a<=mid)gai(zuo);if(b>mid)gai(you);up(o);
}
int main()
{
scanf("%d%d",&n,&m);
er[0]=0;
for(i=1;i<=n;i++)
er[i]=er[i-1]+i*i;
for(i=1;i<=n;i++)scanf("%lf",&xxx[i]);
for(i=1;i<=n;i++)scanf("%lf",&yyy[i]);    jian(1,1,n);for(i=1;i<=m;i++){scanf("%d",&op);if(op==1){scanf("%d%d",&a,&b);    lx=lx2=ly=lxy=0;gai(1,1,n);    //    cout<<endl<<lx<<" "<<lx2<<" "<<ly<<" "<<lxy<<endl;double xx=lx/(b-a+1);double yy=ly/(b-a+1);  ans=xx*yy*(b-a+1)-xx*ly-yy*lx+lxy;ans=ans/(xx*xx*(b-a+1)+lx2-2*xx*lx);    printf("%.10lf\n",ans);}    if(op==2||op==3){scanf("%d%d%lf%lf",&a,&b,&S,&T);gai(1,1,n);}}
}

2017.9.17 相关分析 思考记录相关推荐

  1. 2017.9.17 kamp 思考记录

    一开始读错题了,以为只有一个座位. 首先,通过从一个点出发,它走过的路径是一个半环,如果把半环补上,那所有的环上的点答案都一样 对于不在环上的点,它一定是沿树上路径到达环上的点 所以剩下的问题就是求每 ...

  2. 2017.9.17 function 思考记录

    这题一眼是奥数题.十分不可做 然后感觉它应该是结论题 然后手玩了几组小数据,之后发现似乎有规律:  2. 4. 6. 8. 10. 这规律也太**了. 然后打了三行,就过了. 这结论竟然猜对了,这题出 ...

  3. 2017.8.17 陌上花开 思考记录

    CDQ分治其实是很简洁.直白的分治算法.. 和树分治差不多,都是处理贡献时扫一遍计算贡献, 它利用了2个单调性和一个选点: 第一遍按 a  sort,保证x单调 分出左右区间,  按b  sort   ...

  4. 2017.9.5 组合数学 思考记录

    这题风格很正统.所以我感觉如果自己能不靠题解把这个题做出来,那应该就学得不错了.. 于是在历尽千辛万苦之后,终于1A了.(事后证明 结论题的结论强行无视 乱搞也是有可能AC的) xym&ISA ...

  5. 2017.9.4 Nim 思考记录

    只要知道nim的结论   这题就是链剖板子题.1A 注意bzoj 的  换行符是     \r!!      \r!!      \r!! 就说一下链剖的易错点吧: 1.记录父节点.sz.深度 2.当 ...

  6. 2017.5.6 子矩阵 思考记录

    其实这个题挺裸的dp 主要是你需要dfs+dp   不然直接dp肯定是不行的 而且写完代码一定检查一下..变量名最好要用易懂的,,不然容易错    用了3个错误的变量名竟然有90分 码: #inclu ...

  7. 2017.10.28 排序 思考记录

    这个题有一种套路,就是大小关系转化成01串,这样就变成了二分检验问题,, 就是把排序变成区间修改,然后单点查询.. 把所有比他小的赋成0,比他大的赋成1 然后判断要求位是0还是1来判断答案与当前值的大 ...

  8. 2017.10.28 压缩 思考记录

    这个题首先要知道M和R不是栈的搭配,是贪心的搭配,,就是向左找到第一个M.. 如 abababab cdcdcdcd abababab cdcdcdcd   = abRRcdcdcdcdR != Ma ...

  9. 2017.10.6 单词 思考记录

    少有的会做的ac自动机题 .这个题是匹配模式串. 所以就不需要匹配的过程,只需要建出fail树,然后直接拓扑 由于每次加进去一个单词,这个单词的每一个字母都有可能作为最后一个字母影响他的失配,所以词路 ...

最新文章

  1. 51单片机编码自学_这是9个月的自学式编码看起来像什么
  2. Linux X Window System运行原理和启动过程
  3. 错误: 找不到符号 符号: 类 Fill 位置: 类 Zeros<T> 其中, T是类型变量: T扩展已在类 Zeros中声明的Object
  4. php标签调用,phpcms栏目标签调用代码大全
  5. 牛客IOI周赛16-普及组
  6. Array | 74. Search a 2D Matrix
  7. 【算法分析与设计】实验 分治算法解决中位数问题
  8. Doris之动态分区(全面)
  9. JAVA基础-XML的解析
  10. 工具分享 | LiqunKit 综合漏洞利用工具(下载地址在文末)
  11. 谷歌邮箱lmap服务器填什么_常用邮箱SMTP服务器设置
  12. 04 Workbench几何模型的创建
  13. android_iphone和java三个平台一致的加密方法_Android、iPhone和Java三个平台一致的加密工具...
  14. xmind思维导图pdf格式如何导出?xmind思维导图pdf格式导出流程介绍
  15. 江苏赛区|2021年数学建模国赛江苏赛区获奖名单
  16. 浅谈2019互联网新技术
  17. Kotlin去掉UUID 横杠 方法
  18. 狂野之刃服务器微信群,魔兽世界怀旧服狂野之刃 狂野之刃获取方法
  19. 我与CSDN的故事《相遇、相知、相爱、相守》
  20. 将la,lb链表合并成lc。

热门文章

  1. linux 物理内存用完了_12张图解Linux内存管理,程序员内功修炼,看过都说懂了!...
  2. python爬取知乎页面的LaTeX公式
  3. 前台性能和服务器性能是什么,前端性能优化指南[2]--什么是Web性能?
  4. python运行input不出结果_Python中print和input调用了Python中底层的什么方法
  5. php 整型,php整型就是整数
  6. python大数据处理与分析课程目标_《大数据分析与挖掘》课程教学大纲
  7. easyui 控制某列显示不显示_baogaiMCU控制OLED显示屏
  8. 游戏可以html+上运行吗,运行多个,如果在HTML游戏
  9. eclipse没有java web,Eclipse Juno在Dynamic Web Project中没有JSP(但其他一切都很好)
  10. rtsp转rtmp服务linux,ubuntu安装流媒体服务器(nginx+rtmp,rtsp转rtmp,rtsp转m3u8)