Codeforces Round #433 Div. 2 C
来源:互联网 发布:mac如何设置默认输入法 编辑:程序博客网 时间:2024/06/13 23:56
题目链接
思路:贪心+排序
每次往k+i的位置加当前未被加过的最大值, 应该好好考虑在写的,写了好久说。。
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <queue>#include <algorithm>#include <map>#include <cmath>#include <vector>using namespace std;const int MAXN = 300005;typedef long long LL;struct node{ LL num; int id;}a[MAXN];LL b[MAXN];LL ans[10000000+10];bool cmp(node a, node b){ return a.num>b.num;}int main(){ int n, k; while(~scanf("%d %d", &n, &k)) { memset(b, 0, sizeof(b)); memset(ans, 0, sizeof(ans)); for(int i=1;i<=n;++i) { scanf("%lld", &a[i].num); b[i]=a[i].num; a[i].id=i; } sort(a+1, a+1+n, cmp); LL sum=0; int cnt=k+1; int i=1; while(1) { if(cnt==k+n+2) break; while(ans[cnt]!=0) cnt++; if(a[i].id<=cnt) { ans[a[i].id]=cnt; cnt++; i++; } else { ans[a[i].id]=a[i].id; i++; } } for(int i=1;i<=n;++i) sum+=b[i]*(ans[i]-i); cout<<sum<<endl; for(int i=1;i<=n;++i) printf("%lld%c", ans[i], " \n"[i==n]); } return 0;}
阅读全文
0 0
- Codeforces Round #433 (Div. 2) C. Planning
- Codeforces Round #433 Div. 2 C
- Codeforces Round #433 (Div. 2) C. Planning
- 【codeforces】Codeforces Round #370 (Div. 2) C
- Codeforces Round #433 (Div. 2)
- Codeforces Round #433 (Div. 2)
- Codeforces Round #433 (Div. 2)
- Codeforces Round #433 (Div.2)
- Codeforces Round #433 (Div. 2)
- Codeforces Round#433 div 2
- Codeforces Round #433 (Div. 2 C. Planning(优先队列)
- Codeforces Round #433 (Div. 2) C. Planning(贪心)
- Codeforces Round #433(Div.2) C,D,E题目详解
- Codeforces Round #433 (Div. 2)-贪心-C. Planning
- Codeforces Round #105 (Div. 2) C
- Codeforces Round 134 div 2 C题
- Codeforces Round #137 (Div. 2), problem: (C)
- Codeforces Round #153 (Div. 2) C题
- 35 个 Java 代码性能优化总结
- java开发ssm-spring
- vsftpd配置文件详解
- 计蒜客 最后一个单词的长度
- 瑞萨半导体回归图像传感器业务
- Codeforces Round #433 Div. 2 C
- hdu 3001 Travelling(状态压缩dp)
- 给图像加噪声
- 主机租用 选择优质机房很重要
- 学生信息
- 一种破解加密软件的方法
- Python切片问题
- ubuntu系统下使用openocd (野火的仿真器)下载stm32f103程序
- c/c++基础知识点