动态淀粉质即可

#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】即时战略相关推荐

  1. [WC2018]即时战略——动态点分治(替罪羊式点分树)

    题目链接: [WC2018]即时战略 题目大意:给一棵结构未知的树,初始时除1号点其他点都是黑色,1号点是白色,每次你可以询问一条起点为白色终点任意的路径,交互库会自动返回给你这条路径上与起点相邻的节 ...

  2. 「WC2018」即时战略

    「WC2018」即时战略 考虑对于一条链:直接随便找点,然后不断问即可. 对于一个二叉树,树高logn,直接随便找点,然后不断问即可. 正解: 先随便找到一个点,问出到1的路径 然后找别的点,考虑问出 ...

  3. Unity实战 RTS3D即时战略游戏开发(三)

    大家好,我是Zander,我们接着来开发Rts3D即时战略游戏开发.上一章我们为场景添加了Manager,以及玩家初始化信息. 下面我们来完成以下功能:导航网格的设置.摄像机的操控.以及制作单位预设. ...

  4. D3D游戏编程系列(二):自己动手编写即时战略游戏之地图编辑器的制作

    说起即时战略游戏,我第一时间想起魔兽争霸,这个不知道陪伴我多少个日日夜夜,让我哭让我笑的游戏,让我想起了sky,moon,grubby等人牵动心弦的战斗历程,让我想起了当年日日守在电脑前专注的欣赏着w ...

  5. 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 ...

  6. 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 ...

  7. 要塞十字军东征HD for Mac(即时战略游戏)

    要塞十字军东征HD for Mac以中世界十字军东征为背景,十字军东征是人类历史上规模最大的宗教战争,游戏整体非常有趣,要塞十字军东征 Mac版是一个由欧洲历史中最著名的十字军东征为历史事件所设计的游 ...

  8. 【转】网络即时战略游戏软件开发 结构体系分析

    文档下载地址:http://download.csdn.net/detail/wanggan768q/4388056   网络即时战略游戏软件开发 结构体系分析 前言 本人对网络游戏的技术问题一直比较 ...

  9. 网络即时战略游戏结构体系分析

    前言 本人对网络游戏的技术问题一直比较感兴趣,我认为网络游戏的开发在不远的将来是一个非常庞大的产业.这段时间有空,特地玩了几天网络游戏"破碎银行系",并分析了一下其中体系结构,有些 ...

  10. 网络即时战略游戏软件开发 结构体系分析

    文档下载地址:http://download.csdn.net/detail/wanggan768q/4388056   网络即时战略游戏软件开发 结构体系分析 前言 本人对网络游戏的技术问题一直比较 ...

最新文章

  1. Linux下安装PCRE
  2. oracle10g库连接报错
  3. python中8大排序(原理+代码)
  4. Vue+Spring boot前后端响应流程总结
  5. 如何在本地搭建一个Android应用crashing跟踪系统-ACRA
  6. js实现打开本地文件或文件夹
  7. 微课系列(四):Python中map对象的几种用法和注意事项
  8. LCA树两个节点最低公共祖先
  9. CentOS 7下载及安装教程
  10. 数据库中的8种常见约束定义
  11. Qt实现类似QQ好友列表
  12. pandas之透视表
  13. 苹果手机文件夹中服务器连接在哪,如何访问苹果手机上的共享文件夹?
  14. 部署在服务器上的行驶证识别api接口
  15. 计算机等级考试:IE地址栏不见了 怎么让消失了的IE地址栏神奇的再次出现。?
  16. 如何去除实验数据中的毛刺
  17. 用python打印学生名单_Python2爬取学生名单
  18. JAVA—— MySQL高级(二)
  19. 计算机导论以python为舟大纲,清华大学出版社-图书详情-《计算机科学导论——以Python为舟(第3版)》...
  20. PLC梯形图编程练习

热门文章

  1. 【推荐】Web 2.0 必读经典 !
  2. ESX 4 无法启动vSphere Web Access
  3. HttpSession
  4. ubuntu12.4上安装minigui3.0.12
  5. 分享《组播技术白皮书》
  6. 获取一段html的内容简介
  7. iOS开发之 [NSNull length]:unrecognized selector sent
  8. HttpHelps类,用来实现Http访问,Post或者Get方式的,直接访问,带Cookie的,带证书的等方式,可以设置代理...
  9. 给vs2012轻松换肤
  10. SQL Server 2008空间数据应用系列十一:Bing Maps中呈现GeoRSS订阅的空间数据