题目链接

题意

在长为n的跑道上有m只老鼠一只猫,猫处于0号格子,老鼠在(0,n)的开区间,每次操作可以将一只老鼠向n移动一格,每次操作后猫向n移动一格,若猫和老鼠处于同一格(任意量的老鼠),老鼠被捉,若老鼠到达第n格,老鼠逃生,求最多有多少只老鼠逃生。

解析

1 :对于处于不同格的两只老鼠A 和 B,定义A 在 B 左边,那么由于 A 到达 B的位置需要额外的移动,因此B的逃生可能大于 A,因此能够逃生的一定是更接近终点的老鼠。

2 :一个重要的结论是对于这样一群能够逃生的老鼠,他们的所有移动方案都可以使他们逃生。
可以利用反证法,若存在这样一种方案,使得所有老鼠恰好可以逃生(最后一只老鼠逃生后,猫恰好到达第n - 1格)那么在进行最后一次操作时,这群老鼠所需的操作数为1,那么回溯一步,所有可以到达该情况的前置方案都可以满足是的所有老鼠恰好可以逃生
有此也可以得到方案合法性的条件:

所需的总操作数 <= 猫到达最后一格所需要的操作数(老鼠先手)

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 2e5 + 5;
int a[maxn];
signed main(){ios::sync_with_stdio(false);int t; cin >> t;while(t--){int n, m; cin >> n >> m;for(int i = 1; i <= m; ++i) cin >> a[i];sort(a + 1, a + 1 + m, greater<int>());int sum = 0;int ans = m;for(int i = 1; i <= m; ++i){sum += n - a[i];if(n - 1 < sum){ans = i - 1;break;}}cout << ans << endl;}return 0;
}

C. Save More Mice相关推荐

  1. Save More Mice 贪心

    题意 : 0位置有一个猫,n位置有老鼠洞,每次任选一个老鼠向右移动1个位置,然后猫也向右移动一个位置,如果猫所在的位置有老鼠,这些老鼠全部会被抓住,老鼠碰到洞就不会被抓,问最多有多少老鼠不被抓住 思路 ...

  2. Save More Mice (贪心 二分)

    贪心code #include<bits/stdc++.h> #define x first #define gcfx main #define y second #define mak ...

  3. Codeforces 1593C Save More Mice

    [A-SOUL/乃琳]ED-<迷迭香> 快去听乃琳唱的<迷迭香!> 乃琳,嘿嘿,我的乃琳

  4. Codeforces Round #744 (Div. 3)【A-D E的题解】

    目录 A. Elections[800 / 模拟] B. Make it Divisible by 25[900 / 思维] C. Save More Mice[1000 / 贪心] D1. All ...

  5. codeforces:ProblemMset

    最近一个月在codeforces上做的题(做个记录) 后面太多了就不把代码一一放出了,只放置了链接,可根据链接找到提交的代码. 最小子矩阵 #include <iostream> #inc ...

  6. Codeforces Round #748 (Div. 3) 题解 完整A~G

    Codeforces Round #748 (Div. 3) 题解 A. Elections 题意 已知竞选中三个候选人的当前得票数 a , b , c a,b,c a,b,c,现在可以增加任何一个人 ...

  7. laravel mysql save 后 查看 受影响行数_swoft2教程系列-mysql模型

    无论是基础查询还是高级查询,实际都会依赖表实体,一个表字段和一个类属性的关系通过映射实现,而对类的操作也就相当于在对数据表操作.Swoft 2.x 中实体类对比 1.x 使用起来更简单,它兼容 Bui ...

  8. 关于object references an unsaved transient instance - save the transient instance before flushing的解决方法

    关于object references an unsaved transient instance - save the transient instance before flushing的解决方法 ...

  9. R语言构建xgboost模型:模型的保存(xgb.save)和加载(xgb.load)、或者保存为R二进制文件(xgb.save.raw R binary vector)

    R语言构建xgboost模型:模型的保存(xgb.save)和加载(xgb.load).或者保存为R二进制文件(xgb.save.raw,R binary vector) 目录

最新文章

  1. java 泛型 .net_Java基础11:Java泛型详解
  2. Second day in Jumei
  3. Elasticsearch java客户端调用cat服务
  4. MySQL—数据库表的完整性约束(非外键约束)
  5. python变量名称的规定_Python 趣闻:如何获得变量的名字?
  6. 一个Python爬虫工程师学习养成记
  7. eclipse设置jsp文件编码默认为UTF-8
  8. php5.6 mysql nginx_nginx1.10.3+php5.6+mysql5.7.0
  9. 【HANA系列】SAP HANA SQL获取当前日期最后一天
  10. 解构控制反转(IoC)和依赖注入(DI)
  11. c#winform选择文件,文件夹,打开指定目录方法
  12. SpringMVC中Model,ModelAndView,ModelMap的区别
  13. 3dmax软件怎么贴图
  14. 唯品会等被纳入MSCI指数,中概股迎来春天
  15. 可扩展机器学习——分类——点击率预测(Click-through Rate Prediction)
  16. POJ 1129 Channel Allocation(四色定理)
  17. html中的超链接打不开,excel里超链接打不开怎么办
  18. SQL注入-入门需了解项目
  19. python之疫情监控(爬虫+可视化)主要技术(Python+Flask+Echarts)
  20. 【测控电路】包络检波电路

热门文章

  1. 谷歌浏览器怎么管理收藏夹 收藏夹分类整理步骤
  2. CentOS 7 搭建 Keepalived+LVS NAT模式 高可用集群
  3. 我的 System Verilog 学习记录(1)
  4. C++ RasDial之调用RasEnumEntries遍历系统中存在的宽带连接名称
  5. 百度云同步盘登录失败,报错155010的问题解决
  6. 企业OA系统定制开发,挑战百日学习计划第50天(响应式网站开发)
  7. 未来计划-2023.3.30
  8. 常见的5个SQL面试问题
  9. Overall simulation report
  10. 线性回归,波斯顿房价的预测