【Codeforces 1042D】Petya and Array
2024-08-24 05:12:04
【链接】 我是链接,点我呀:)
【题意】
题意
【题解】
把a[i]处理成前缀和
离散化.
枚举i从1..n假设a[i]是区间和的a[r]
显然我们需要找到a[r]-a[l]
【代码】
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 2e5;
int n;
ll t;
ll a[N+10];
ll b[N*2+10];
map<ll,int> dic,dic1;
int lowbit(int x){
return x&(-x);
}
ll get_sum(int x){
ll ans = 0;
while (x>0){
ans = ans + b[x];
x = x-lowbit(x);
}
return ans;
}
void add(int x){
while (x<=2*N+2){
b[x]= b[x]+1;
x = x + lowbit(x);
}
}
int main(){
ios::sync_with_stdio(0),cin.tie(0);
cin >> n >> t;
dic[0] = 1;
dic[0+t] = 1;
for (int i = 1;i <= n;i++) {
cin >> a[i];
a[i]+=a[i-1];
dic[a[i]] = 1;
dic[a[i]+t] = 1;
}
int cnt = 0;
for (auto temp:dic){
cnt++;
dic1[temp.first] = cnt;
}
add(dic1[0+t]);
//cout<<dic1[0+t]<<endl;
ll fans = 0;
for (int i = 1;i <= n;i++){
ll temp1 = get_sum(cnt)-get_sum(dic1[a[i]]);
fans = fans + temp1;
add(dic1[a[i]+t]);
}
cout<<fans<<endl;
return 0;
}
最新文章
- oracle插入数据时解决和旧数据id的冲突
- 几年前做家教写的C教程(之五专讲结构体与文件操作)
- CentOS6.5 安装 jdk1.7
- MS Chart-按照数据库的最大最小时间设置X轴label.
- 使用 DllImport 属性
- 常用JS验证和函数
- JSP http头消息
- 【开源java游戏框架libgdx专题】-01-libgdx介绍
- (转载)lib 和 dll 的区别、生成以及使用详解
- 怎样使用docker不加sudo
- 写代码中遇到的问题(php接收不到传过来的json数据,php使用utf8的用法)
- SharePoint 门户网站的图片轮播-页面定制
- ChIP-seq 学习内容
- python基础成长之路四-基础数据类型方法
- 《汇编语言 基于x86处理器》第七章整数运算部分的代码
- POST 和 PUT 方法区别
- html文件引用本地js文件出现跨域问题的解决方案
- Linux ulimit命令详解
- domain是什么
- caffe Python API 之中值转换