\(\color{blue}{Link}\)

\(\text{Solution:}\)

首先,显然的策略是把一定不能翻倍的先加进来。继续考虑下一步操作。

考虑\(x,y\)两个可以翻倍的物品,且\(a_x>a_y.\)

那么,设原来答案为\(sum\),则有下面情况:

先选择\(x:\)

  • 若\(a_x<sum\)则翻倍,与此同时\(a_y\)也必定小于\(sum.\)
  • 若\(a_x>sum\)则\(sum\to sum+a_x\)与此同时\(a_y<sum.\)

先选择\(y:\)

  • 若\(a_y<sum\)则翻倍,\(a_x\)待定。
  • 若\(a_y>sum\)则\(sum\to sum+a_y\),\(a_x\)待定。

但对比上面的选法,先选\(a_y\)与先选\(a_x\)的一些情况无异,反而,如果加了\(a_x\)再翻倍和加了\(a_y\)翻倍显然\(a_x\)更优。于是我们推出先选择\(a_x.\)

由此,证毕,此题得解。

\(\text{Q.E.D.}\)

#include<bits/stdc++.h>
using namespace std;
int n,a[500010],b[500010],m;
int mx,sum,vis[500010];
inline bool cmp(int x,int y){return a[x]>a[y];}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)scanf("%d",&a[i]);
for(int i=1;i<=m;++i)scanf("%d",&b[i]),vis[b[i]]=1;
if(n==m){
for(int i=1;i<=n;++i)mx=mx<a[i]?a[i]:mx;
cout<<(mx<<(n-1))<<endl;
return 0;
}
sort(b+1,b+m+1,cmp);
for(int i=1;i<=n;++i)sum+=(!vis[i]?1:0)*a[i];
for(int i=1;i<=m;++i){
if(a[b[i]]>=sum)sum+=a[b[i]];
else sum=sum+sum;
}
cout<<sum<<endl;
return 0;
}

【题解】CF413C Jeopardy!的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. Android开发之数据存储——SharedPreferences基础知识详解,饿补学会基本知识,开发者必会它的用法。

    一.数据存储选项:Data Storage --Storage Options[重点] 1.Shared Preferences Store private primitive data in key ...

  2. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  3. vmware-workstation迁移虚拟机 15pro到12版本

    最近将测试的几台虚拟机进行了迁移,有几个点要注意,分享一下 1.环境介绍: 源服务器-ip-172.16.96.x 目标服务器-ip-172.16.96.x VMware版本-VMwareworkst ...

  4. TinkPHP5.1开发注意事项

    1.新下载的框架文件,开发前先开启调试配置 config目录下app.php文件 // 应用调试模式 'app_debug'              => true, 2.每新建一个方法,都要 ...

  5. 常用API【2】

    常用API 1.Math类 1.1 Math类概述 Math包含执行基本数字运算的方法 没有构造方法,如何使用类中的成员呢? 看类的成员是否是静态的,如果是,可以通过类名直接调用 1.2Math类的常 ...

  6. Activiti7 提交任务

    package com.itheima.activiti; import org.activiti.engine.ProcessEngine; import org.activiti.engine.P ...

  7. 【Flutter 实战】菜单(Menu)功能

    老孟导读:今天介绍下Flutter中的菜单功能. PopupMenuButton 使用PopupMenuButton,点击时弹出菜单,用法如下: PopupMenuButton<String&g ...

  8. 【python练习册】1.3 将1.2题生成的n个激活码保存到mysql关系型数据库中

    该题涉及到mysql中一些指令,先熟悉一下 MySQL指令 参考:https://www.cnblogs.com/zhuyongzhe/p/7686105.html mysql -u root -p ...

  9. oracle之二数据库审计

    数据库审计audit(PPT-I-320-334) 13.1 审计的功能:监控特定用户在database 的action(操作) 13.2 审计种类: 1)标准数据库审计(语句审计.权限审计.对象审计 ...

  10. String的intern方法的使用场景

    在讲intern方法前,我们先简单回顾下Java中常量池的分类. 常量池的分类 Java中常量池可以分为Class常量池.运行时常量池和字符串常量池. 1. Class文件常量池 在Class文件中除 ...