ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【NOIP2020】移球游戏

2021-06-12 19:34:31  阅读:189  来源: 互联网

标签:游戏 move mid 移球 log NOIP2020 放入 cu 数字


  • 假设当前每一列的数字都属于 \([l,r]\),把属于 \([l,mid]\) 的数字视为 \(0\), \([mid + 1,r]\) 视为 \(1\)。

    那么把属于 \(0\) 和 \(1\) 的数字分开,保证每一列全为 \(0\) 或 \(1\),然后递归求解子问题。

  • 任意两列 \(u,v\) 至少有一种数字次数不少于 \(m\),不妨设为 \(0\)。

    可以把 \(0\) 填满 \(u\),剩下的放到 \(v\),然后就不考虑 \(u\),从前往后扫一遍。

  • 具体的设 \(u,v\) 分别有 \(cu, cv\) 个 \(0\)。

    将把 \(x\) 的顶部移到 \(y\) 的顶部,移到 \(k\) 次记为 \(move(x,y,k)\)。

    \(move(v,n+1,cu)\)

    然后依次把 \(u\) 中数字为 \(0\) 的放入 \(v\),否则放入 \(n + 1\)。

    \(move(v,u,cu)\),\(move(n + 1,u,m - cu)\),\(move(v,n+1,m-cu)\),\(move(u,v,m-cu)\)。

    现在 \(u\) 只有 \(0\),\(v\) 只有 \(1\),只需要把 \(n + 1\) 的数字依次放入 \(u,v\) 即可。

  • 一共递归 \(\log n\) 次,每一层至多操作 \(n\) 次,每次需要 \(O(m)\) 的次数。

    所以需要 \(O(nm\log n)\) 次操作。

标签:游戏,move,mid,移球,log,NOIP2020,放入,cu,数字
来源: https://www.cnblogs.com/iqx37f/p/14878807.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有