xdoj-1297 Tr0y And His Startup
题目:
1297: Tr0y And His Startup
时间限制: 1 Sec 内存限制: 256 MB
提交: 18 解决: 8
[提交][状态][讨论版]
题目描述
Tr0y创办了一家安全公司,主要提供抗DDoS服务。
假设有n家公司共用Tr0y的第三方服务器,各公司初始最大承受带宽为xi Gbps,当其受到大于或等于最大承受带宽流量时,会判断为DDoS攻击并进行清洗操作,将流量引到第三方服务器。
下面有Q次攻击,每次使得[Li,Ri]的公司遭受到流量为c Gbps(c为整数,在[1,C]上离散均匀分布)的攻击,且每家公司在承受攻击后会增大qi Gbps的最大承受带宽。
Tr0y的资金有限,他想知道每次攻击时,他的服务器期望承受流量为多少?
答案应该会很大,请膜1e9+7
输入
第一行为三个整数n(1<=n<=1e5),C(1e7<=C<=1e9),Q(1<=n<=1e5)。
第二行含n个整数xi(1<=xi<=10)。
接下来Q行,每行包含三个整数L,R(1<=L<=R<=n),q(1<=q<=10).
输出
共Q行,每行输出服务器期望承受流量.
样例输入
3 10000000 3
1 2 3
1 1 1
1 2 1
1 3 1
样例输出
505000004
581428605
86428702 分析: 求期望,但是有个条件,必须大于等于xi--公式:1/2c*[(c+xi)(c-xi+1)]
1/2c*[c^2+c-xi^2+xi]
这是个区间求和问题 用线段树维护区间和sum1,区间平方和sum2
更新的话,懒惰标记; 其中_sum2=(x1+k)^2+(x2+k)^2+...(xn+k)^2
=x1^2+...+xn^2+2*k*sum1+k*k*n
很好维护的,但是感觉这题有个问题啊 求逆元不是可以随便用的啊 a/b%mod=a*b1(b的逆元)%mod 前提必须是a可以整除b.
这道题不严谨,数据是错的(也欢迎指正
还有错了那么多次,是因为数据类型转化出错了; tag[]是long long类型,在_update()函数中k定义为了int
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt*2
#define rson m+1,r,rt*2+1
typedef long long LL;
const LL mod=1e9+;
const int N=1e5+;
LL sum1[N*],sum2[N*],tag[N*];
LL c; int n,q;
LL q_pow (LL x,LL k) {
LL ans=;
while (k) {
if (k&) ans=ans*x%mod;
x=x*x%mod;
k=k>>;
}
return ans;
}
void pushup(int rt) {
sum1[rt]=(sum1[rt*]+sum1[rt*+])%mod;
sum2[rt]=(sum2[rt*]+sum2[rt*+])%mod;
}
void build (int l,int r,int rt) {
if (l==r) {
scanf ("%lld",&sum1[rt]);
sum2[rt]=sum1[rt]*sum1[rt]%mod;
return ;
}
int m=(l+r)/;
build (lson);
build (rson);
pushup(rt);
return ;
}
void _update (LL k,int l,int r,int rt) {
// 千万注意 LL->int 会爆炸!!!!
tag[rt]=(tag[rt]+k)%mod;
sum2[rt]=(sum2[rt]+sum1[rt]**k%mod+k*k%mod*(r-l+)%mod)%mod;
sum1[rt]=(sum1[rt]+k*(r-l+)%mod)%mod;
}
void pushdown(int l,int r,int rt) {
if (tag[rt]!=) {
int m=(l+r)/;
_update(tag[rt],l,m,rt*);
_update(tag[rt],m+,r,rt*+);
tag[rt]=;
}
}
LL update (int L,int R,int k,int l,int r,int rt) {
if (l>R||r<L) return ;
if (l>=L&&r<=R) {
LL ans=(sum2[rt]-sum1[rt]+mod)%mod;
_update(k,l,r,rt);
return ans;
}
pushdown(l,r,rt);
int m=(l+r)/;
LL ans=(update(L,R,k,lson)+update(L,R,k,rson))%mod;
pushup(rt);
return ans;
}
int main ()
{
while (~scanf ("%d %lld %d",&n,&c,&q)) {
memset (tag,,sizeof(tag));
build (,n,);
LL t1=q_pow (*c,mod-); LL t2=c*(c+)%mod;
for (int i=;i<=q;i++) {
int l,r,k; scanf ("%d %d %d",&l,&r,&k);
LL ans=update (l,r,k,,n,);
printf("%lld\n",((r-l+)*t2%mod-ans+mod)*t1%mod);
}
}
return ;
}
xdoj-1297 Tr0y And His Startup的更多相关文章
- 学习ASP.NET Core, 怎能不了解请求处理管道[5]: 中间件注册可以除了可以使用Startup之外,还可以选择StartupFilter
中间件的注册除了可以借助Startup对象(DelegateStartup或者ConventionBasedStartup)来完成之外,也可以利用另一个叫做StartupFilter的对象来实现.所谓 ...
- 学习ASP.NET Core, 怎能不了解请求处理管道[4]: 应用的入口——Startup
一个ASP.NET Core应用被启动之后就具有了针对请求的处理能力,而这个能力是由管道赋予的,所以应用的启动同时意味着管道的成功构建.由于管道是由注册的服务器和若干中间件构成的,所以应用启动过程中一 ...
- ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)
ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.Configure ...
- Tips for Planning Your Business Startup
原文链接:http://domaintree.me/?p=1037 By Robert Thibodeau – Starting a business can be a very daunting ...
- Asp.Net MVC<九>:OWIN,关于StartUp.cs
https://msdn.microsoft.com/zh-cn/magazine/dn451439.aspx(Katana 项目入门) 一不小心写了个WEB服务器 快刀斩乱麻之 Katana OWI ...
- Startup配置类 居然又是约定
Microsoft.Owin.Host.SystemWeb 这个dll可以让OWin接管IIS的请求,虽然同样是托管在IIS,但是所有的请求都会被OWin来处理.在OWin的4层结构中(Applica ...
- java.lang.ClassNotFoundException: org.apache.catalina.startup.VersionLoggerListener
解决办法 找到Tomcat配置文件server.xml apache-tomcat-7.0.57/conf 将<Listener className="org.apache.cat ...
- eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN
eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...
- warnin php startup in unknown on line 0:
PHP Warning: PHP Startup: in Unknown on line 0 这种情况是因为扩展路径有问题导致的路径或错,或没有该扩展但ini中开启了此扩展
随机推荐
- mysql innodb 唯一键里的字段为什么不能为NULL
mysql 唯一键失效 CREATE TABLE `studnet_unique` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100 ...
- linux常用命令 echo输出命令
echo输出命令 'echo [选项] [输出内容]' 选项 '-e' 支持反斜线控制的字符转换 控制字符 \a 输出警告音 \b 退格键,也就是向左删除键 \n 换行符 \r 回车键 \t 制表符 ...
- Spring重要知识点整理
一.IOC(Inversion of Control):控制反转 (1)Spring Core最核心部分 (2)需要先了解依赖注入(Denpendency Injection)/把底层类作为参数传递给 ...
- dataset数据来源方式两种,页面展示
这两种方式都能获取到报表类别数据. <%--ds 数据源来自JavaBean--%><model:dataset id="ds"> <model:re ...
- git add.后回退 代码丢失
记录一次操作git丢失代码的过程: 写完代码后:git staus git add. git status 发现有一堆.class 文件不想提交,想着代码回退到add 之前,使用了 git log 开 ...
- vmware安装CentOS开发环境搭建
CentOS开发环境搭建 一.安装系统 新建虚拟机 2.选择“自定义(高级)”,并点击[下一步] 3.选择虚拟机硬件兼容性,并点击[下一步] 4.选择“稍后安装操作系统”,并点击[下一步] 5.选 ...
- 认识jQuery
JQ的优势 轻量级. 强大的选择器 出色的DOM操作的封装 可靠的事件处理机制 完善的Ajax 不污染顶级变量 出色的浏览器兼容性 链式操作 隐式迭代 行为层与结构层分离 丰富的插件支持 完善的文档 ...
- 1. nginx添加自定义http模块(简单)
步骤 1. 新建模块目录2. 添加模块配置文件3. 编写模块源码文件4. 在主配置文件中配置访问location5. 编译加入模块文件6. 测试 新建模块目录 mkdir /opt/nginx/ext ...
- Hyperledger Fabric 建立一个简单网络
Building you first network 网络结构: 2个Orgnizations(每个Org包含2个peer节点)+1个solo ordering service 打开fabric-sa ...
- QT_REQUIER_CONFIG
在qglobal.h中,定义了很多宏.下面这个QT_REQUIER_CONFIG,展开成: #define QT_REQUIRE_CONFIG(feature) Q_STATIC_ASSERT_X(Q ...