考虑我们一定是先放我们选定了\(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的更多相关文章

  1. ZOJ 3804 YY's Minions (简单模拟)

    /* 题意:一个矩阵中有 n*m个宠物,每一个宠物都有一个状态, 1醒着的,0睡着的 X离开的!如果这个宠物(醒着的)的周围醒着的个数>3 || <2它就会睡着, 如果这个宠物(睡着的)的 ...

  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 ...

  3. ZOJ Problem Set - 3804 YY's Minions

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5336 比较简单的模拟题,题意也很好理解. #include <iostr ...

  4. HearthBuddy 复生 reborn

    https://hearthstone.gamepedia.com/Reborn Reborn is an ability that causes a minion to be resummoned ...

  5. (转帖)开源容器集群管理系统Kubernetes架构及组件介绍

    最近在搞Docker还有她的管理工具,选型Kuberetes后,被她的术语和概念搞得晕头转向...看了一篇文章还不错,放到这里分享出来. 地址:http://www.linuxidc.com/Linu ...

  6. angularjs结合d3js实现资源展示

    转载请注明出处: 转载自Bin's Blog:  angularjs & d3 实现资源展示( http://www.wenbin.cf/post/27/ ) angularjs结合d3js实 ...

  7. saltstack(主机改名)

    已存在salt中的机器,为了规范,需要将这批主机改名 操作流程:在master把这批机器剔除:然修改这批机器的主机名.在/etc/salt目录下.用mv把minion_id和pki的目录重命名.重启s ...

  8. saltstack-部署

    安装epel源(所有主机安装) [root@salt-server /]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/r ...

  9. poj 3069 Saruman's Army

    Saruman's Army Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8477   Accepted: 4317 De ...

随机推荐

  1. Windows 安装 gcc

    Windows 安装 gcc ① 官网下载 GCC, the GNU Compiler Collection - GNU Project - Free Software Foundation (FSF ...

  2. AIbee 笔试

    CSS选择器 div+p 选择紧接在div元素之后的所有< p >元素 C++删除数组最后一个元素. 例如[1 2 3 4] 最后变为 [1 2 3] 用splice的删除,增加和替换 a ...

  3. Redis 深入

    1.缓存更新 一般来说缓存的更新有两种情况: 先删除缓存,再更新数据库. 先更新数据库,再删除缓存. 这两种情况在业界,大家对其都有自己的看法.具体怎么使用还得看各自的取舍.当然肯定会有人问为什么要删 ...

  4. Spring中属性注入的几种方式以及复杂属性的注入详解

    在spring框架中,属性的注入我们有多种方式,我们可以通过set方法注入,可以通过构造方法注入,也可以通过p名称空间注入,方式多种多样,对于复杂的数据类型比如对象.数组.List.Map.Prope ...

  5. 配置pyenv环境

    git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo 'export PYENV_ROOT="$HOME/.pyenv&quo ...

  6. NOIP模拟83(多校16)

    前言 CSP之后第一次模拟赛,感觉考的一般. 不得不吐槽多校联测 OJ 上的评测机是真的慢... T1 树上的数 解题思路 感觉自己思维有些固化了,一看题目就感觉是线段树. 考完之后才想起来这玩意直接 ...

  7. UltraSoft - Alpha - Scrum Meeting 5

    Date: Apr q9th, 2020. Scrum 情况汇报 进度情况 组员 负责 昨日进度 后两日任务 CookieLau PM 统筹个人进度,协助推进进度 辅助前后端连接工作 刘zh 前端 完 ...

  8. luogu P2746 [USACO5.3]校园网Network of Schools 题解

    前言: 火星题... 但是我调了半天,最后看了题解才明白. Wtcl 解析: 显然先缩个点. 第一问,就是问多少入度为0的点. 第二问,抽象一下就是要添加一些边,让一个DAG变成一个SCC,求最小边数 ...

  9. android tcp通讯

    Andoird TCP通讯 前言 最近在写一个即时通讯的项目,有一些心得,写出来给大家分享指正一下. 简单描述一下这个项目: 实时查询车辆运行状态的项目,走TCP通迅. 接口采用GZIP压缩. 后台是 ...

  10. stm32串口学习笔记

    stm32作为现在嵌入式物联网单片机行业中经常要用多的技术,相信大家都有所接触,今天这篇就给大家详细的分析下有关于stm32的出口,还不是很清楚的朋友要注意看看了哦,在最后还会为大家分享有些关于stm ...