Codeforces 652F Ants on a Circle】的更多相关文章

题目连接:652F - Ants on a Circle 题目大意:\(n\)个蚂蚁在一个大小为\(m\)的圆上,每个蚂蚁有他的初始位置及初始面向,每个单位时间蚂蚁会朝着当前面向移动一个单位长度,在遇到其它蚂蚁时会立刻掉头.求经过\(t\)个单位时间后每一个蚂蚁的所在位置 题解:首先可以发现,最终答案其实是在不考虑碰撞下得出答案的一个排列,而且蚂蚁们的相对位置是不会改变的.所以如果求出了其中任意一个蚂蚁的位置,就能求出最终的答案. 为了方便起见,先默认所有蚂蚁的位置是按升序排的,且第一个蚂蚁的位…
Ants on a Circle 感觉这个思路好巧妙啊. 我们能发现不管怎么碰撞,初始态和最终态蚂蚁间的相对顺序都是一样的, 并且所占的格子也是一样的, 那么我们就只需要 找到其中一个蚂蚁的最终位置就能确定所有蚂蚁的位置了, 我们考虑找初始为止离0最近的那个蚂蚁的最终位置,我们能发现 蚂蚁从m-1->0  rk++, 蚂蚁从0->m-1 rk--, 在取模意义下rk就是那个蚂蚁的最终位置. #include<bits/stdc++.h> #define LL long long #…
题目传送门 题解: 先观察蚂蚁相撞, 可以发现, 如果我们将相撞的2个蚂蚁互换位置的话,蚂蚁相当于没有碰撞体积,直接穿过去了.所以我们可以直接计算出最终哪些位置上会有蚂蚁. 接下来就需要知道蚂蚁们的最终是走到哪个位置上. 需要先明白的是, 蚂蚁的相对位置是不会发生变化的,他的左边和右边的蚂蚁是不会发生改变的. 我们通过记录顺时针第一只蚂蚁是什么编号. 假设X是第一只蚂蚁的编号. 如果有一只蚂蚁从 m-1 的位置走到 0 的位置,那么X会变成 X - 1. 如果有一只蚂蚁从 0 的位置走到 m-1…
atCoder Ants on a Circle(又是蚂蚁问题...) 传送门 题意:一个圈,蚂蚁在上面以相同的速度和不同的方向走,问t秒后它们各自的位置. 解法:和经典的蚂蚁问题一致,把相撞的情况看做是穿过,我们不需要关心穿过的蚂蚁去哪儿了,它们的位置是相对不变的.然而...这里的路线是一个圈,势必会出现原本排在第一的蚂蚁跑到了尾部,又或是排在尾部的蚂蚁跑到了第一,也就是说位置是会变得.但是我们只需要将首部的蚂蚁移动<0看做是这只蚂蚁被顶了上去,某只蚂蚁移动>=l看做试将一系列蚂蚁顶了回去.…
题目链接 给一棵有根树, 每个叶子节点上有一只蚂蚁. 在0时刻蚂蚁开始向上爬, 同一时刻, 除了根节点以外, 一个节点上面不能有2个蚂蚁. 问所有的蚂蚁都爬到根节点需要的最短时间. 因为除了根节点, 一个节点上面只能有一个蚂蚁, 所以我们将根节点去掉, 于是就有了一个森林. 时间就是所有子树里面花费时间最多的那棵树的时间. 对于每棵子树, 我们将所有的节点标一个深度, 然后将深度排序. 可以知道 dp[i] = max(dp[i-1]+1, d[i]), d是深度, 这样就可以求得最终答案. #…
考虑到蚂蚁们的相对位置不会变化,而且,如果把“相遇后掉头”看作是“相遇后交换编号”的话,也可以得出来最后都有哪些位置有蚂蚁 然后,只要确定哪个位置是“1”就可以了 然后搞一个指针p代表原来第一个位置的蚂蚁现在的位置(相对于0来说的),每当有蚂蚁穿过0位置,p就根据穿过的方向加加减减就可以了 #include<bits/stdc++.h> #include<tr1/unordered_map> #define CLR(a,x) memset(a,x,sizeof(a)) #defin…
题目大意 一个长度为\(lm\)的环上有\(n\)只蚂蚁,告诉你每只蚂蚁的位置和朝向,每只蚂蚁会向前爬,速度为\(1m/s\),两只蚂蚁相遇后都会掉头,问你\(t\)秒后每只蚂蚁的位置. \(n\leq 100000\) 题解 ypl大神把这个东西叫做弹性碰撞.有两个定理: ypl定理1:如果忽略个体之间的差异, 那么每个物体的运动可以看作是独立的. ypl定理2:如果不忽略个体之间的差异, 那么物体之间的相对顺序不会发生改变. 如果这不是一个环,而是一条直线,那就很简单了.我们可以把最终位置排…
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! 题目链接:AGC013C 正解:思维题 解题报告: 考虑这类蚂蚁有关的问题,都可以看作是在相遇的时候穿透而过的,但是同时我们发现,因为碰撞之后就会回头,所以相对位置不会改变,那么我可以得到一个最终的位置集合(直接算就好了,然后排个序). 我们就拿$1$号蚂…
题目链接 AtCoder:https://agc013.contest.atcoder.jp/tasks/agc013_c 洛谷:https://www.luogu.org/problemnew/show/AT2369 Solution 首先可以注意到他们的相对位置是不变的. 然后两只蚂蚁相遇可以看作是他们穿过了彼此然后交换编号. 那么我们就可以得到最后的位置了,只需要确定编号就好了. 注意到如果有一只蚂蚁穿过了\(l-1\sim 0\)之间,所有编号都会左移(右移)一格. 那么我们只需要处理出…
题目传送门:https://agc013.contest.atcoder.jp/tasks/agc013_c 题目翻译 给你一个周长为\(L\)的圆,有\(N\)只蚂蚁在圆上爬,速度为一单位距离每秒.有的蚂蚁是逆时针的,有的蚂蚁是顺时针的,蚂蚁互相碰面会转向,问你\(T\)秒后每只蚂蚁分别在什么地方.\(L,T\leqslant 10^9,N\leqslant 10^5\) 题解 碰面转向相当于不转向交换编号,所以我们可以求出最后每只蚂蚁会在哪个地方.然后只需要关注第一只蚂蚁最后的\(pos\)…
妙妙技巧题 题目描述 题目大意 一个圆环上有n只蚂蚁,它们会按照顺时针或者逆时针行走.如果有蚂蚁相遇它们就会掉头(不一定在整数时间掉转).问最后每只蚂蚁的位置. 题目分析 以前在luogu上做过一道类似的掉头问题,于是考试时候就很大意地把它压在最后做了…… 我们考虑一下,这n只蚂蚁的相对位置其实是不会改变的,并且我们可以算出最终所有蚂蚁的位置. 那应该如何计算第一只蚂蚁最后的顺序呢? 想象在n-1到0之间有一只哨兵蚂蚁,它是不会移动的.当有蚂蚁从左边或右边穿过它的时候,我们的一号蚂蚁相当于次序+…
题目链接 题意: 有n仅仅蚂蚁和m次询问 n仅仅蚂蚁初始所有位于起点(0,0)处.每4仅仅蚂蚁在同一格就会以该格为中心向上下左右四个方向爬一格 一仅仅向上,一仅仅向下,一仅仅向左.一仅仅向右 假设每一个格子内的蚂蚁数量 < 4,那么蚂蚁就会停止运动 问你当全部的蚂蚁都停止运动后,给你随意的(x, y),输出该格子内的蚂蚁数量 思路: 模拟+暴力 由于询问x,y会有负的,所以最好还是设起始坐标为(N,N),由于起始位置的蚂蚁最多也就30000仅仅.所以N根本不是必需开到1e9那么大,事实上65就能…
题意 有n只蚂蚁在长度为m个格子的环上,环上的格子以逆时针编号,每只蚂蚁每秒往它面向的方向移动一格.如果有两只蚂蚁相撞则相互调换方向,问t秒后每只蚂蚁的位置. 题解 首先通过观察可以发现 蚂蚁相撞产生的轨迹可以看成两只蚂蚁穿过对方 由于相撞后只会互相调换方向,每只蚂蚁的相对编号不会发生变化,即每只蚂蚁的"邻居"不会发生变化 也就是说: 我可以通过计算每只蚂蚁毫无阻碍产生的轨迹知道t秒后哪些位置上有蚂蚁 又由于每只蚂蚁的相对编号不变,我只要知道某只蚂蚁t秒后的位置就可以推算出剩下的所有蚂…
这题也太新颖了吧.. 交互博弈 以前一直以为交互只能出二分 题意:长度为n的环形灯 玩家有两种操作 结束游戏 或者选择k个灯点亮 每次这个k是玩家自己选的 玩家操作后让电脑操作 电脑选择一个最优的点x 然后关掉从x开始的连续k个灯 玩家想要点亮更多的灯 电脑则相反 让你来操作 如果达到了理论上最多灯的状态就算ac了 题解:模拟一下操作就找到规律了.. 如果玩家上一次操作点亮了k个灯 如果当前连续亮灯的最长序列为x <= k 那么电脑操作了之后 至少会多点亮一个灯 就这样一直贪心下去.. 所以我们…
A:Gabriel and Caterpillar 题意:蜗牛爬树问题:值得一提的是在第n天如果恰好在天黑时爬到END,则恰好整除,不用再+1: day = (End - Begin - day0)/(12*(up-down))+1; #include <iostream> #include <algorithm> #include <stdlib.h> #include <time.h> #include <cmath> #include &l…
这场打得蛮菜的,很晚才出BC,还一堆罚时…… A - Sorted Arrays 题目大意:将给定数列划分成单调不增或单调不减的区间,求最少区间数. 贪心即可. #include<cstdio> #include<algorithm> #define MN 1000001 using namespace std; int read_p,read_ca; inline int read(){ read_p=;read_ca=getchar(); ') read_ca=getchar(…
吃枣药丸...先开个坑... day -1 上午周测...大翻车... 下午被查水表说明天必须啥啥啥...(当时我差点笑出声) 晚上领到笔记本一枚和一袋耗材(袜子) 然而班会开太晚回去没来得及收拾就晚休了...滑稽现场... day 0 一大早先把刚拿到的东西装箱子里... 下楼的时候被本校群众给堵住了(QAQ) 于是我就成了最晚到的一个(捂脸) 家长送还是很滋磁的啊...和 $ltr \& wzz$ 一个车OwO 某 $wxh$ 和两个教练一个车(感觉可能在谈人生?) 车上把之前在 51Nod…
AGC013 A - Sorted Arrays 直接分就行 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define space putchar(' ') #define enter putchar('\n') #define eps 1e-10 #define MAX…
A#G/C013 A Sorted Arrays 不会/kk B Hamiltonish Path 我是傻逼 如果一条路径不合法,那么把不合法的端点向没出现过的相邻点连过去救星了 C Ants on a Circle 我是傻逼 显然最后的位置可以直接求出,环上相对位置不变. 然后要确定一个位置的答案 假设每个蚂蚁手上有一只鸡,鸡的数字递增相遇就交换手上的鸡,不改变方向 那么蚂蚁1如果向右走,由于相对位置不变每交换一次鸡的数字会增加1 交换鸡的次数就是蚂蚁1碰到其他蚂蚁的次数,可以直接算出来 D…
比赛链接:https://codeforces.com/contest/1408 A. Circle Coloring 题意 给出三个长为 $n$ 的序列 $a,b,c$,对于每个 $i$,$a_i \ne b_i,\ a_i \ne c_i,\ b_i \ne c_i$ . 构造序列 $p$,使得: $p_i \in \{a_i, b_i, c_i\}$ $p_i \neq p_{(i + 1 \mod n)}$ 题解 即每个数不与前后两个数相同,因为三个序列同一位置两两不同,所以对于每个位置…
E. Ants in Leaves 题目连接: http://www.codeforces.com/contest/622/problem/E Description Tree is a connected graph without cycles. A leaf of a tree is any vertex connected with exactly one other vertex. You are given a tree with n vertices and a root in t…
B. Ants Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/317/problem/B Description It has been noted that if some ants are put in the junctions of the graphene integer lattice then they will act in the following fashion: eve…
链接:https://codeforces.com/contest/1169/problem/A 题意: The circle line of the Roflanpolis subway has nn stations. There are two parallel routes in the subway. The first one visits stations in order 1→2→…→n→1→2→…1→2→…→n→1→2→… (so the next stop after sta…
题目链接:http://www.codeforces.com/contest/622/problem/E 题意是给你一棵树,1为根,每个叶子节点有一个蚂蚁,移动到一个邻接节点时间耗费为1,一个节点上不能同时有1个以上的蚂蚁数目(除了根节点外),让你求最后一个蚂蚁到达根节点的最少的时间. 可以先dfs预处理每个叶子节点的深度dep[i],然后把1节点邻接的节点当作一个子根,求这个子根所在的子树上蚂蚁到这个子根的最大的时间,除了子树上蚂蚁最早到达的时间为ans[0] ,其余子树上的蚂蚁为max(an…
题目链接: E. Ants in Leaves time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Tree is a connected graph without cycles. A leaf of a tree is any vertex connected with exactly one other vertex. Yo…
F. Maximum Balanced Circle 题目链接 题意 给出\(n\)个数,现在要从中选出最多的数\(b_i,b_{i+1},\cdots,b_k\),将这些数连成一个环,要求两两相邻的数相差不超过1. 最后要求输出具体的方案. 题解 一开始想了一个dp,似乎也可以做 这个题也不用这么复杂,因为相差绝对值不超过1,直接统计一下每个数的个数就行了. 因为如果将最后的环给展开,以每个数的值为高,呈现出来的图形一定是先上升后下降的.那么中间部分的数的个数一定大于等于2,最左边和最右边的两…
题目链接:http://codeforces.com/problemset/problem/1189/B AC代码: #include<bits/stdc++.h> using namespace std; ; int a[maxn]; int b[maxn]; int c[maxn]; bool check(int i) { ]+a[i+]) return true; else return false; } int main() { int n; cin >> n; ;i &l…
题目链接:codeforces.com/contest/1169/problem/A 题意:有俩个地铁,一个从 1 → 2 → …→ n → 1→ 2 →…, 一个 从 n → n-1 →…→ 1 → n → n-1→ ….地铁同时开并且地铁经过一个站的时间都相同,俩个人一个坐前面那俩,一个坐后面那俩,给你他们的起点站和终点站,问他们在这过程中有没有可能同时在一个站,可能就输出YES,否则输出NO. 思路:一个 i 从 起始 a 开始加 ,一个 j 从 b 开始减,如果 i 加到 n+1 就让它…
D. Nauuo and Circle •参考资料 [1]:https://www.cnblogs.com/wyxdrqc/p/10990378.html •题意 给出你一个包含 n 个点的树,这 n 个点编号为 1~n: 给出一个圆,圆上放置 n 个位置,第 i 个位置对应树中的某个节点,并且不重复: 求在圆上还原这棵树后,使得边不相交的总方案数: •题解 ①为何每一颗子树一定是连续的一段圆弧? 假设不是连续的圆弧,如图所示: 为了使 x 接到树上,必然会有 x-y 或 x-z 相连的边,这样…
Circle of Students time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output There are nn students standing in a circle in some order. The index of the ii-th student is pipi. It is guaranteed that a…