CF538G

题目大意

你有一个长度为\(l\)的指令序列,每个指令为向上,向下,向左,向右中的一种。

机器人会循环执行该序列,即,执行完第\(l\)个指令后,就会重新开始执行第一个指令。

现在,给你\(n\)个信息,每个信息为:在第\(t\)秒时,机器人所处的位置\((x,y)\)

请求出一个合法的序列,如无解,则输出\(No\)

\(n\le2*10^5\ l\le2*10^6\)

解题历程

一开始,真的很自闭,二维的太难考虑了。

去翻题解,题解第一行说,这样的位移可以等价于每秒独立地在\(x+y\)和\(x-y\)方向上\(+1\)或\(-1\)

豁然开朗。

于是,现在只需要考虑一维的情况了。

我们发现,它循环多次,又剩余一点。

我们就考虑这多出的一点,令:

\(t=p*l+q\)

若我们假设整个序列在当前方向上的位移为\(x\),\(q\)内的位移为\(f(q,x)\),\(t\)内的位移为\(sum\)

则\(f(q,x)=sum-px\)

我们把所有的信息按\(q\)排序,那么,需满足以下限制
\[
|f(q_i,x)-f(q_{i+1},x)|\le q_{i+1}-q_i
\]
然后,解方程,找出值域内的任意\(x\),再带回去算即可

注:可能需要考虑以下奇偶性的问题

代码

由于我是口胡选手,所以就先咕着。

CF538G (套路题)的更多相关文章

  1. 【LOJ6062】「2017 山东一轮集训 Day2」Pair(线段树套路题)

    点此看题面 大致题意: 给出一个长度为\(n\)的数列\(a\)和一个长度为\(m\)的数列\(b\),求\(a\)有多少个长度为\(m\)的子串与\(b\)匹配.数列匹配指存在一种方案使两个数列中的 ...

  2. hdu 2837 Calculation 指数循环节套路题

    Calculation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. HDU - 3652 数位DP 套路题

    题意:统计能被13整除和含有13的数的个数 解法没法好说的..学了前面两道直接啪出来了 PS.HDU深夜日常维护,没法交题,拿网上的代码随便对拍一下,输出一致 #include<bits/std ...

  4. HDU - 4825 01字典树套路题

    /*H E A D*/ struct Trie{ int son[maxn<<2][2]; int b[67],tot; void init(){ // memset(son,0,size ...

  5. PAT 甲级真题题解(1-62)

    准备每天刷两题PAT真题.(一句话题解) 1001 A+B Format  模拟输出,注意格式 #include <cstdio> #include <cstring> #in ...

  6. USACO比赛题泛刷

    随时可能弃坑. 因为不知道最近要刷啥所以就决定刷下usaco. 优先级排在学习新算法和打比赛之后. 仅有一句话题解.难一点的可能有代码. 优先级是Gold>Silver.Platinum刷不动. ...

  7. cf1143E 倍增好题!

    一开始感觉用莫队可以搞一下,但是看了题解才发现这题其实是倍增套路题 把排列转换成nxt数组,然后倍增dp[i][j]表示第i个数后面有(1<<j)个数的最靠左的区间 然后从右往左扫一次即可 ...

  8. [JZOJ5987] 仙人掌毒题

    Description Solution 套路题... 全他娘的是套路... 首先如何处理仙人掌,可以在线拿 \(lct\) 维护,或者离线之后树剖.(\(lct\) 维护太毒了写不来,就离线树剖了又 ...

  9. NOIp2018停课刷题记录

    Preface 老叶说了高中停课但是初中不停的消息后我就为争取民主献出一份力量 其实就是和老师申请了下让我们HW的三个人听课结果真停了 那么还是珍惜这次机会好好提升下自己吧不然就\(AFO\)了 Li ...

随机推荐

  1. USACO 2003 Fall Orange Cow Exhibition /// 负数01背包 oj22829

    题目大意: 输入n 接下来n行 每行输入 a b 输出n行中 a+b总和最大的同时满足 所有a总和>=0所有b总和>=0的值 负数的01背包应该反过来 w[i]为正数时 需要从大往小推 即 ...

  2. selenium基础(下拉菜单操作)

    selenium基础(下拉菜单操作) 非select/option元素: 1.触发下拉列表出现 2.等待下拉列表中的元素出现,然后进行选择元素即可. select/option元素: 下拉框操作-Se ...

  3. 把类完善了一下,播放器也完善了一下,纯MFC与WinMM的产物

  4. springcloud Eureka Finchley.RELEASE 版本

    创建一个父项目cloud-demo pom.xml <?xml version="1.0" encoding="UTF-8"?> <proje ...

  5. Leetcode931. Minimum Falling Path Sum下降路径最小和

    给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和. 下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素.在下一行选择的元素和当前行所选元素最多相隔一列. 示例: 输入:[ ...

  6. 进程监控驱动 PsSetCreateProcessNotifyRoutine

    函数原型: NTSTATUS PsSetCreateProcessNotifyRoutine( _In_ PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine, _ ...

  7. leetcode-92-反转链表②

    题目描述: 方法一: class Solution: def reverseBetween(self, head: ListNode, m: int, n: int) -> ListNode: ...

  8. 廖雪峰Java15JDBC编程-3JDBC接口-2JDBC查询

    我们可以使用JDBC查询来执行select语句. 1. Statement try(Connection conn = DriverManager.getConnection(JDBC_URL, JD ...

  9. input判断输入值是否合法

    1.判断input输入的值是否合法有很多办法,我这里使用的是在onchange时进行判断,代码如下:[所有主要浏览器都支持] <input type="text" name= ...

  10. 容器安全与EDR的异同

    以Docker为代表的容器技术,直接运行于宿主机操作系统内核,因此对于容器安全,很多人会有着这样的疑问:EDR(Endpoint Detection and Response)等主机安全方案,能否直接 ...