P4889 kls与flag

Posted tony-double-sky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P4889 kls与flag相关的知识,希望对你有一定的参考价值。

P4889 kls与flag

一堆杆子, 每个有特定高度 (a_{i}) , 现想把杆子弄倒, 可以在一维内往左弄倒和往右弄倒, 求最大优秀对数, 定义优秀对数为两杆倒后顶点重合

Solution

话说见证了这题从蓝变绿又变蓝啊
首先杆子倒下无非两种状态, 向左或向右
我们维护倒下后处在的坐标即可
显然每个杆子有两个坐标, 可以用桶维护
但是数组无法开最大高度 + 所处位置那么大
所以用 (map) 当桶即可
技术分享图片

Code

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#include<climits>
#include<map>
#define LL long long
using namespace std;
LL RD(){
    LL out = 0,flag = 1;char c = getchar();
    while(c < '0' || c >'9'){if(c == '-')flag = -1;c = getchar();}
    while(c >= '0' && c <= '9'){out = out * 10 + c - '0';c = getchar();}
    return flag * out;
    }
const LL maxn = 400019;
LL num, m, cnt;
map<LL, LL>ton;
int main(){
    num = RD(), m = RD();
    for(LL i = 1;i <= num;i++){
        LL a = RD();
        cnt += ton[i - a];
        cnt += ton[i + a];
        ton[i - a]++, ton[i + a]++;
        }
    printf("%lld
", cnt);
    return 0;
    }

以上是关于P4889 kls与flag的主要内容,如果未能解决你的问题,请参考以下文章

倍增专题

vue2.0 代码功能片段

popBackStack(int id,int flags)函数中的参数

活动到片段方法调用带有进度条的线程

python后端 flask框架 计算时间差 并根据时间差条件返回flag值

python后端 flask框架 计算时间差 并根据时间差条件返回flag值