CF1354F Summoning Minions
考虑我们一定是先放我们选定了\(m\)个数,一定是先放了\(m-1\)个数上去,然后让放上一个不打算选的然后拿下来,白嫖\(b * (m-1)\)的贡献,最后放上一个打算放的。
考虑我们一定是按\(b\)的顺序放的。
按\(b\)排序,用动态规划解决即可。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define ll long long
#define N 80
ll f[N][N],last[N][N];
ll used[N];
struct P{int a,b,id;}e[N];
bool operator < (P x,P y){return x.b < y.b;}
ll T;
inline void dfs(int i,int j){
if(!i)return;
if(last[i][j])dfs(i - 1,j - 1),used[i] = 1;
else
dfs(i - 1,j),used[i] = 0;
}
int main(){
scanf("%lld",&T);
while(T -- ){
ll n,m;
std::memset(f,0,sizeof(0));
scanf("%lld%lld",&n,&m);
for(int i = 1;i <= n;++i){
scanf("%d%d",&e[i].a,&e[i].b);
e[i].id = i;
}
std::memset(f,-0x3f,sizeof(f));
f[0][0] = 0;
std::sort(e + 1,e + n + 1);
for(int i = 1;i <= n;++i)
for(int i = 1;i <= n;++i)
for(int j = 0;j <= std::min(i,(int)m);++j){
f[i][j] = f[i - 1][j] + e[i].b * (m - 1);
last[i][j] = 0;
if(j && (f[i][j] <= f[i - 1][j - 1] + e[i].a + e[i].b * (j - 1)))
f[i][j] = f[i - 1][j - 1] + e[i].a + e[i].b * (j - 1),last[i][j] = 1;
}
dfs(n,m);
std::vector<int>QWQ;
for(int i = 1;i <= n;++i)
if(used[i])QWQ.push_back(e[i].id);
std::cout<<m + (n - m) * 2<<std::endl;
for(int i = 0;i < QWQ.size() - 1;++i)
std::cout<<QWQ[i]<<" ";
for(int i = 1;i <= n;++i)
if(!used[i])
std::cout<<e[i].id<<" "<<-e[i].id<<" ";
std::cout<<QWQ[QWQ.size() - 1]<<std::endl;
}
}
CF1354F Summoning Minions的更多相关文章
- ZOJ 3804 YY's Minions (简单模拟)
/* 题意:一个矩阵中有 n*m个宠物,每一个宠物都有一个状态, 1醒着的,0睡着的 X离开的!如果这个宠物(醒着的)的周围醒着的个数>3 || <2它就会睡着, 如果这个宠物(睡着的)的 ...
- 【问题】报错[CRITICAL] Rendering SLS 'base:minions.install' failed: Jinja variable 'list' object has no element 0
1.报错[CRITICAL] Rendering SLS 'base:minions.install' failed: Jinja variable 'list' object has no elem ...
- ZOJ Problem Set - 3804 YY's Minions
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5336 比较简单的模拟题,题意也很好理解. #include <iostr ...
- HearthBuddy 复生 reborn
https://hearthstone.gamepedia.com/Reborn Reborn is an ability that causes a minion to be resummoned ...
- (转帖)开源容器集群管理系统Kubernetes架构及组件介绍
最近在搞Docker还有她的管理工具,选型Kuberetes后,被她的术语和概念搞得晕头转向...看了一篇文章还不错,放到这里分享出来. 地址:http://www.linuxidc.com/Linu ...
- angularjs结合d3js实现资源展示
转载请注明出处: 转载自Bin's Blog: angularjs & d3 实现资源展示( http://www.wenbin.cf/post/27/ ) angularjs结合d3js实 ...
- saltstack(主机改名)
已存在salt中的机器,为了规范,需要将这批主机改名 操作流程:在master把这批机器剔除:然修改这批机器的主机名.在/etc/salt目录下.用mv把minion_id和pki的目录重命名.重启s ...
- saltstack-部署
安装epel源(所有主机安装) [root@salt-server /]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/r ...
- poj 3069 Saruman's Army
Saruman's Army Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8477 Accepted: 4317 De ...
随机推荐
- 激活NX窗口的按钮
原理:取得按钮名称以后,通过运行宏文件激活按钮 Imports System.IO Imports System.Runtime.InteropServices Imports NXOpen.Menu ...
- Web前端安全之安全编码原则
随着Web和移动应用等的快速发展,越来越多的Web安全问题逐渐显示出来.一个网站或一个移动应用,如果没有做好相关的安全防范工作,不仅会造成用户信息.服务器或数据库信息的泄露,更可能会造成用户财产的损失 ...
- 利用 pip 安装 Python 程序包到个人用户文件夹下
利用 --user 参数,即 pip install --user package_name 这样会将Python 程序包安装到 $HOME/.local 路径下,其中包含三个字文件夹:bin,lib ...
- [技术博客]Unity3d 动画控制
在制作游戏时,导入的箱子模型本身自带动画.然而,它的动画是一个从打开到关闭的完整过程,并且没有给出控制打开关闭的方法. 最直接的想法是对该动画进行拆分,再封装成不同的动画状态,但是不巧的是,这个动画被 ...
- rabbitmq死信队列和延时队列的使用
死信队列&死信交换器:DLX 全称(Dead-Letter-Exchange),称之为死信交换器,当消息变成一个死信之后,如果这个消息所在的队列存在x-dead-letter-exchange ...
- 洛谷 P4555 [国家集训队]最长双回文串
链接: P4555 题意: 在字符串 \(S\) 中找出两个相邻非空回文串,并使它们长度之和最大. 分析: 直接使用马拉车算法求出每个点扩展的回文串.如果枚举两个回文串显然会超时,我们考虑切割一个长串 ...
- CODING —— 云原生时代的研发工具领跑者
本文为 CODING 创始人兼 CEO 张海龙在腾讯云 CIF 工程效能峰会上所做的分享. 文末可前往峰会官网,观看回放并下载 PPT. 大家上午好,很高兴能有机会与大家分享 CODING 最近的一些 ...
- Huffman算法
一.Huffman算法介绍 霍夫曼编码(英语:Huffman Coding),又译为哈夫曼编码.赫夫曼编码,是一种用于无损数据压缩的熵编码(权编码)算法.在计算机数据处理中,霍夫曼编码使用变长编码表对 ...
- 利用Ambari平台安装与部署Hadoop
* 本篇是利用Ambari平台安装与部署Hadoop,如果需要原生部署Hadoop,请点击以下地址: https://www.cnblogs.com/live41/p/15467263.html 一. ...
- cf 12C Fruits(贪心【简单数学】)
题意: m个水果,n个价格.每种水果只有一个价格. 问如果给每种水果分配价格,使得买的m个水果总价格最小.最大. 输出最小值和最大值. 思路: 贪心. 代码: bool cmp(int a,int b ...