Problem B. 即时战略 (rts.c/cpp/pas) 注意 Input file: rts.in Output file: rts.out Time Limit : 2 seconds Memory Limit: 512 megabytes 题面 \(\text{HLY}\)在玩一个即时战略\(\text{(Real Time Strategy)}\)游戏.与大多数同类游戏类似,这个游戏的地图是平面的,并且玩家都有一个基地. \(\text{HLY}\)的对手杰哥的基地是一个\(w \…
那23个路口 题面 故事的起源不加赘述,那23个路口. 单刀直入,我直接说题的意思. 蚊子和疯子在做一件事,就是他们要在茫茫的大街上找一个出发点,然后从出发点开始,经过上下左右23次拐弯,到达一个他们也不知道的地方. 老城的街道排列的十分有规律,于是疯子和蚊子把老城的街道排布画在了一张地图上.地图上每一个点代表一个地方,而这个地方有一定的憧憬值,疯子希望可以带蚊子走过的二十三个路口的憧憬值总和是所有方案中最大的. 现在我们读入一个矩阵,如果此点为0,则这个点为起点,如果此点为-1,则这个点为障碍…
今天写一个demo,要用到鼠标键盘控制三维视角,因此写了个脚本用于控制. 该脚本可以用于即时战略类游戏的视角,提供了缩进,拉伸,旋转.同时按住鼠标右键不放,移动鼠标可以实现第一人称视角的效果. using UnityEngine; using System.Collections; public class CameraController : MonoBehaviour { public float near = 20.0f; public float far = 100.0f; public…
说起即时战略游戏,不得不提的一个问题是如何把一个物体从一个位置移动到另一个位置,当然,我说的不是瞬移,而是一个移动的过程,那么在这个移动的过程中我们如何来规划路线呢,这就不得不提到寻路了. 我所了解到的寻路算法有很多,当然我还是向大家推荐A*算法,这个应该是目前在八个方向上效率最高的寻路算法了吧,在这里,我不准备详细的去介绍这个算法的原理,给大家一个链接,http://www.cnblogs.com/technology/archive/2011/05/26/2058842.html,这是我在网…
题目描述 小M在玩一个即时战略(Real Time Strategy)游戏.不同于大多数同类游戏,这个游戏的地图是树形的. 也就是说,地图可以用一个由 n个结点,n?1条边构成的连通图来表示.这些结点被编号为 1 ~ n. 每个结点有两种可能的状态:“已知的”或“未知的”.游戏开始时,只有 1号结点是已知的.在游戏的过程中,小M可以尝试探索更多的结点.具体来说,小M每次操作时需要选择一个已知的结点 x,和一个不同于 x 的任意结点 y(结点 y 可以是未知的). 然后游戏的自动寻路系统会给出 x…
题目链接: [WC2018]即时战略 题目大意:给一棵结构未知的树,初始时除1号点其他点都是黑色,1号点是白色,每次你可以询问一条起点为白色终点任意的路径,交互库会自动返回给你这条路径上与起点相邻的节点并且如果这个点为黑色则将它变为白色,要求在不多于给定次数的询问内使所有点变为白色. 大致思路为按一定顺序分别将n-1个点变为白点,为了防止被卡,需要对2~n的序列随机打乱再按打乱后的顺序逐个变白. 数据范围分为三种,分开讲解(假设当前要变白的点为x): 一.完全二叉树 这一部分比较简单,我们只需要…
[WC2018]即时战略(动态点分治,替罪羊树) 题面 UOJ 题解 其实这题我也不知道应该怎么确定他到底用了啥.只是想法很类似就写上了QwQ. 首先链的部分都告诉你要特殊处理那就没有办法只能特殊处理了QWQ. 首先听说有一种均摊\(log\)的\(LCT\)做法. 即每次随便\(explore\)一个点,如果这个点未被访问过,直接加入然后继续. 否则在\(LCT\)重链组成的\(Splay\)上跳. 这样子均摊复杂度是\(O(nlogn)\),均摊的询问次数也是\(O(nlogn)\). 然而…
说到网络同步,这真是一个网络游戏的重中之重,一个好的网络同步机制,可以让玩家的用户体验感飙升,至少,我玩过的魔兽争霸在网络同步方面做得非常好,即便是网络状况很不稳定,依然可以保证用户数据不会出现意想不到的问题. 在真正介绍同步这个大块头之前,我还要介绍一点,就是我们用什么样的网络协议,在我们面前,可用也是很广泛的协议无非是tcp和udp,这两个协议有什么区别我就不在此累述了,那么我就直接告诉大家,在游戏中数据包的传递工作尽可能的使用udp协议,为什么呢?因为快速简单,在一个需要高操作的游戏中,网…
「WC2018即时战略」 题目描述 小 M 在玩一个即时战略 (Real Time Strategy) 游戏.不同于大多数同类游戏,这个游戏的地图是树形的.也就是说,地图可以用一个由 \(n\) 个结点,\(n - 1\) 条边构成的连通图来表示.这些结点被编号为 \(1 \sim n\). 每个结点有两种可能的状态:"已知的"或"未知的".游戏开始时,只有 \(1\) 号结点是已知的. 在游戏的过程中,小 M 可以尝试探索更多的结点.具体来说,小 M 每次操作时需…
我们的可可西里 题面 转眼到了2008年的6月9日,盼望已久的高考结束了.我们踏上了向西的旅程(本来是想写西去之路,可是考虑不太妥当).可可西里,多么诱人的名词,充满了奇幻的色彩和自然的淳朴.从可可西里徒步走回家的决定是在1年半前定下的,而现在,终于可以实现那个钩过手指的预定.我们的可可西里... 在回家的路上,疯子和蚊子看到了许多可爱的藏羚羊,无意之中疯子和蚊子发现藏羚羊的居住地的分布也是有规律的,虽然疯子和蚊子早就听说藏羚羊是一种群体性很强又有超高IQ的动物,但是还是为它们的居住地分布规律感…
「WC2018」即时战略 考虑对于一条链:直接随便找点,然后不断问即可. 对于一个二叉树,树高logn,直接随便找点,然后不断问即可. 正解: 先随便找到一个点,问出到1的路径 然后找别的点,考虑问出来第一个从1过来的未知位置,就可以一口气问下去了. 怎么找? logn询问次数 法一: 点分治 有点类似:CF772E Verifying Kingdom 可以直接确定走向 暴力插入点,替罪羊重构 O(nlog^2n) 法二: LCT 直接在实链上不断二分,然后跳到下一个实链上 复杂度分析可以类比a…
loj2341「WC2018」即时战略(随机化,LCT/动态点分治) loj Luogu 题解时间 对于 $ datatype = 3 $ 的数据,explore操作次数只有 $ n+log n $ . 毫无疑问无论什么时候已经探索的区域都是一条链. 每当要探索出一个新点,不是在左侧就是在右侧. 最劣情况下调用次数为 $ 2n $ . 只要随机打乱探索顺序,额外浪费的次数类似于上升子序列长度,期望 $ logn $ ,可以解决. 而对于其余数据,依然随机打乱探索顺序, 每次对于目标点,要点在于找…
不怕噩梦 题面 蚊子最近经常做噩梦,然后就会被吓醒.这可不好.. 疯子一直在发愁,然后突然有一天,他发现蚊子其实就是害怕某些事. 如果那些事出现在她的梦里,就会害怕. 我们可以假定那个害怕的事其实是一个字符串.而她做的梦其实也是一个字符串. 她可以一个晚上一直做梦,所以梦这个字符串会很长,如果其中包含了她所害怕的事情,那么她这天晚上就会害怕. 当然一个害怕的事也可能在这天晚上被她梦到很多遍,当然每个晚上也可能有很多种害怕的事都被梦到. 每个害怕的事都有一定的权值. 而这天晚上如果梦到了某件事,那…
感觉初赛不过关,洛谷上找了一套没做过的来练习. 顺便写了详细的题解. 试题用时:1h 单项选择: 第 1 题 十进制数 114 的相反数的 8 位二进制补码是: A.10001110 B.10001101 C.01110010 D.01110011 题目好臭 \(114\) 二进制为 \(1110010\),其补码取反,符号位变 \(1\),最后 \(+1\) 即可. 答案:\(\color{green} A\) 第 2 题 以下哪个网站不是 Online Judge(在线程序判题系统)? On…
创建项目 双击Unity,选择New Project:我们将它命名为rts,悬着其他本地磁盘例如C:,选择3D然后点击Create Project: 然后我们通过File->Save Scene,保存当前的场景为“scene”(不需要“”) 摄像机 Unity会自动添加相机到工程中.如下图所示,我们在Hierarchy中选择摄像机,在Inspector分别修改Position和Rotation的值,让摄像机看向地面. 注意:我们还看不到任何东西,因为我们的场景还是空的. 灯光 Unity已经在我…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ349.html 题解 被cqz D没了.我D cly 关你啥事(逃 首先链的情况直接rand就好了. 期望次数 $O(n+\log n)$ . 然而我一开始写挂了. 开始扯淡 我用这个模数,就可以过原题数据: ('C'+'L'+'Y'+'A'+'K'+'I'+'O'+'I') 但是用以下两种都不行: ('G'+'L'+'Y'+'A'+'K'+'I'+'O'+'I') ('C'+'L'+'Y'+'A'+'…
这是一道交互题 题目大意 有一棵\(n\)个点的树.最开始\(1\)号点是白的,其他点是黑的. 每次你可以执行一个操作:\(explore(x,y)\).要求\(x\)是一个白点.该函数会返回从\(x\)到\(y\)的路径上第二个点的坐标并把该点染白. 要求你把所有点都染成白色. 设操作次数为\(t\). 对于\(30\%\)的数据:这棵树是一条链(不保证\(1\)在链的一端),\(n=300000,t=O(n+\log n)\) 对于另外\(70\%\)的数据:\(n=300000,t=O(n…
Description 有一棵n个点的结构未知的树,初始时只有1号点是已被访问的. 你可以调用交互库的询问函数explore(x,y),其中x是已访问的点,y是任意点. 它会返回x向y方向走第一步的点,如果该点未被访问,则将其标记为已访问. 你需要实现一个函数,它通过接口得到n和T,需要在T次explore操作内将所有的点标记(也就是说走完这棵树). 要求最严格的两档数据: n<=300000,T<=300020,且原树为一条链(1号点不一定是端点). n<=300000,T<=5…
交互题 一棵树,一开始只有 1 号点是已知的,其他的都是未知的,你可以调用函数 explore(x,y) ,其中 x 必须是已知的,函数会找到 x 到 y 路径上第二个点,并把它标成已知,求最小步数使整棵树都已知 对于 30% 的数据,是一条链,操作次数 $O(n+logn)$ 剩下的数据,操作次数 $O(nlogn)$ $n \leq 300000$ sol: 先吐槽 loj 的交互题评测机制 把 ac 时应该输出的东西输出,然后就 a 了 不 shing 话 链的情况想了半天,题解是 xjb…
传送门 头一次看着题解有一种咱不会\(c++\)的感觉-- 看题解吧-- //minamoto #include<bits/stdc++.h> #include "rts.h" #define R register #define get explore #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i) #define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i) #define go(…
题目:   代码~:感谢土蛋 #include <iostream> #include <cstring> #include <cmath> #include <cstdio> #include <algorithm> #include <queue> #include <vector> #include <map> #include <complex> #define lc k <<…
A 题面 对于给定的一个正整数n, 判断n是否能分成若干个正整数之和 (可以重复) , 其中每个正整数都能表示成两个质数乘积. 输入格式 第一行一个正整数 q,表示询问组数. 接下来 q 行,每行一个正整数 n,表示询问. 输出格式 q 行,每行一个正整数,为 0 或 1.0 表示不能,1 表示能. 样例 \(\texttt{input\#1}\) 5 1 4 5 21 25 \(\texttt{output\#1}\) 0 1 0 1 1 数据范围与提示 样例解释: 4 = 2 * 2 21…
Problem A. 最近公共祖先 (commonants.c/cpp/pas) 注意 Input file: commonants.in Output file: commonants.out Time Limit : 0.5 seconds Memory Limit: 512 megabytes 题面 最近公共祖先\(\text{(Lowest Common Ancestor,LCA)}\)是指在一个树中同时拥有给定的两个点作为后 代的最深的节点. 为了学习最近公共祖先,你得到了一个层数为\…
题目 交互题: 一开始所有点都是黑的,你需要把所有点变白: explore(u,v)会将u到v路径上的第二个点变白: 一开始只有1号点是白色的,你需要让所有点变白: 对于一条链次数限制\(O(n+log \ n)\),普通的树次数限制\(O(n \ log \ n)\) ; 题解 orz yww Part 1 白色区间一定是一条链,记录左右端点; 先假设新点在左边用左端点扩展,如果explore出重复的点,则说明在右边换右端点: 这样一直扩展,最坏\(O(2n)\),期望\(O(n+log \…
LOJ 思路 考虑最蠢的暴力:枚举2~n,从1拉一条到他们的链,需要查询\(n^2\)次,显然不能通过. 考虑优化:如果拉的第一个点已经被访问过了,那么类似二分的做法,一次往那个方向多跳几步. 多跳几步?那就动态点分治吧.每次最多跳\(\log n\)次就一定可以找到一个点使得它到你现在枚举的点的路径全都没有访问过,然后一次把这上面的点全都explore一边即可. 然而,树的形态你不知道,怎么动态点分治? 那就动态动态点分治啊2333 类似替罪羊树的思想,加点时直接连上去,每当某个节点\(u\)…
题目链接 题意 一开始已知一号点. 每次可以选定一个已知点和一个未知点,然后交互库会返回从已知点出发到达未知点路径上的第二个点. 要求在有限步之内知道每一个点. 次数要求: 链的情况要求 \(O(n)\) 其余是 \(O(nlogn)\) Sol 首先是链的情况,记录当前左右端点不断往后探索即可. 然后是树,初始想法肯定就是不断迭代,最坏情况是 \(O(n^2)\) 的. 我们的瓶颈在于如果树的深度比较大,我们迭代的时候来回走了很多个圈就不好处理. 那么我们很容易想到用点分树来优化我们迭代的过程…
题意:这是一道交互题.交互库中有一棵树.一开始只有1节点已知.需要在T次询问内使得n个节点都已知.一次询问explore(x,y),返回从x到y路径上第一个点,并将返回点标记为已知. 数据有区分. 标程: #include<cstdio> #include<time.h> #include<algorithm> #include "rts.h" using namespace std; ; ],fa[N],L[N],R[N],vis[N],E[],i…
[UOJ题面]http://uoj.ac/problem/349 一道非常好的与数据结构有关的交互题. 首先先看部分分做法, 一上来我们肯定得钦定一个 \(explore\) 的顺序,直接随机就好. 当 \(n\) 很小的时候就是直接从 1 号点一路 \(explore\) 过去就好了,这样次数是 \(O(n^2)\) 的. 由于完全二叉树树高是 log 的,所以它实际也能过第二个包. 然后来看一下链的情况,稍加思考我们可以得到这么一个做法:就是维护当前已经 \(explore\) 的点的连续区…
题目链接 WC出了点意外滚粗了,来补补题. \(O(n^2)\)的时间复杂度,\(O(nlogn)\)的询问次数应该还是比较好想的,每次要打通到x的路径,对当前已知的树不断的找重心并询问在重心的哪颗子树中走过去.注意到有加点的操作,用紫荆花之恋的那种做法可以做到\(O(nlog^2n)\),但我不会写...听wys讲课说可以用LCT,想了一下发现挺简单的就去用LCT写了这题.反正就是把1作为根,每次要打通到x的路径时,就可以从1开始,类似二分的过程在每棵splay中不断询问当前点再往其中一棵子树…
在Unite 2017的国内技术专场,Unity技术团队为参会者们带来了Unity引擎功能相关的技术分享.今天这篇文章,将由Unity技术支持工程师金晓宇为大家分享基于Animation Instancing的人群模拟技术,对于大型MMO游戏非常实用. 在实际开发中,可能经常会遇到类似需求:一个体育场中有大量的观众,或者有成百上千的僵尸在街道上游荡.对于这些类似的需求,如果采用传统的动画方式,CPU计算骨骼和蒙皮的压力会非常大.因为每一个角色都要有一个骨骼和蒙皮的计算过程,即使他们都播放的是同一…