Codeforces 1236D. Alice and the Doll】的更多相关文章

传送门 注意到每个位置只能右转一次,首先考虑如果图没有障碍那么显然要走螺旋形的 然后现在有障碍,容易发现对于某个位置如果既可以直走又可以右转,那么一定会选择直走 因为如果转了以后就一定没法走到原本直走可以走到的位置,所以必须直走 那么思路就很明确了,按这种走法然后看看走到底以后经过的总的格子数是不是等于没有障碍的格子数 但是暴力显然会 $T$ 飞 所以对每一行每一列维护一个 $vector$ ,每次走直接在 $vector$ 上二分出第一个走到的障碍,然后就可以了 实现的时候会注意到走过的位置会…
[CF1236D] Alice and the Doll Description \(N \times M\)网格,有 \(K\) 个格子里有障碍物.每次经过一个格子的时候只能直走或者右转一次.初态在 \((1,1)\) 格子向上.求是否存在一条路径经过所有无障碍格子恰好一次. Solution 最优的走法是遇到障碍或者边界就右转,否则直走. 走过一排格子相当于挪动边界线. 这两个结论仔细品味起来很挺有深度的. 然后暴力模拟就可以了,找障碍物的过程可以用 set 优化. 这题的坐标系好像有点奇怪…
题目:http://codeforces.com/problemset/problem/1236/D思路:机器人只能按照→↓←↑这个规律移动,所以在当前方向能够前进的最远处即为界限,到达最远处右转,并且下次在该方向无法再移动到更远的地方,因此按照→↓←↑模拟即可,每次移动更新界限 ,无法移动则结束(第一次无法移动可右转,n*m会爆int)          障碍用set存,每次二分寻找能到达最远的地方,并与界限比较 #include<bits/stdc++.h> using namespace…
http://codeforces.com/problemset/problem/346/A 观察了一下,猜测和他们的最大公因数有关,除以最大公因数前后结果是不会变的. 那么怎么证明一定是有n轮呢?我猜就是因为现在至少有几个是互质的,所以总是可以构造出1?具体怎么证明呢?还是看看别人的思路吧…… 首先最终停止的状态一定是一个等差数列,这个是毫无疑问的.设首项为d,那么肯定停止于d,2d,3d,...,n,那么很显然d就是他们的最大公因数啊……对哦?! #include<bits/stdc++.h…
题意:有一堆数,然后有两个人轮流从中取出两个数,这两个数的差的绝对值不在这个集合,然后把这个数放进这个集合,如果哪个人不能拿了,就是输了,问你谁赢. 析:当时连题意都没看好,以为拿出两个数,就不放回了,如果好好分析第三组样例,就不会看成这样了. 思路应该是这样的,既然是拿了再放差的绝对值放进去,那么最后肯定会形成一个等差数列的,想想对不对,可以写几个试试,那么然后除以最大公约数,就能形成一个1-最大数的 等差队列,最大数就是输入的最大数,因为两个正数作差,肯定比最大的小.那么答案就有了. 代码如…
Codeforces 题面传送门 & 洛谷题面传送门 期望好题. 首先拆方差: \[\begin{aligned} &E((x-E(x))^2)\\ =&E(x^2)-2E(x)E(E(x))+E(E(x)^2)\\ =&E(x^2)-E(x)^2 \end{aligned} \] 因此我们只需 \(E(x^2)\) 和 \(E(x)\) 即可求解出答案. 考虑 \(x\) 是什么东西.直接从连通块个数的角度下手异常棘手.不过注意到原图是一个仙人掌,因此假设点数.边数.环数…
题意 https://vjudge.net/problem/CodeForces-1236D 最近,爱丽丝得到了一个新玩偶.它甚至可以走路! 爱丽丝为玩偶建造了一个迷宫,并想对其进行测试.迷宫具有n行和m列.有k个障碍物,第i个障碍物位于单元格(xi,yi​)上,这意味着第xi​个行与第yi​列相交的单元格上存在一个禁止通过的障碍物. 然而,玩偶有着缺陷.在同一单元格(包括起始单元格)中,它最多只能笔直走或右转一次.它无法进入有障碍物的单元格或走出迷宫的界限之外. 现在,爱丽丝正在控制娃娃的动作…
传送门 首先可以注意到对于固定的起点 $S$ ,它最终能走到的终点一定是一段区间 这个用反证法容易证明,假设合法区间存在断点,这个点左右都可以作为终点 那么分成区间断点在起点左边和起点右边讨论一下即可,起点本身显然一定可以作为终点 然后现在只要考虑从每个起点出发能走到的最左和最右的位置即可算出答案 首先考虑往右(以下为了方便把第 $i$ 次询问说成第 $i$ 天) 设起点为 $x$ 那么我们可以一直往右走直到遇到某一天刚好询问原本要走的下一个位置,那么此时就要停一次 设连续走了 $y$ 天遇到这…
传送门 显然每种礼物是互相独立的,一个礼物的分配不会影响另一个礼物 对于某个礼物 $x$ , 对于每个盒子来说,要么选要么不选,那么可以看成长度为 $m$ 的二进制序列 这个序列第 $i$ 位的数就代表第 $i$ 个盒子里是否有这个礼物,那么总方案即为 $2^m-1$ ,减 $1$ 是因为全 $0$ 的序列是不合法的 然后根据乘法原理最终答案即为每个礼物的方案的乘积 :$(2^m-1)^n$ #include<iostream> #include<cstdio> #include&…
题意:给定一个n*m的网格,其中k格有障碍 周驿东从(1,1)出发面朝右,每次行动前他可以选择顺时针旋转90度或不旋转,然后向自己朝向的位置走1格 问他能否不重复不遗漏的走过所有非障碍格 n,m,k<=1e5 思路:第一次看到E的一血比D早…… 事实上就是在模拟朝右.下.左.上这样循环走,每次遇到障碍物就停下,这样一个过程 发现这个过程需要维护小于某个值的最大值和大于某个值的最小值,所以可以用set维护障碍物 参考了某红名大佬的写法,果然他们的暴力都是优雅的…… #include<bits/s…