Post Lamps CodeForces - 990E(暴力出奇迹?)

题意:

  在一个从0开始的连续区间上  放置几个小区间,使得这些小区间覆盖整个大区间,不同长度的小区间有不同的花费,其中有m个点,小区间的左端点不能放在这些点上

解析:

  显然如果0是这m点中的一个 则无解

  然后就是标记上连续不能放的点  然后遍历每一个小区间  从0开始放 求花费最小值即可

·  注意最大值的设置

  代码都加了1,从1开始

  

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2000006, INF = 0x7fffffffffffffff;;
typedef long long LL;
int vis[maxn], hip[maxn];
LL cost[maxn];
int main()
{
    int n, m, k, tmp;
    scanf("%d%d%d", &n, &m, &k);
    n++;
    for(int i=0; i<m; i++)
    {
        scanf("%d", &tmp);
        vis[tmp+1] = 1;
    }
    if(vis[1])
    {
        printf("-1\n");
        return 0;
    }
    for(int i=1; i<=k; i++)
        scanf("%lld", &cost[i]);
    for(int i=1; i<=n; i++)
    {
        if(vis[i])
            hip[i] = hip[i-1];
        else
            hip[i] = i;
    }
    LL res = LLONG_MAX;
    for(int i=1; i<=k; i++)
    {
        int p = 1;
        LL sum = 1;
        while(1)
        {
            if(p + i >= n)
            {
                LL ans = sum * cost[i];
                res = min(res, ans);
                break;
            }
            if(p == hip[p+i])
                break;
            p = hip[p+i];
            sum++;
        }
    }
    if(res == LLONG_MAX)
        printf("-1\n");
    else
        printf("%lld\n", res);

    return 0;
}

原文地址:https://www.cnblogs.com/WTSRUVF/p/9545177.html

时间: 2024-08-06 14:20:40

Post Lamps CodeForces - 990E(暴力出奇迹?)的相关文章

SID1190471 / 烦人的幻灯片 暴力出奇迹 !!!!!!!!!!!!!!!!!!

PID221 / 烦人的幻灯片 ☆ 提交你的代码 查看讨论和题解 你还木有做过哦 我的状态 查看最后一次评测记录 质量还不能统计出来哦~ 题目评价 质量 无 ★★★★★ ★★★★☆ ★★★☆☆ ★★☆☆☆ ★☆☆☆☆ 0% 0% 0% 0% 0% ★ ★ ★ ★ ☆ 通过人数 186 / 337 通过统计 最短耗时 0ms 最小内存 0KB 其它 题目标签 类型 其它 题目描述 李教授于今天下午做一个非常重要的演讲.不幸的是他不是一个非常爱整洁的人,他把自己做演讲要用的幻灯片随便堆放在一起.因此

烦人的幻灯片 暴力出奇迹

题目描述 李教授于今天下午做一个非常重要的演讲.不幸的是他不是一个非常爱整洁的人,他把自己做演讲要用的幻灯片随便堆放在一起.因此,演讲之前他不得不去整理这些幻灯片.做为一个讲求效率的学者,他希望尽可能简单地完成它.情况是这样,教授这次演讲一共要用n张幻灯片(n<=26),这n张幻灯片按照演讲要使用的顺序已经用数字1,2,…,n在上面编上了号.因为幻灯片是透明的,所以我们不能一下子看清每一个数字所对应的幻灯片. 现在我们用大写字母A,B,C,...再次把幻灯片依次编上号,如样例所示,我们可以很快发

莫队算法——暴力出奇迹

简介: 莫队这个算法是莫涛提出的. ? 用于处理一类不带修改的区间查询问题的离线 算法,其核心在于利用曼哈顿距离最小生成树 算法对区间处理顺序进行处理 . --zrt课件 这个算法本质上其实是暴力,但是由于可以离线处理循环的顺序,使得复杂度可以从n^2降到n^根号n甚至更低. 对于可以找到以下特点的题可以尝试使用莫队: 1.莫队算法是离线处理一类区间不修改查询类问 题的算法.就是如果你知道了 [ L,R] 的答案.你 可以在 O(1 ) 或 O( lgn ) 的 时间下得到 [ L,R 1] 和

51nod——1285 山峰和分段(暴力出奇迹)

要求每段的点数都一样,因此分的段数cnt肯定是n的因子,要求每段都有山峰,因此cnt肯定小于等于山峰数量.分段的宽度d=n/cnt,对山峰数量做一个前缀和,检查一下每一段的山峰数量是否没有增加即可. 1 ///暴力枚举段数 2 #include <bits/stdc++.h> 3 using namespace std; 4 #define maxn 50050 5 int high[maxn],num[maxn]; 6 7 int main(){ 8 std::ios::sync_with_

D. Berland Fair (暴力出奇迹 + 时间复杂度证明)

题目:传送门 题意:有 n 个糖果,第 i 个糖果卖 ai 块钱,你现在有 T 块钱,你每次都从第一块糖果开始看,如果你的钱数够买当前的糖果,那么你就会花钱买它,如果你看完了所有 n 块糖果,那么你会从 1 重新开始看,直到你的钱数小于最便宜的糖果的价格. 1 <= n <= 2e5, 1 <= ai <= 1e9, 1 <= T <= 1e18 思路:直接暴力就行了. 最多跑 logT 次 for,那时间复杂度才 o(n*logT) 完全可接受. 关于复杂度的证明:

Topcoder SRM 638 DIV 2 (大力出奇迹)

水题,就是一个暴力.大力出奇迹. Problem Statement   There is a narrow passage. Inside the passage there are some wolves. You are given a vector <int> size that contains the sizes of those wolves, from left to right. The passage is so narrow that some pairs of wolv

Codeforces 990E Post Lamps 【暴力】【贪心】

虽然只是10^6的数据量,但用cin会tle.一直知道cin常数大,但没想到会是10^3这个级别,而且比scanf慢5倍左右. 我们枚举每个power的lamp,然后对每个power用平均logn的代价去求它的cost,最后取最小值 对于每个power,我们从左往右地去照亮整个区间,首先0点要插一个路灯,下一个路灯理想上想插在0+power的位置(这样区间不被重复照亮),但实际上power位置上的路灯可能被blocked了,所以我们想在power位置之前的离power最近的一个位置安装路灯.如果

【CodeForces 990E】Post Lamps

传送门戳这里 Luogu & CodeForces 题目描述 Adilbek's house is located on a street which can be represented as the OX axis. This street is really dark, so Adilbek wants to install some post lamps to illuminate it. Street has nn positions to install lamps, they co

CodeForces 670D1 暴力或二分

今天,开博客,,,激动,第一次啊 嗯,,先来发水题纪念一下 D1. Magic Powder - 1 This problem is given in two versions that differ only by constraints. If you can solve this problem in large constraints, then you can just write a single solution to the both versions. If you find