1121
来源:互联网 发布:服务器基础知乎 编辑:程序博客网 时间:2024/05/18 00:23
题目链接:http://www.ifrog.cc/acm/problem/1121
1121 - Reverse the lights
Time Limit:2s Memory Limit:256MByte
Submissions:312Solved:93
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
SOLUTION
“玲珑杯”ACM比赛 Round #15
Submit summary Discuss
解析:暴力遍历1~k+1,选出最优解,注意处理不成立的情况
代码:
#include<bits/stdc++.h>#define N 300009using namespace std;typedef long long LL;const LL INF = 1LL<<60;int w[N], n, k;LL solve(int s){ LL num = 0ll; int now; for(int j = s; j <= n; j += k*2+1) { num += w[j]; now = j; //if(j + k < n && j + 2*k > n) return -1; } if(now + k < n) return INF; return num;}int main(){ LL ans = INF; while(~scanf("%d%d", &n, &k)) { for(int i = 1; i <= n; i++) scanf("%d", &w[i]); for(int i = 1; i <= min(k + 1, n); i++) { LL num = solve(i); if(num < 0) continue; ans = min(ans, num); } cout << ans << endl; } return 0;}//int main()//{// LL ans = 1LL<<60;// scanf("%d%d", &n, &k);// int now;// for(int i = 1; i <= n; i++) scanf("%d", &w[i]);// for(int i = 1; i <= min(k + 1, n); i++)// {// LL sum = 0;// for(int j = i; j<=n; j+=2*k+1)// {// now = j;// sum += w[j];// }// if(now + k>=n)// ans = min(ans, sum);// }// cout<<ans<<endl;// return 0;//}
阅读全文
0 0
- 1121
- 1121
- 1121
- 1121
- 1121
- 1121
- 1121笔记
- sicily 1121
- ZOJ-1121
- zy 1121
- 1121 - Subsequence
- hihocoder 1121
- PAT 1121
- PAT 1121
- 1121: 电梯
- uva 1121
- 1121: 电梯
- 缘分吗。。。1121
- 线程池
- Linux下chkconfig命令详解
- TLS协议分析------
- Kindle安装KOReader插件实现PDF文件的重新排版
- 学习嵌入式C语言
- 1121
- Linux服务器忘记密码操作
- LeetCode 347. Top K Frequent Elements
- $viewContentLoaded ,$routeChangeStart , $locationChangeStart 达到用户切换页面的时候实现loading效果
- CAN与CANopen协议的关系
- Android端与PC端同步绘画板(一)-使用Socket建立连接
- 小程序项目中遇到的问题
- JSON toJSONString
- 允许拖拽的 ListWidget