SICAU-OJ:要我唱几首歌才能够将你捕捉
要我唱几首歌才能够将你捕捉
题意:
有N种颜色的牛,现在可以执行以下两种操作:
1.抓捕一只牛,代价为ai; 2.花费x的代价使用魔法,让所有颜色加1,N会变为1。
求得到N种颜色的牛最少花费的代价。
题解:
这题挺巧妙的,我一开始想的是贪心,找到每头牛最好从哪头牛更新过来,后来就WA了很多次...因为对施用魔法的情况不能很好地处理。
其实这题可以想:每种颜色的产生都需要一开始选取一头牛,并且经过X次魔法操作(0<=X<=N-1)才行,这里是关键。
根据上面,我们可以得知对于两种颜色i,j,假定他们分别从a,b转移过来,那么通过max(j-b,i-a)次魔法操作肯定可以从a,b转移到i,j。
假定我们现在最多使用k次魔法并且已经得知了每种颜色从哪个位置转移过来,那么现在肯定使用k次魔法可以得到目前的最小结果(可以模拟一下,有些转移我们并不一定需要把k次魔法用完,但有些可能就需要,这样的话就能对施用魔法的情况进行一个好的处理了)。
所以我们可以枚举使用魔法的次数(限定之)为k,我们每头牛最多就只能从[i-k,i]中ai的最小值更新过来,最后统计结果就好了。
这里不可能存在这种情况:相同位置的牛用相同的魔法次数。所以可以保证贪心策略的正确性。
代码如下:
#include <bits/stdc++.h>
#define INF 99999999999999999
using namespace std;
typedef long long ll;
const int N = ;
ll a[N];
ll minx[N][N];
ll n,x; int main(){
scanf("%I64d%I64d",&n,&x);
for(int i=;i<=n;i++) scanf("%I64d",&a[i]);
for(int i=;i<=n;i++) for(int j=;j<=n;j++) minx[i][j]=INF;
for(int i=;i<=n;i++){
ll t=INF;
for(int j=i;j<=n;j++){
t=min(a[j],t);
minx[i][j]=t;
}
}
ll ans=INF;
for(int k=;k<=n-;k++){
ll tmp=;
for(int i=;i<=n;i++){
int now=i-k;
if(now<){
now+=n;
tmp+=min(minx[][i],minx[now][n]);
}else tmp+=minx[now][i];
}
ans=min(ans,tmp+(ll)k*x);
}
cout<<ans;
return ;
}
SICAU-OJ:要我唱几首歌才能够将你捕捉的更多相关文章
- [zt]给你的Mp4大换血,精选Touch里3年收集的900多首歌,"经典不忍去的""最新近流行的",与你共享~~
如果你是音乐爱好者: 这些歌, 请戴上耳机, 调大音量, 一个人听 ,全世界 都是你的!!!!! (一)这些歌很温暖,没有金属味,适合有阳光的午后,很悠闲... [Anaesthesia]Maximi ...
- 09、 在QQ音乐中查找七里香这首歌的精彩评论
找到七里香这首歌的精彩评论 URL https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg?g_tk=5381&l ...
- BUUCTF-来首歌吧
来首歌吧 歌曲题目一般就是整个摩斯电码 看上面的样子应该就是摩斯电码解密一下 ..... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -... ...
- 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....直到剩下
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- VC用Beep整几首歌听听~~~
//生日快乐歌 #include "stdafx.h"#include <windows.h>void main(void) { unsigned FR ...
- python 虾米停服了...用python爬取虾米最近播放的1000首歌
1. 虾米关服 在这里插入图片描述 用了5年多的音乐软件就这么说关就关了,确实让人心里不好受 ,虽然再去一个新的app里,让它们的算法熟悉你的喜好也不是很困难,可我还是习惯虾米的界面.虾米现在可以支持 ...
- pygame “音乐盒”---- 播放一首歌& 点击对话框后背景以及对话框大小改变
有时,你用pygame写的游戏也许需要播放一些背景音乐,该怎么做呢,直接上代码: 下面的代码,有关于: 1>设置对话框图标.大小.标题 2>播放音乐 3>设置背景图片,以及获取背景图 ...
- 给我半首歌的时间,给你说明白Immutable List
先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...
- 用 Beep 函数让主板“唱”《生日歌》
用 Beep 函数,让你的主板也会"唱歌".Beep 可以通过控制主板扬声器的发声频率和节拍来演奏美妙的旋律.本文就通过C#演示,调用Beep函数,演奏生日快乐歌.首先我们来看下 ...
随机推荐
- C语言实例解析精粹学习笔记——42(插入排序)
实例说明: 将一个整数数组按从小到大的顺序进行排序.(主要学习基本的插入排序和改进的冒泡排序的算法和应用) 思路1: 从第一个数据开始,分别比较其后的数据,若比它小,则将这两个数的位置交换:从第一个数 ...
- 多线程编程之Apue3rd_Chapter15.10之posix信号量
看了APUE的chapter15,只重点看了15.10,学习了posix信号量.Posix信号量比起xsi信号量的优点是性能更好,在Linux3.2.0平台上性能提升很大.其中命名信号量使用方法如下. ...
- BootCDNApi使用记录
通过API获取BootCDN所加速的所有前端开源库的基本信息和文件列表 API 将一下API链接中的.min字样去掉后,获取到的JSON格式的返回信息是经过良好的格式化的,便于查看. 所有开源库简要信 ...
- HBase import tsv,csv File
一,HBase中创建table 表(liupeng:test)并创建 info ,contect 列簇 hbase(main):258:0> create "liupeng:Test& ...
- Android adb shell启动应用程序的方法
在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am. usage: am [subcommand] [options] start an Activity: ...
- 「赛后补题」HBCPC2018题目代码与思路简析
这次比赛(2018年第二届河北省大学生程序设计竞赛)虽然没有打,但是题目还是要写的.未完成的题目(还差比较硬核的四题)和思路分析会陆续更新完. Problem A 2011 Mex Query /* ...
- Loadrunner11.0安装与简单使用
公司开发了APP或者微信小程序啊什么的,都会先进行性能测试,而性能测试一般肯定会来测试接口的压测,并发.Loadrunner是一个很强大的测试工具,它是一种预测系统行为和性能的负载测试工具.通过以模拟 ...
- jmeter实例,如果有说明错误,请各位大神批评
首先我们打开jmeter,今天录制的脚本的是获取QQ头像,找了好久才找到可以免费试用的接口,如果有什么错误的地方,欢迎大家提出来,我会及时修改,也给自己一次进步的机会,希望大家不吝赐教!!!如果有什么 ...
- MyCAT+MySQL 搭建高可用企业级数据库集群——第2章 MyCat入门
2-1 章节综述 2-2 什么是MyCat 2-3 什么是数据库中间层 2-4 MyCat的主要作用 2-5 MyCat基本元素 2-6 MyCat的安装 2-1 章节综述 1.掌握Mycat的基础概 ...
- CentOs 版本名字说明
What images are in this directory CentOS-6.3-x86_64-netinstall.iso This is the network install and r ...