Description

你最近安装了一个新的屏幕保护程序,如果你离开键盘5 分钟,屏保将会显

示一个有热带鱼的水族馆,水族馆的底端是由沙石形成的供鱼玩耍的地方,沙石

的高度可以设置,水位也可以设置。

水族馆可以看做是一个二维平面,宽看作N-1 列,最左端的横坐标为0,最

右端横坐标为N-1,每个整数横坐标都对应着一个沙石的高度H_i(0<=i<=N-1),

相邻横坐标i 和i+1 之间的沙石可以看做是由(i,H_i)和(i+1,H_i+1)这两个点形成

的线段。

如果水位为h,水覆盖着水族馆底端到y=h 这个区域,如果有部分沙石在水

面以上,这部分形成一个岛屿。

对于不同的沙石情况,你想知道被水覆盖区域的面积,即水位以下总面积减

去水中沙石的面积。

Solution

几何题?

开始以为这是一道几何题,然而只是一道代数几何题……
相邻的h之间都存在的一个梯形(或者没有),我们需要求当水漫到水位为x时,覆盖的面积。
怎么求?

分而治之

初中代数几何题做多了,看到这种题就想到了分类讨论。
假设x=h[i-1],y=h[i],如果x>y就调换。(因为要求的面积是正数)
1、如果当前的水位p≤x,那么覆盖的面积为0。
2、如果当前的水位x≤p≤y,那么覆盖的面积为(用一下三角形相似)p2−2∗p∗x+x22∗(y−x){p^2-2*p*x+x^2}\over{2*(y-x)}。
3、如果当前的水位y≤p,那么覆盖的面积为p−y−x2+yp-{{y-x}\over{2}}+y。

维护——树状数组

发现最多只是一元二次方程,而且只用求和运算,修改也只是单点修改,那么放到树状数组上面最方便了。

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
const int maxn=200007;
int i,j,k,l,t,n,m,ans,h[maxn];
double ta[maxn],tb[maxn],tc[maxn],z;
char s[10];
int lowbit(int x){return x&(-x);}
void add(double *x,int y,double z){while(y<=1100){x[y]+=z;y+=lowbit(y);}
}
double get(double *x,int y){double u=0;while(y>0){u+=x[y];y-=lowbit(y);}return u;
}
double chu(double x,double y){if(y==0)return 0;else return x/y;}
void change(int x,int y,int z){if(x>y)swap(x,y);add(ta,x+1,z*chu(1,(2*y-2*x)));add(tb,x+1,z*chu(-x,(y-x)));add(tc,x+1,z*chu(x*x,(2*y-2*x)));add(ta,y+1,(-1)*z*chu(1,(2*y-2*x)));add(tb,y+1,(-1)*z*chu(-x,(y-x)));add(tc,y+1,(-1)*z*chu(x*x,(2*y-2*x)));add(tb,y+1,1*z);add(tc,y+1,z*(chu((y-x),2)-y));
}
int main(){scanf("%d%d",&n,&m);fo(i,1,n)scanf("%d",&h[i]);fo(i,2,n){change(h[i-1],h[i],1);}fo(t,1,m){scanf("%s%d",s,&k);if(s[0]=='Q'){z=get(ta,k)*k*k+get(tb,k)*k+get(tc,k);printf("%.3f\n",z);}else{scanf("%d",&l);k++;if(k!=1)change(h[k],h[k-1],-1);if(k!=n)change(h[k],h[k+1],-1);h[k]=l;if(k!=1)change(h[k],h[k-1],1);if(k!=n)change(h[k],h[k+1],1);}}
}

【GDOI模拟】屏保相关推荐

  1. php气泡效果,js 模拟气泡屏保效果代码_其他特效

    核心代码: var T$ = function(id) { return document.getElementById(id); } var $extend = function(des, src) ...

  2. 模拟《飞越星空》屏保

    最近想实践总结下3D图形学的一些内容 所以,就做出了这个东西. 本来打算用C++写的, 但考虑到MFC的丑陋和C++使用GDI/GDI+的各种不方便 遂用C#实现之,以简化实现手段. 呵呵,C#是做某 ...

  3. 微软幽你一默,蓝屏死机屏保

    还记得熟悉的蓝屏么,从Win95以来,不断的蓝屏,死机,重启,重装就一直伴随着我们的生活.一直到WinXP SP2之后,曾经熟悉的蓝屏见到的越来越少了,而在即将到来的Vista中,据称微软甚至直接更换 ...

  4. windows 防止屏保锁屏脚本工具

    公司安全制度要求屏保时间不得大于 3 分钟,且屏保切回桌面时需要重新输入登录密码. 在不修改屏保策略的情况下,通过脚本小工具模拟按下键盘 Num 键来阻止休眠. Dim durationHour du ...

  5. 鸿蒙天钟壁纸,时间数字罗盘屏保

    游戏概述 时间数字罗盘屏保app是一款十分热门系统安全类软件.时间数字罗盘屏保安卓最新版为广大的用户朋友提供最具个性化的手机屏保业务,可以在系统里选择你喜爱的罗盘样式,让你的手机看起来更加的高大上.时 ...

  6. 3D屏保: 彩色盘子

    一个彩色盘子的屏保 记得小时候在电视上看过一个科普节目,由多个颜色组成的盘子,如果快速旋转起来,会看上去是白色的.于是我就写了这个屏保程序,但发现在计算机上模拟并不是这样的. "RollPl ...

  7. 带滚动字幕的电脑钟表屏保

    一.用途 帮别人写的一个小工具,想通过投影显示时钟,再加工一下成了2.0,模拟电子看板的钟表(无技术含量仅供交流学习) 针对无插件版更新到了V3.1(可以定制文字,已发布到52论坛:和谐本帖的您可以私 ...

  8. 将爱心代码设为电脑屏保,俘获少女芳心,还能假装黑客大佬,在酷炫的界面中保护隐私

    将爱心代码设为电脑屏保,俘获少女芳心,还能假装黑客大佬,在酷炫的界面中保护隐私 本文介绍 Hacker Screen Saver 一款开源 Windows 屏保的使用.Hacker Screen Sa ...

  9. 将爱心代码设为电脑屏保,俘获少女芳心,还能假装黑客,在酷炫的界面中保护隐私

    将爱心代码设为电脑屏保,俘获少女芳心,还能假装黑客,在酷炫的界面中保护隐私,如此好用还不了解一下?本文介绍 Hacker Screen Saver 一款开源 Windows 屏保的使用.Hacker ...

  10. linux mint 屏保_Linux Mint 修复了两个孩子发现的屏保锁定绕过漏洞

    Linux Mint 修复了两个孩子发现的屏保锁定绕过漏洞 据 zdnet 报道,两个孩子在爸爸的电脑上玩耍时,意外发现了绕过屏保,进入锁定系统的方法.根据 bug 报告,这两个孩子在物理键盘和屏幕键 ...

最新文章

  1. 重磅!2020中国高校毕业生月薪排名:清华第1,共计24高校月薪过万
  2. Mac用户SVN图形界面推荐
  3. RestSharp .net 轻量级rest客户端
  4. Vista下与移动设备的同步笔记
  5. NB-IOT和LoRa技术优劣对比
  6. js,jq.事件代理(事件委托)复习。
  7. post提交参数过多时,取消Tomcat对 post长度限制
  8. 基于海思开发板的屏幕截图程序(二)
  9. DHCP服务器的设计
  10. 《scikit-learn》朴素贝叶斯
  11. redis之事务主从复制
  12. python regularexpress1
  13. 水位传感器的python代码_关于水的作文
  14. ENVI监督分类后背景值也被分成一种地物,解决方案和转移矩阵制作方法
  15. PS CS6启动“不能打开暂存盘文件”的解决方法
  16. 网络营销成功案例分析篇:NIKE网络营销案例
  17. ubuntu中显示实时网速的方法
  18. 基于u-net,cv2以及cnn的中文车牌定位,矫正和端到端识别软件
  19. jsPDF生成PDF文件,文件不全问题,后台进行文件下载,前台不下载
  20. Windows计划任务开机启动程序

热门文章

  1. C语言解释一下BA无标度网络
  2. 高通平台驱动常见问题
  3. 试卷模板 html,试卷模板怎么转换a4Word
  4. 移动平均法,滑动平均模型法(Moving average,MA)
  5. CSS颜色代码对照表
  6. 万能地图下载器X3版本终止升级维护
  7. 计算机专业的创新创业规划书,计算机及相关专业创新创业教育指导书.pdf
  8. Can总线dbc文件解析代码
  9. 修复APP的BUG,热修复的知识点和大厂的相关资料汇总
  10. pcl求平面法向量_PCL自动求解平面法向量参数化表示