2017.9.17 相关分析 思考记录
想不明白考场上怎么爆零了、可能太自信了
基本用初中的数学就可以把式子化成要维护的东西,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 相关分析 思考记录相关推荐
- 2017.9.17 kamp 思考记录
一开始读错题了,以为只有一个座位. 首先,通过从一个点出发,它走过的路径是一个半环,如果把半环补上,那所有的环上的点答案都一样 对于不在环上的点,它一定是沿树上路径到达环上的点 所以剩下的问题就是求每 ...
- 2017.9.17 function 思考记录
这题一眼是奥数题.十分不可做 然后感觉它应该是结论题 然后手玩了几组小数据,之后发现似乎有规律: 2. 4. 6. 8. 10. 这规律也太**了. 然后打了三行,就过了. 这结论竟然猜对了,这题出 ...
- 2017.8.17 陌上花开 思考记录
CDQ分治其实是很简洁.直白的分治算法.. 和树分治差不多,都是处理贡献时扫一遍计算贡献, 它利用了2个单调性和一个选点: 第一遍按 a sort,保证x单调 分出左右区间, 按b sort ...
- 2017.9.5 组合数学 思考记录
这题风格很正统.所以我感觉如果自己能不靠题解把这个题做出来,那应该就学得不错了.. 于是在历尽千辛万苦之后,终于1A了.(事后证明 结论题的结论强行无视 乱搞也是有可能AC的) xym&ISA ...
- 2017.9.4 Nim 思考记录
只要知道nim的结论 这题就是链剖板子题.1A 注意bzoj 的 换行符是 \r!! \r!! \r!! 就说一下链剖的易错点吧: 1.记录父节点.sz.深度 2.当 ...
- 2017.5.6 子矩阵 思考记录
其实这个题挺裸的dp 主要是你需要dfs+dp 不然直接dp肯定是不行的 而且写完代码一定检查一下..变量名最好要用易懂的,,不然容易错 用了3个错误的变量名竟然有90分 码: #inclu ...
- 2017.10.28 排序 思考记录
这个题有一种套路,就是大小关系转化成01串,这样就变成了二分检验问题,, 就是把排序变成区间修改,然后单点查询.. 把所有比他小的赋成0,比他大的赋成1 然后判断要求位是0还是1来判断答案与当前值的大 ...
- 2017.10.28 压缩 思考记录
这个题首先要知道M和R不是栈的搭配,是贪心的搭配,,就是向左找到第一个M.. 如 abababab cdcdcdcd abababab cdcdcdcd = abRRcdcdcdcdR != Ma ...
- 2017.10.6 单词 思考记录
少有的会做的ac自动机题 .这个题是匹配模式串. 所以就不需要匹配的过程,只需要建出fail树,然后直接拓扑 由于每次加进去一个单词,这个单词的每一个字母都有可能作为最后一个字母影响他的失配,所以词路 ...
最新文章
- 51单片机编码自学_这是9个月的自学式编码看起来像什么
- Linux X Window System运行原理和启动过程
- 错误: 找不到符号 符号: 类 Fill 位置: 类 Zeros<T> 其中, T是类型变量: T扩展已在类 Zeros中声明的Object
- php标签调用,phpcms栏目标签调用代码大全
- 牛客IOI周赛16-普及组
- Array | 74. Search a 2D Matrix
- 【算法分析与设计】实验 分治算法解决中位数问题
- Doris之动态分区(全面)
- JAVA基础-XML的解析
- 工具分享 | LiqunKit 综合漏洞利用工具(下载地址在文末)
- 谷歌邮箱lmap服务器填什么_常用邮箱SMTP服务器设置
- 04 Workbench几何模型的创建
- android_iphone和java三个平台一致的加密方法_Android、iPhone和Java三个平台一致的加密工具...
- xmind思维导图pdf格式如何导出?xmind思维导图pdf格式导出流程介绍
- 江苏赛区|2021年数学建模国赛江苏赛区获奖名单
- 浅谈2019互联网新技术
- Kotlin去掉UUID 横杠 方法
- 狂野之刃服务器微信群,魔兽世界怀旧服狂野之刃 狂野之刃获取方法
- 我与CSDN的故事《相遇、相知、相爱、相守》
- 将la,lb链表合并成lc。
热门文章
- linux 物理内存用完了_12张图解Linux内存管理,程序员内功修炼,看过都说懂了!...
- python爬取知乎页面的LaTeX公式
- 前台性能和服务器性能是什么,前端性能优化指南[2]--什么是Web性能?
- python运行input不出结果_Python中print和input调用了Python中底层的什么方法
- php 整型,php整型就是整数
- python大数据处理与分析课程目标_《大数据分析与挖掘》课程教学大纲
- easyui 控制某列显示不显示_baogaiMCU控制OLED显示屏
- 游戏可以html+上运行吗,运行多个,如果在HTML游戏
- eclipse没有java web,Eclipse Juno在Dynamic Web Project中没有JSP(但其他一切都很好)
- rtsp转rtmp服务linux,ubuntu安装流媒体服务器(nginx+rtmp,rtsp转rtmp,rtsp转m3u8)