玲珑oj 1121 思维

1121 - Reverse the lights

Time Limit:2s Memory Limit:256MByte

Submissions:376Solved:111

DESCRIPTION

有n

个灯,初始时都是不亮的状态,每次你可以选择一个某一个灯,不妨记为x,所有满足和x距离不超过k的灯的状态都将被翻转,选择第i个灯的代价记为ci

,问最终所有灯都是亮的状态的最小花费.

INPUT

输入有两行,第一行包含两个正整数n(1≤n≤10000)和k(0≤k≤1000)

第二行包含n个整数,分别表示ci(0≤ci≤109)

OUTPUT

输出一行表示答案

SAMPLE INPUT

3 1 1 1 1

SAMPLE OUTPUT

1

一开始思路还是对的,可惜一直想怎么dp,最后发现不需要dp,直接扫描一次求最优解就好了。

每个灯最多只开一次,多开也没用,开了又关相当于没起到作用,我们只要依次枚举第一个开的地点,他所达到的范围内的灯就都不用开了,

直接跳到最近的一个处于关闭状态的灯前开启这个灯即可。

如果我们不这么做的话,那么两盏开启的灯之间就会出现重叠部分而抵消,为了处理这些重叠我们需要再开一些灯这样又会出现更多的重叠。

具体的证明,我也没证出来,但是感觉一下确实是这样子的。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n,k,i,j;
 6     long long ans=1e18,c[10005];
 7     cin>>n>>k;
 8     for(i=1;i<=n;++i) cin>>c[i];
 9     if(!k) {ans=0;for(i=1;i<=n;++i)ans+=c[i];n=-999; }
10     for(i=1;i<=n;++i)
11     {
12         int s=i,e=n-k,x=s;
13         long long p=0;
14         if(s-k>1) break;
15             for(j=s;j<=n;j+=(2*k)+1) {
16                     p+=c[j];
17                     x=j;
18             }
19         if(x+k>=n) {ans=min(ans,p);}
20     }
21     cout<<ans<<endl;
22     return 0;
23 }
时间: 2024-08-04 21:00:27

玲珑oj 1121 思维的相关文章

玲珑oj 1117 线段树+离线+离散化,laz大法

1117 - RE:从零开始的异世界生活 Time Limit:1s Memory Limit:256MByte Submissions:438Solved:68 DESCRIPTION 486到了异世界,看到了一群可爱的妹子比如蕾姆啊,艾米莉亚啊,拉姆啊,白鲸啊,怠惰啊等等!有一天膜女告诉486说她的能力可能不能再用了,因为膜女在思考一个数据结构题,没心情管486了.486说我来帮你做,膜女说你很棒棒哦! 给一个集合,最开始为空(不是数学上的集合)五个操作: 1.插入x2.把小于x的数变成x3

玲珑OJ 1083:XJT Love Digits(离线处理+哈希)

http://www.ifrog.cc/acm/problem/1083 题意:比较好懂.注意答案的x不包含ax本身,所以才输出-1. 思路:离线处理.根据x排序,然后每次更新Hash[]数组就好了. 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <cstdlib> 5 #include <algorithm> 6 #include <strin

“玲珑杯”算法比赛 Round #14题目与标程

"玲珑杯"算法比赛 Round #14By:wxh010910 Start Time:2017-05-13 16:00:00 End Time:2017-05-13 18:30:00 Refresh Time:2017-05-20 09:51:24 Public p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 { margin:

1121 - Reverse the lights 思维题

http://www.ifrog.cc/acm/problem/1121 我看到这些翻转的题就怕,可能要练下这些专题. 我最怕这类题了. 一开始想了下dp, dp[i][0 / 1]表示完成了前i位,第i位不按 / 按,的状态,然后发现转移不了.无果.好像是按下这一位,然后后面的k个又会变,表示不了. 然后来了一个贪心,对于第1个,在[1, k + 1]之间,肯定要按下一个了,那么按哪一个呢?我自己写了一个函数来判断按下这一个位的价值,就是,[pos - k, pos + k]数中所有的和,然后

cug oj 1479 Treasure Chest Lock (区间dp 思维)

1479: Treasure Chest Lock Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 7  Solved: 5 [Submit][Status][Web Board] Description Vic has a treasure chest. And there is a lock on the treasure chest. The lock contains a sequence of wheels. Each wheel has

玲珑学院OJ 1028 - Bob and Alice are playing numbers 字典树,dp

http://www.ifrog.cc/acm/problem/1028 题解处:http://www.ifrog.cc/acm/solution/4 #include <cstdio> #include <cstring> #include <queue> #include <cmath> #include <algorithm> using namespace std; typedef long long LL; const int N =

SDUT OJ 周赛 找有毒的那杯水(思维逻辑 + 折半思想 )

你打我啊 Time Limit: 500ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 最近看了一个非常好玩的题,如果有972杯水,其中有971个没有毒的,1个有毒的, 其中有毒的水的毒性需要一周才会发作,那么,我们最少需要多少只小白鼠才能够在一周的时间内确定那一杯水是有毒的.当然这种水题肯定难不住各位队员们.所 以我要出的题和上述的东西没有一点关系. 那既然上面的东西和这次的题没有什么关系那我为什么要说呢,很明显,我在凑字数,我实在是不知道该怎么凑了呀,他

玲珑学院OJ 1023 - Magic boy Bi Luo with his excited math problem 树状数组暴力

分析:a^b+2(a&b)=a+b  so->a^(-b)+2(a&(-b))=a-b 然后树状数组分类讨论即可 链接:http://www.ifrog.cc/acm/problem/1023 吐槽:这个题本来是mod(2^40),明显要用快速乘啊,但是用了以后狂T,不用反而过了,不懂出题人 #include <iostream> #include <algorithm> #include <cmath> #include <vector&g

CSUST 2012 一个顶俩 (本校OJ题)(思维+树链剖分)

(点击这里查看原题,不保证可以进去....外网可能比较卡) Description A:一心一意 B:一个顶俩 最近QQ更新后那个成语接龙好像挺火的?但我只知道图论里一条边是一个顶俩个点的emm. 如果我给你一个n个点n-1条边的无向联通图,但是这里头有一些边是脆弱的.随时都面临崩坏的危险. 为了维持他们的连通性,善良的我又给了你m条紫水晶备用边(u,v).我这里准备Q个问题,第i个问题为一个整数z(1≤z≤n−1)表示若第z条边崩坏了,你能选出多少条备用边保证图继续保持联通. Input 第一