博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客网上的ST阶跃表
阅读量:6257 次
发布时间:2019-06-22

本文共 1488 字,大约阅读时间需要 4 分钟。

给你一个长为n的序列a和一个常数k

有m次询问,每次查询一个区间[l,r]内所有数最少分成多少个连续段,使得每段的和都 <= k

如果这一次查询无解,输出"Chtholly"

输入描述:

第一行三个数n,m,k 第二行n个数表示这个序列a 之后m行,每行给出两个数l r表示一次询问

输出描述:

输出m行,每行一个整数,表示答案
示例1

输入

5 5 72 3 2 3 43 34 45 51 52 4

输出

1112

备注:

对于100%的数据,1 <= n , m <= 1000000 , 1 <= ai , k <= 1000000000

思路分析 : 利用ST表,ST[i][j] 表示以 i 为起点,跳跃 2^j 所到达的点 代码示例:
#define ll long longconst ll maxn = 1e6+5;const double pi = acos(-1.0);const ll inf = 0x3f3f3f3f; ll n, m, k;ll st[maxn][25];ll a[maxn];ll sum[maxn], cnt[maxn];ll l, r;ll LOG[maxn]; void init(){    for(ll i = 1; i <= 20; i++){        for(ll j = 1; j <= n; j++){            //st[i][j] = st[st[i][j-1]][j-1];            st[j][i] = st[st[j][i-1]][i-1];        }    }   } int main() {    //freopen("in.txt", "r", stdin);    //freopen("out.txt", "w", stdout);    cin >>n >> m >> k;    for(ll i = 1; i <= n; i++){        scanf("%lld", &a[i]);        sum[i] = sum[i-1] + a[i];        cnt[i] = cnt[i-1];        if (a[i] > k) cnt[i]++;           }       for(ll i = 1; i <= n; i++){        ll pos = upper_bound(sum+1, sum+1+n, sum[i-1]+k)-sum;        st[i][0] = pos;       //prllf("%d ", pos);    }    init();    //prllf("---- %d\n", st[2][0]);    for(ll i = 1; i <= m; i++){        scanf("%lld%lld", &l, &r);        if (cnt[r]-cnt[l-1] > 0) printf("Chtholly\n");        else {            ll ans = 0, p = l;            for(ll j = 20; j >= 0; j--){                if(st[p][j] && st[p][j] <= r){                    ans += 1<

 

转载于:https://www.cnblogs.com/ccut-ry/p/8762616.html

你可能感兴趣的文章
VMware Vsphere 6.0安装配置 二安装vcenter server程序
查看>>
关于CISCO asa5510防火墙端口映射配置
查看>>
2012年6月美国最佳虚拟主机提供商TOP12性能评测
查看>>
monkey详细介绍之二
查看>>
两列布局之左边固定宽度,右边自适应(绝对定位实现方法)
查看>>
4,gps信号与地图匹配算法
查看>>
python print的用法
查看>>
之字形打印矩阵
查看>>
我的世界之电脑mod小乌龟 —— 方位上的操作 lua函数集
查看>>
游戏方案
查看>>
在 Linux 下搭建 Git 服务器
查看>>
StackExchange.Redis Client(转载)
查看>>
Leetcode题目:Bulls and Cows
查看>>
bk. 2014.12.1
查看>>
CEOI2014 wall Spoiler
查看>>
UVA10391 ZOJ1825 Compound Words【SET+暴力】
查看>>
动态规划------Combination Sum IV
查看>>
[BZOJ2463][中山市选2009]谁能赢呢?
查看>>
iOS数据持久化存储之属性列表
查看>>
最后冲刺时间
查看>>