又是看了很久的题目。。。


题目链接:

http://codeforces.com/contest/635/problem/D

题意:

一家工厂生产维修之前每天生产b个,维修了k天之后每天生产a个,维修期间不生产。

若干操作:

1. 1 d aa 第d天要求aa个订单,一个订单对应一个物品,必须在这一天中完成。

2. 2 d 第d天开始维修,最终能得到多少订单。

分析:

树状数组分别维护维修前和维修后得到的订单数,这样对于不同的维修日期,把这两种相加即可。

代码:

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
#define pr(x) cout << #x << ": " << x << " "
#define pl(x) cout << #x << ": " << x << endl;
#define sa(x) scanf("%d",&(x))
#define mdzz cout<<"mdzz"<<endl;
const int maxn = 2e5 + 5, oo =0x3f3f3f3f;
typedef long long ll;
int bita[maxn], bitb[maxn], cnt[maxn];//a维修后b维修前
int n;
int suma(int i)
{
int ans = 0;
while(i){
ans += bita[i];
i -= i & -i;
}
return ans;
}
int sumb(int i)
{
int ans = 0;
while(i){
ans += bitb[i];
i -= i & -i;
}
return ans;
}
void adda(int i, int x)
{
while(i <= n){
bita[i] += x;
i += i &-i;
}
}
void addb(int i, int x)
{
while(i <= n){
bitb[i] += x;
i += i &-i;
}
}
int main (void)
{
int k, a, b, q;sa(n);sa(k);sa(a);sa(b);sa(q);
int aa, d;
int ans = 0;
for(int i = 0; i < q; i++){
int type;sa(type);
if(type == 1){
scanf("%d%d", &d, &aa);
adda(d, -min(cnt[d], a)); addb(d, -min(cnt[d], b));//复原
cnt[d] += aa;
adda(d, min(cnt[d], a)); addb(d, min(cnt[d], b));
}else{
sa(d);
ans += sumb(d - 1) + suma(n) - suma(d + k - 1);
printf("%d\n", ans);
ans = 0;
}
}
return 0;
}

最新文章

  1. 从零开始编写自己的C#框架(16)——Web层后端父类
  2. Jquery.Form和jquery.validate 的使用
  3. 关于实现一个基于文件持久化的EventStore的核心构思
  4. js实现继承
  5. python 代码片段9
  6. mysql 授权 打开全部
  7. Map和hash_map
  8. 深入理解Python中的生成器
  9. MySQL检查连接的最大数量和改变的最大连接数
  10. 1601: [Usaco2008 Oct]灌水
  11. TCP流量控制和拥塞控制
  12. 聚类之dbscan算法
  13. JDBC 基础
  14. RPC web service
  15. Git使用全解
  16. CSS3:透明度
  17. Android强制横屏+全屏的几种常用方法
  18. Book Review 《构建之法》
  19. 【Unity】2.9 光源(Lights)
  20. SpringMVC如何防御CSRF

热门文章

  1. Yii2 AR模型搜索数据条数不对,AR模型默认去重
  2. python计算机基础(三)
  3. SpringMVC之Controller简单使用
  4. JAVA 基础--开发环境IDEA 搭建
  5. Hive学习笔记(四)-- hive的桶表
  6. [每日app二]月入60万多嘛?单词锁屏的潜力!
  7. Linux中的more命令
  8. c++ 字符处理
  9. JS进行人民币大小写转换
  10. CS231n笔记 Lecture 3 Loss Functions and Optimization