I - Cloud Retainer's Game

传送门: I. Cloud Retainer's Game (codeforces.com)

题意:

在坐标轴上有2个边界:y=0和y=H。有n个质点(木板),m个宝物(硬币)。一个小球从(0,0)点开始移动方向为。

小球遇到木板或边界之后,y轴方向上的速度取反,即变成。

问删掉任意个质点之后,小球最多遇到多少个宝物。

附上题面下面的图片帮助理解:

解法

移动有两个方向:分别是方向和方向,表达式分别为 \((x+y)\%2H=m\)和\((2H-x+y)\%2H=m\)

也就是说,对于特征值m的路线,可以通过木板反弹在这两个表达式切换,或者删掉木板保持表达式。

令\(dp_i\)为特征值为i的线路中遇到的宝物的最大数量。

我们可以按照x的大小从大到小往起点方向dp。(因为起点是所有路线一定经过且唯一确定的,其他点不一定是经过的,所以\(dp_0\)一定是最大的,也即答案)

对于一个木板,我们可以算出经过这个木板的两个方向的线路的特征值 \((x+y)\%2H=m1\)和\((2H-x+y)\%2H=m2\)。因为可以删或不删从而在两个方向任意选择,所以\(dp_{m1},dp_{m2}\)都应该取\(max(dp_{m1},dp_{m2})\)。

对于一个宝物,我们可以算出经过这个宝物的两个方向的线路的特征值 \((x+y)\%2H=m1\)和\((2H-x+y)\%2H=m2\)。两个线路的贡献的加一即可。

代码实现:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. const int N = 1e6+10;
  5. signed main(){
  6. ios::sync_with_stdio(false);
  7. int T;cin>>T;
  8. while(T--){
  9. vector<array<int,3>>ve;
  10. map<int,int>ans;
  11. int H;cin>>H;
  12. int n;cin>>n;
  13. for(int i=1;i<=n;i++){
  14. int x,y;cin>>x>>y;
  15. ve.push_back({x,y,0});
  16. }
  17. int m;cin>>m;
  18. for(int i=1;i<=m;i++){
  19. int x,y;cin>>x>>y;
  20. ve.push_back({x,y,1});
  21. }
  22. sort(ve.begin(),ve.end(),[](array<int,3>x,array<int,3>y){
  23. return x[0]>y[0];
  24. });
  25. for(auto i:ve){
  26. int x=i[0],y=i[1];
  27. int a=(x+y)%(2*H),b=(2*H-y+x)%(2*H);
  28. if(i[2]){
  29. ans[a]++;
  30. ans[b]++;
  31. }
  32. else {
  33. ans[a]=ans[b]=max(ans[a],ans[b]);
  34. }
  35. }
  36. cout<<ans[0]<<"\n";
  37. }
  38. }

I - Cloud Retainer's Game的更多相关文章

  1. On cloud, be cloud native

    本来不想起一个英文名,但是想来想去都没能想出一个简洁地表述该意思的中文释义,所以就用了一个英文名称,望见谅. Cloud Native是一个刚刚由VMware所提出一年左右的名词.其表示在设计并实现一 ...

  2. 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(六)

    (六)在Website Cloud中添加site 1新建Website,并打开 使用前面创建的用户 newbee@waplab.com 登录租户Portal,新建一个website 新建完成后, 可以 ...

  3. 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(五)

    (五)注册Website Cloud 1 注册Website Cloud 添加Website Cloud   连接Website Cloud 注意, endpoint 是使用Management Se ...

  4. 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(四)

    (四)搭建Website Cloud环境 1安装CONTROLLER主机 在开始安装Web site Cloud之前,读者应该对该服务的拓扑结构有个大概了解. 如图: Controller是非常重要的 ...

  5. 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(二)

    前言 (二)建立虚拟网络环境,以及域控和DNS服务器   1搭建虚拟网络环境 在Azure上创建虚拟网络.本例选择的是东南亚数据中心.后面在创建虚机的时候,也选择这个数据中心. VNet Name: ...

  6. spring/spring boot/spring cloud开发总结

    背景        针对RPC远程调用,都在使用dubbo.dubbox等,我们也是如此.由于社区暂停维护.应对未来发展,我们准备尝试新技术(或许这时候也不算什么新技术了吧),选择使用了spring ...

  7. Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段

    在上一篇 "管理沙盒(定制化)小细节1" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...

  8. Oracle Sales Cloud:管理沙盒(定制化)小细节1——利用公式创建字段并显示在前端页面

    Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的CRM管理系统.由于 Oracle 销售云是基于 Oracle 云环境的,它与传统的管理系统相比,显著特点之一便 ...

  9. Oracle Sales Cloud:报告和分析(BIEE)小细节2——利用变量和过滤器传参(例如,根据提示展示不同部门的数据)

    在上一篇随笔中,我们建立了部门和子部门的双提示,并将部门和子部门做了关联.那么,本篇随笔我们重点介绍利用建好的双提示进行传参. 在操作之前,我们来看一个报告和分析的具体需求: [1] 两个有关联的提示 ...

  10. Oracle Sales Cloud:报告和分析(BIEE)小细节1——创建双提示并建立关联(例如,部门和子部门提示)

    Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的客户商机管理系统,通过提供丰富的功能来帮助提高销售效率,更好地去了解客户,发现和追踪商机,为最终的销售成交 (d ...

随机推荐

  1. vue v-for 使用

    html <div> <el-button @click="addListItem" type="primary" style="p ...

  2. 关于echart折线图只有2个点时的平滑曲线问题

    问题描述: 折线图,设置平滑曲线,多个点时没有问题, 可当只有两个点(数据)的时候,这时光靠 smooth: true  就不管用了. 解决方法: 还另需设置   smoothMonotone 单调性 ...

  3. Web Dynpro for ABAP(16):WDA Analysis Tools

    3.21 Quality Assurance and Supportability WDA程序效能验证工具. Tests工具: eCATT and Web Dynpro ABAP Debugging工 ...

  4. MySQL8.0的下载、安装、配置

    转1: MySQL8.0的下载.安装.配置 MySQL8安装教程(下载.安装.连接.卸载) Navicat Premium 15激活(含注册机)

  5. 什么是压测,为什么要进行压力测试?Jmeter工具的使用

    1.背景介绍 什么是压测? 压力测试是通过不断向被测系统施加"压力",测试系统在压力情况下的性能表现,考察当前软硬件环境下系统所能承受的最大负荷并帮助找出系统瓶颈所在,也就是我们可 ...

  6. CSS中z-index的属性与使用

    z-index 属性指定一个元素的堆叠顺序. 拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面. Z-index 仅能在定位元素上奏效,z-index 进行定位元素(position:abso ...

  7. HDFS Shell 操作

    HDFS Shell 操作 HDFS Shell 命令行格式 格式一:hadoop fs –命令名 参数 格式二:hdfs dfs –命令名 参数 HDFS 常用命令及参数 ls:查看 hdfs 中的 ...

  8. npm start ERROR

    npm start 遇到问题 Attempting to bind to HOST environment variable: x86_64-apple-darwin13.4.0 If this wa ...

  9. if __name__ == '__main__':中的语句无法执行

    在pycarm中我们用了pytest或unittest框架写测试用例,我们如果我们在最后加上if name == 'main':,如以下代码所示.最后我们右键点击运行的时候是不会执行**if name ...

  10. Windows开机自动运行.bat文件

    方法/步骤:一:打开我的电脑, 在地址栏输入:"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup" 二,把自 ...