Link
思维
两天因为INF = 0x3f3f3f3f 不够大被卡了两次,,看来如果不涉及运算的话还是得设一个更大的值。

题意

思路

感冒了,好难受,回头补一下

简单来说就是如果当前走到第 i i i 个点,遇到的宝箱数多于钥匙数,那么有两种选择

  1. 走到下一个钥匙之后立即折返,那么 i i i 到 i + 1 i + 1 i+1 这段路一定被走了3遍。
  2. 走到尽头再折返,相当于之后的所有路都走了2遍

所以就是枚举每个点选择1优还是选择2优。
显然2最多只会选一次,所以选择一定形如1112或者11111,只要枚举在哪个点选2,并一直记录每步选1的当前距离就行了。

代码

int b[maxn], c[maxn];
int n;
struct Node {int t;    //1宝箱 2钥匙int dis;bool operator < (const Node &x) const {if(dis != x.dis)return dis < x.dis;return t > x.t;}
};
int f[maxn];    //f[i]表示i - i+1 这段走几遍
int cot[3]; //cot[1]表示经过的宝箱数量,2表示钥匙
void solve() {cin >> n;vector<Node> v;v.push_back(Node{0, 0});for(int i = 1; i <= n; i++) {cin >> b[i];v.push_back(Node{1, b[i]});}for(int i = 1; i <= n; i++) {cin >> c[i];v.push_back(Node{2, c[i]});}sort(v.begin(), v.end());f[1] = 1;int mx = max(b[n], c[n]);int ans = INF;int len = 0; //假设上述每步都选1,记录了走到i点的距离for(int i = 1; i < v.size(); i++) {len += f[i] * (v[i].dis - v[i-1].dis);ans = min(ans, len + 2 * (mx - v[i].dis));//尝试如果该步选择2的距离,取mincot[v[i].t]++;if(cot[1] > cot[2]) f[i+1] = 3;else f[i+1] = 1;}cout << ans << endl;
}

#806.宝箱 思维相关推荐

  1. 代码源每日一题-宝箱(贪心/思维)

    题目链接:宝箱 - 题目 - Daimayuan Online Judge 原题链接:C - Gacha (atcoder.jp)(没英文题面哇...) 大致题意: 坐标轴上有  个钥匙和  个宝箱, ...

  2. 逻辑思维训练1200题-蓝桥杯计算思维参考

    黑格尔曾说过,逻辑是一切思考的基础.逻辑思维能力强的人能迅速.准确地把握住问题的实质,面对纷繁复杂的事情能更容易找到解决的办法. <逻辑思维训练1200 题>介绍了排除法.递推法.倒推法. ...

  3. 读书笔记-思维的精进

    读书笔记-思维的精进 作者:大卫·罗布森 1.中心思想: 1.要避开哪些智力陷阱. 2.如何锻炼自己的思维能力,避开智力陷阱. 2.智力陷阱的形式 智力陷阱的产生,很大程度上不是因为认知水平太低,恰恰 ...

  4. 游戏化思维:从工具到玩具

    人类生来就会被有趣的事物所吸引,所以如果能使产品变得有趣和更有吸引力,让用户产生愉悦的情感体验,为什么非要把产品仅定位成一个工具呢? 也许是时候打破工具化思维的桎梏了,用游戏化思维掀起一场从工具到玩具 ...

  5. 揭富人与穷人21个不同思维 看富豪如何脱颖而出

    <富人是怎么想的>(How Rich People Think)的作者Steve Siebold曾在近30年里采访世界各地的富豪,看究竟是什么让富豪从普通人中站出来. 他发现这和金钱基本没 ...

  6. 学习,思维三部曲:WHAT、HOW、WHY

    学习技术的三部曲:WHAT HOW WHY 我把学习归类为三个步骤:What.How.Why.经过我对周围同事和朋友的观察,大部分感觉自己技术没有提高的人,都仅仅停留在What阶段.下面我把这三个步骤 ...

  7. Linux架构思维导图

    Linux架构思维导图 GUI(Graphical User Interface,图形用户界面) Linux 学习路径 软件框架 Linux 桌面介绍 FHS:文件系统目录标准 Linux 需要特别注 ...

  8. github 思维导图开元软件_画思维导图记笔记的工具软件

    思维导图是很多人在做笔记的时候都会用到的一种记录方式,使用思维导图可以简单有效的表达发散性思维,能够协助人们在各种因素间平衡展开思考,从而提升自己笔记的含金量和工作效率,有没有画思维导图记笔记的工具软 ...

  9. 大数据概念思维导图_思维导图|数据化风控(信用评分建模教程)

    本文将按<数据化风控--信用评分建模教程>行文逻辑,并结合相关参考材料,为大家梳理本书涉及的重点知识,也算是自己读书笔记分享.有需要的同学可先收藏.点赞,以便回顾学习和吸收,当然,如果愿意 ...

最新文章

  1. 函数的使用——未完待续
  2. 超详细的redis总结
  3. 深入浅出JProfiler
  4. App Store审核被拒的23个理由
  5. rails采用MongoDB感觉相当不错!
  6. java erlang_Java开发人员的Erlang
  7. bootstrap inputfile.js
  8. Sendmail邮件服务器搭建与配置笔记
  9. 家庭用计算机怎样选择设置网络位置,win7系统怎么选择网络位置
  10. java byte to integer_Java中的Byte转为无符号的Integer
  11. Jackrabbit介绍
  12. gomod下导入模块的方法
  13. 正则表达式(二)之元字符
  14. 利用Druid Monitor做数据库连接异常排查
  15. stm32学习(一)STM32简单介绍(初步了解单片机与STM32)
  16. 一组数据,带你读懂“2021中国民营企业500强”背后深意
  17. Matlab进行t检验
  18. 【预测模型】基于最小二乘法算法实现股票预测matlab代码
  19. win7 找不到 计算机策略组,win7打开组策略提示无权限怎么解决 win7系统组策略如何开启...
  20. 放大器为什么会被限幅?原因所在!

热门文章

  1. 解析G652,G657A,G655和G654光缆之间的区别
  2. 802.11a/b/g/n区别
  3. 在微信小程序中使用less
  4. 判断手机号码vue_判断手机号运营商
  5. 【工控老马】ABB AC500 系列PLC与WEST 8100+系列仪表的ASCII通讯指南
  6. 线性丢番图方程的C++实现
  7. 2022-04-清华管理学-清华大学-宁向东
  8. s60v5用java qq_S60V5手机QQ终于来了,试用感受!
  9. 阿里云技术专家刘晨旭:阿里云对数据可靠性保障的一些思考
  10. 记忆日语的奥秘—日语汉字读音变化