【WC2018】即时战略
动态淀粉质即可
#include "rts.h" #include<algorithm> #include<unordered_map> #include<cstdlib> #include<ctime> #include<map> const int maxn = 300300; int per[maxn],vis[maxn]; typedef long long ll; std::map<int,int> ans[maxn]; int N; inline int get(int x,int y){return explore(x,y); } namespace list{const int LEFT=1,RIGHT=0;inline void solve(int to,int&l,int&r,int type=LEFT){if(l==to||r==to)return ;if(type == LEFT){int p=get(l,to);if(vis[p])solve(to,l,r,RIGHT);else vis[p]=1,solve(to,l=p,r,type);}else{int p=get(r,to);vis[p]=1,solve(to,l,r=p,type);}} } namespace wwj{int n;const double alpha=0.6;struct sol_tree{int size,rt;std::map<int,sol_tree*> son;inline sol_tree(int p){size=1,rt=p;}inline ~ sol_tree(){son.clear();}};struct T{int to,nxt;}way[maxn<<1];int h[maxn],num;inline void adde(int x,int y){way[++num]={y,h[x]},h[x]=num;way[++num]={x,h[y]},h[y]=num;}inline void up(int&x,int y){if(x<y)x=y;}sol_tree ** rebd;int vis[maxn];namespace dfz{int vis[maxn],size[maxn];inline void init(){for(int i=1;i<=n;++i)vis[i]=1;}inline void getsz(int x){vis[x]=size[x]=1;for(int i=h[x];i;i=way[i].nxt)if(!vis[way[i].to])getsz(way[i].to),size[x]+=size[way[i].to];vis[x]=0;}int rt,v;inline void getrt(int x,int al){vis[x]=1;int ms=0;for(int i=h[x];i;i=way[i].nxt)if(!vis[way[i].to])getrt(way[i].to,al),up(ms,size[way[i].to]);if(std::max(al-size[x],ms)<v)v=std::max(al-size[x],ms),rt=x;vis[x]=0;}inline int getroot(int x){getsz(x),v=1e9,getrt(x,size[x]);return rt;}inline sol_tree* sol(int x){x=getroot(x),vis[x]=1;sol_tree * ret = new sol_tree(x);for(int i=h[x];i;i=way[i].nxt)if(!vis[way[i].to]){sol_tree * tmp=ret->son[way[i].to]=sol(way[i].to);ret->size+=tmp->size;}return ret;}inline void dfscls(sol_tree * rt){vis[rt->rt] = 0;for(std::pair<int,sol_tree*>i:rt->son)dfscls(i.second);delete rt;}}int cnt,sumsz;inline void rebuild(sol_tree ** rebd){++cnt;sol_tree* & rt = * rebd;int R = rt -> rt;sumsz+=rt->size;dfz::dfscls(rt);rt=dfz::sol(R);}inline int ins(sol_tree*&rt,int to){int p = get(rt -> rt,to);if(!vis[p]){sol_tree*&tmp=rt -> son[p] = new sol_tree(p);adde(rt -> rt,p),vis[p]=1;int res=0;if(p!=to)rt->size+=res=ins(tmp,to);if(rt -> size * alpha + 1 < tmp -> size)rebd =&rt;return res+1;}else{sol_tree*&tmp=rt->son[p];int res=0;rt->size+=res=ins(tmp,to);if(rt -> size * alpha + 1 < tmp -> size)rebd =&rt;return res;}}inline void solve(){srand(time(0));for(int i=1;i<=n;++i)per[i]=i;for(int i=1;i<=2;++i)std::random_shuffle(per+1,per+n+1);dfz::init();vis[1]=1;sol_tree * rt = new sol_tree(1);int cnt=n-1;while(cnt){int i=rand()%n+1;if(!vis[per[i]]){rebd=0;cnt-=ins(rt,per[i]);if(rebd)rebuild(rebd);}}} } void play(int n, int T, int dataType){N=wwj::n=n;if(dataType == 3){srand(time(0));for(int i=1;i<=n;++i)per[i]=i;for(int i=1;i<=10;++i)std::random_shuffle(per+1,per+n+1);vis[1]=1;for(int i=1,l=1,r=1;i<=n;++i)if(!vis[per[i]])list::solve(per[i],l,r);}else{wwj::solve();} }
转载于:https://www.cnblogs.com/skip1978/p/10342923.html
【WC2018】即时战略相关推荐
- [WC2018]即时战略——动态点分治(替罪羊式点分树)
题目链接: [WC2018]即时战略 题目大意:给一棵结构未知的树,初始时除1号点其他点都是黑色,1号点是白色,每次你可以询问一条起点为白色终点任意的路径,交互库会自动返回给你这条路径上与起点相邻的节 ...
- 「WC2018」即时战略
「WC2018」即时战略 考虑对于一条链:直接随便找点,然后不断问即可. 对于一个二叉树,树高logn,直接随便找点,然后不断问即可. 正解: 先随便找到一个点,问出到1的路径 然后找别的点,考虑问出 ...
- Unity实战 RTS3D即时战略游戏开发(三)
大家好,我是Zander,我们接着来开发Rts3D即时战略游戏开发.上一章我们为场景添加了Manager,以及玩家初始化信息. 下面我们来完成以下功能:导航网格的设置.摄像机的操控.以及制作单位预设. ...
- D3D游戏编程系列(二):自己动手编写即时战略游戏之地图编辑器的制作
说起即时战略游戏,我第一时间想起魔兽争霸,这个不知道陪伴我多少个日日夜夜,让我哭让我笑的游戏,让我想起了sky,moon,grubby等人牵动心弦的战斗历程,让我想起了当年日日守在电脑前专注的欣赏着w ...
- rts游戏服务器源码,unity即时战略游戏源码Real-time strategy (RTS) game kit
unity即时战略游戏源码Real-time strategy (RTS) game kit (Modern Tactics) 1.2.1 Requires Unity 4.5.2 or hig ...
- rts游戏服务器源码,unity即时战略游戏引擎RTS Engine 1.2.0 源码
描述 unity即时战略游戏引擎RTS Engine 1.2.0 源码 Requires Unity 5.6.1 or higher. The Unity RTS Engine provides a ...
- 要塞十字军东征HD for Mac(即时战略游戏)
要塞十字军东征HD for Mac以中世界十字军东征为背景,十字军东征是人类历史上规模最大的宗教战争,游戏整体非常有趣,要塞十字军东征 Mac版是一个由欧洲历史中最著名的十字军东征为历史事件所设计的游 ...
- 【转】网络即时战略游戏软件开发 结构体系分析
文档下载地址:http://download.csdn.net/detail/wanggan768q/4388056 网络即时战略游戏软件开发 结构体系分析 前言 本人对网络游戏的技术问题一直比较 ...
- 网络即时战略游戏结构体系分析
前言 本人对网络游戏的技术问题一直比较感兴趣,我认为网络游戏的开发在不远的将来是一个非常庞大的产业.这段时间有空,特地玩了几天网络游戏"破碎银行系",并分析了一下其中体系结构,有些 ...
- 网络即时战略游戏软件开发 结构体系分析
文档下载地址:http://download.csdn.net/detail/wanggan768q/4388056 网络即时战略游戏软件开发 结构体系分析 前言 本人对网络游戏的技术问题一直比较 ...
最新文章
- Linux下安装PCRE
- oracle10g库连接报错
- python中8大排序(原理+代码)
- Vue+Spring boot前后端响应流程总结
- 如何在本地搭建一个Android应用crashing跟踪系统-ACRA
- js实现打开本地文件或文件夹
- 微课系列(四):Python中map对象的几种用法和注意事项
- LCA树两个节点最低公共祖先
- CentOS 7下载及安装教程
- 数据库中的8种常见约束定义
- Qt实现类似QQ好友列表
- pandas之透视表
- 苹果手机文件夹中服务器连接在哪,如何访问苹果手机上的共享文件夹?
- 部署在服务器上的行驶证识别api接口
- 计算机等级考试:IE地址栏不见了 怎么让消失了的IE地址栏神奇的再次出现。?
- 如何去除实验数据中的毛刺
- 用python打印学生名单_Python2爬取学生名单
- JAVA—— MySQL高级(二)
- 计算机导论以python为舟大纲,清华大学出版社-图书详情-《计算机科学导论——以Python为舟(第3版)》...
- PLC梯形图编程练习
热门文章
- 【推荐】Web 2.0 必读经典 !
- ESX 4 无法启动vSphere Web Access
- HttpSession
- ubuntu12.4上安装minigui3.0.12
- 分享《组播技术白皮书》
- 获取一段html的内容简介
- iOS开发之 [NSNull length]:unrecognized selector sent
- HttpHelps类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理...
- 给vs2012轻松换肤
- SQL Server 2008空间数据应用系列十一:Bing Maps中呈现GeoRSS订阅的空间数据