题目:

  

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的更多相关文章

  1. 学习ASP.NET Core, 怎能不了解请求处理管道[5]: 中间件注册可以除了可以使用Startup之外,还可以选择StartupFilter

    中间件的注册除了可以借助Startup对象(DelegateStartup或者ConventionBasedStartup)来完成之外,也可以利用另一个叫做StartupFilter的对象来实现.所谓 ...

  2. 学习ASP.NET Core, 怎能不了解请求处理管道[4]: 应用的入口——Startup

    一个ASP.NET Core应用被启动之后就具有了针对请求的处理能力,而这个能力是由管道赋予的,所以应用的启动同时意味着管道的成功构建.由于管道是由注册的服务器和若干中间件构成的,所以应用启动过程中一 ...

  3. ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

    ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.Configure ...

  4. Tips for Planning Your Business Startup

    原文链接:http://domaintree.me/?p=1037 By Robert Thibodeau –  Starting a business can be a very daunting ...

  5. Asp.Net MVC<九>:OWIN,关于StartUp.cs

    https://msdn.microsoft.com/zh-cn/magazine/dn451439.aspx(Katana 项目入门) 一不小心写了个WEB服务器 快刀斩乱麻之 Katana OWI ...

  6. Startup配置类 居然又是约定

    Microsoft.Owin.Host.SystemWeb 这个dll可以让OWin接管IIS的请求,虽然同样是托管在IIS,但是所有的请求都会被OWin来处理.在OWin的4层结构中(Applica ...

  7. java.lang.ClassNotFoundException: org.apache.catalina.startup.VersionLoggerListener

    解决办法 找到Tomcat配置文件server.xml   apache-tomcat-7.0.57/conf 将<Listener className="org.apache.cat ...

  8. 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. ...

  9. warnin php startup in unknown on line 0:

    PHP Warning:  PHP Startup:  in Unknown on line 0 这种情况是因为扩展路径有问题导致的路径或错,或没有该扩展但ini中开启了此扩展

随机推荐

  1. mysql innodb 唯一键里的字段为什么不能为NULL

    mysql 唯一键失效 CREATE TABLE `studnet_unique` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100 ...

  2. linux常用命令 echo输出命令

    echo输出命令 'echo [选项] [输出内容]' 选项 '-e' 支持反斜线控制的字符转换 控制字符​ \a 输出警告音 \b 退格键,也就是向左删除键 \n 换行符 \r 回车键 \t 制表符 ...

  3. Spring重要知识点整理

    一.IOC(Inversion of Control):控制反转 (1)Spring Core最核心部分 (2)需要先了解依赖注入(Denpendency Injection)/把底层类作为参数传递给 ...

  4. dataset数据来源方式两种,页面展示

    这两种方式都能获取到报表类别数据. <%--ds 数据源来自JavaBean--%><model:dataset id="ds"> <model:re ...

  5. git add.后回退 代码丢失

    记录一次操作git丢失代码的过程: 写完代码后:git staus git add. git status 发现有一堆.class 文件不想提交,想着代码回退到add 之前,使用了 git log 开 ...

  6. vmware安装CentOS开发环境搭建

    CentOS开发环境搭建 一.安装系统 新建虚拟机   2.选择“自定义(高级)”,并点击[下一步] 3.选择虚拟机硬件兼容性,并点击[下一步] 4.选择“稍后安装操作系统”,并点击[下一步] 5.选 ...

  7. 认识jQuery

    JQ的优势 轻量级. 强大的选择器 出色的DOM操作的封装 可靠的事件处理机制 完善的Ajax 不污染顶级变量 出色的浏览器兼容性 链式操作 隐式迭代 行为层与结构层分离 丰富的插件支持 完善的文档 ...

  8. 1. nginx添加自定义http模块(简单)

    步骤 1. 新建模块目录2. 添加模块配置文件3. 编写模块源码文件4. 在主配置文件中配置访问location5. 编译加入模块文件6. 测试 新建模块目录 mkdir /opt/nginx/ext ...

  9. Hyperledger Fabric 建立一个简单网络

    Building you first network 网络结构: 2个Orgnizations(每个Org包含2个peer节点)+1个solo ordering service 打开fabric-sa ...

  10. QT_REQUIER_CONFIG

    在qglobal.h中,定义了很多宏.下面这个QT_REQUIER_CONFIG,展开成: #define QT_REQUIRE_CONFIG(feature) Q_STATIC_ASSERT_X(Q ...