精华内容
下载资源
问答
  • CCF WC2017 课件集合 (圆方树等) CCF WC2017 课件集合 (圆方树等) CCF WC2017 课件集合 (圆方树等)
  • WC2017

    2017-02-12 08:34:11
    2月3日去绍兴。晚上把开幕式翘了= =。 然后要开始听课了。 Day1 听不懂 Day2 听不懂 Day3 听不懂 Day4 听不懂 Day5 貌似要考试了= = 考完发现第一题爆掉了。 Day6社会活动= = ...晚上滚去了学军中学= =

    2月3日去绍兴。晚上把开幕式翘了= =。
    然后要开始听课了。
    Day1 听不懂
    Day2 听不懂
    Day3 听不懂
    Day4 听不懂
    Day5 貌似要考试了= =
    考完发现第一题爆掉了。
    Day6社会活动= =
    闭幕式怎么搞得那么像春晚。。
    晚上滚去了学军中学= =

    展开全文
  • WC2017】挑战

    2019-01-29 08:49:00
    卡常真好玩,卡到了loj rank1(2019.1.29) // luogu-judger-enable-o2 #include <cstdio> #include <cstring> #include <algorithm> ...typedef unsigned long long u6...

      卡常真好玩,卡到了loj rank1(2019.1.29)

     

    // luogu-judger-enable-o2
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    typedef unsigned int u32;
    typedef unsigned long long u64;
    
    inline void output_arr(u32 *A, u32 size) {
        u32 ret = size * sizeof(u32);
        u32 x = 23333333;
        const u32 * ed = A + size;
        for (u32*i=A;i!=ed; ++ i){
            ret^=*i+x,x^=x<<13,x^=x>>17,x^=x<<5;
        }
        printf("%u\n", ret);
    }
    
    namespace Sorting {
        int cnt0[256],cnt8[256],cnt16[256],cnt24[256];
        u32 *a,*b;
        inline void init_data(u32 *a, int n,u32 seed) {
            const u32 * ed = a + n;
            for (u32*i = a; i != ed; ++ i){
                seed ^= seed << 13,seed ^= seed >> 17,seed ^= seed << 5;
                *i=seed;
                ++cnt0[seed & 255], ++cnt8[seed >> 8 & 255],
                ++cnt16[seed >> 16 & 255], ++cnt24[seed >> 24];
            }
            for(int i=1;i<256;++i)
                cnt0[i] += cnt0[i-1],
                cnt8[i] += cnt8[i-1],
                cnt16[i] += cnt16[i-1],
                cnt24[i] += cnt24[i-1];
            register u32*i;
            for(i=a+n-1;i>a;i-=8){
                b[--cnt0[*i&255]]=*i;
                b[--cnt0[i[-1]&255]]=i[-1];
                b[--cnt0[i[-2]&255]]=i[-2];
                b[--cnt0[i[-3]&255]]=i[-3];
                b[--cnt0[i[-4]&255]]=i[-4];
                b[--cnt0[i[-5]&255]]=i[-5];
                b[--cnt0[i[-6]&255]]=i[-6];
                b[--cnt0[i[-7]&255]]=i[-7];
            }
            for(i=b+n-1;i>b;i-=8){
                a[--cnt8[*i>>8&255]]=*i;
                a[--cnt8[i[-1]>>8&255]]=i[-1];
                a[--cnt8[i[-2]>>8&255]]=i[-2];
                a[--cnt8[i[-3]>>8&255]]=i[-3];
                a[--cnt8[i[-4]>>8&255]]=i[-4];
                a[--cnt8[i[-5]>>8&255]]=i[-5];
                a[--cnt8[i[-6]>>8&255]]=i[-6];
                a[--cnt8[i[-7]>>8&255]]=i[-7];
            }
            for(i=a+n-1;i>a;i-=8){
                b[--cnt16[*i>>16&255]]=*i;
                b[--cnt16[i[-1]>>16&255]]=i[-1];
                b[--cnt16[i[-2]>>16&255]]=i[-2];
                b[--cnt16[i[-3]>>16&255]]=i[-3];
                b[--cnt16[i[-4]>>16&255]]=i[-4];
                b[--cnt16[i[-5]>>16&255]]=i[-5];
                b[--cnt16[i[-6]>>16&255]]=i[-6];
                b[--cnt16[i[-7]>>16&255]]=i[-7];
            }
            for(i=b+n-1;i>b;i-=8){
                a[--cnt24[*i>>24]]=*i;
                a[--cnt24[i[-1]>>24]]=i[-1];
                a[--cnt24[i[-2]>>24]]=i[-2];
                a[--cnt24[i[-3]>>24]]=i[-3];
                a[--cnt24[i[-4]>>24]]=i[-4];
                a[--cnt24[i[-5]>>24]]=i[-5];
                a[--cnt24[i[-6]>>24]]=i[-6];
                a[--cnt24[i[-7]>>24]]=i[-7];
            }
        }
        int n;
        inline void main() {
            register u32 seed;
            scanf("%d%u", &n, &seed);
            a = new u32[n<<1];
            b = a + n;
            init_data(a, n, seed);
            output_arr(a, n);
        }
    }
    
    namespace Game {
        int n,q;
    
        u64 f1[64][20000];
        u64 f2[64][20000];
        inline void add(u64 f[64][20000],int bit){
            if(bit < 64)
                for(int i=0;i<=bit;++i)
                    *f[i]|=1ull<< bit-i;
            else for(int i=0;i<64;++i)
                    f[i][bit-i>>6] |= 1ull << (bit-i&63);
        }
        inline void init(char * s1,char * s2){
            for(int i=0;i<n;++i){
                if(s1[i]=='0')add(f1,i*3);
                if(s1[i]=='1')add(f1,i*3+1);
                if(s1[i]=='2')add(f1,i*3+2);
                if(s2[i]=='0')add(f2,i*3+2);
                if(s2[i]=='1')add(f2,i*3);
                if(s2[i]=='2')add(f2,i*3+1);
            }
        }
        void main() {
            scanf("%d%d", &n, &q);
            char *s1 = new char[n + 1];
            char *s2 = new char[n + 1];
            scanf("%s%s", s1, s2);
            init(s1,s2);
            u32 *anss = new u32[q];
            for (int k = 0; k < q; ++k) {
                int x,y,len;
                scanf("%d%d%d",&x,&y,&len);
                x*=3,y*=3,len*=3;
                int l = len >> 6;
                u64*i=f1[x&63]+(x>>6),*j=f2[y&63]+(y>>6);
                int ans=0,cnt=0;
                for(;cnt+8<l;cnt+=8,i+=8,j+=8){
                    ans+=__builtin_popcountll(i[0]&j[0]);
                    ans+=__builtin_popcountll(i[1]&j[1]);
                    ans+=__builtin_popcountll(i[2]&j[2]);
                    ans+=__builtin_popcountll(i[3]&j[3]);
                    ans+=__builtin_popcountll(i[4]&j[4]);
                    ans+=__builtin_popcountll(i[5]&j[5]);
                    ans+=__builtin_popcountll(i[6]&j[6]);
                    ans+=__builtin_popcountll(i[7]&j[7]);
                }
                for(;cnt<l;++cnt,++i,++j) ans+=__builtin_popcountll(*i&*j);
                anss[k]=ans+__builtin_popcountll(*i&*j&(1ull<<(len&63))-1);
            }
            output_arr(anss, q);
        }
    }
    
    namespace Parentheses {
        u32 f[366666*2],*id=f+366666;
        u32 p[366666*2],*g=p+366666;
        int cur=1;
        void main() {
            int n;
            scanf("%d", &n);
            char *s = new char[n + 1];
            scanf("%s", s);
            id[0]=1;
            for(int i=0;i<n;++i){
                if(s[i] == ')')
                    *id++=0;
                if(s[i] == '(')
                    *--id=0;
                if (i !=n-1 && s[i] == '?' && s[i+1] == '?'){
                    *--id=0,*--id=0;
                    id[0]=id[2]+id[4];
                    id[1]=id[3]*2+id[5];
                    const int ed=std::min(i+4,n - i + 4);
                    for(int j=2+(i&1);j<=ed;){
                        id[j] += id[j+2]*2 + id[j+4],j+=2;
                        id[j] += id[j+2]*2 + id[j+4],j+=2;
                        id[j] += id[j+2]*2 + id[j+4],j+=2;
                        id[j] += id[j+2]*2 + id[j+4],j+=2;
                        id[j] += id[j+2]*2 + id[j+4],j+=2;
                        id[j] += id[j+2]*2 + id[j+4],j+=2;
                        id[j] += id[j+2]*2 + id[j+4],j+=2;
                        id[j] += id[j+2]*2 + id[j+4],j+=2;
                    }
                    ++i;
                    continue;
                }
                if(s[i] == '?'){
                    *--id=0;
                    const int ed=std::min(i+2,n-i+2);
                    for(u32 j=!(i&1);j<=ed;){
                        id[j]+=id[j+2],j+=2;
                        id[j]+=id[j+2],j+=2;
                        id[j]+=id[j+2],j+=2;
                        id[j]+=id[j+2],j+=2;
                        id[j]+=id[j+2],j+=2;
                        id[j]+=id[j+2],j+=2;
                        id[j]+=id[j+2],j+=2;
                        id[j]+=id[j+2],j+=2;
                    }
                }
            }
            printf("%u\n", id[0]);
        }
    }
    
    int main() {
        int task_id;
        scanf("%d", &task_id);
    
        switch (task_id) {
            case 1:
                Sorting::main();
                break;
            case 2:
                Game::main();
                break;
            case 3:
                Parentheses::main();
                break;
        }
    
        return 0;
    }
    

      

    转载于:https://www.cnblogs.com/skip1978/p/10332528.html

    展开全文
  • loj#2286. 「WC2017」挑战

    2019-02-27 18:18:05
  • [UOJ 287][WC 2017] 棋盘

    2018-01-22 00:16:12
    Description 给你一张 nn 个点 mm 条边的无向图,点编号 1,2,⋯,n1,2,\cdots,n,每个点上放有一枚棋子,棋子编号 0,1,⋯,n−10,1,\cdots,n-1,一次操作是指将编号为 00 的棋子与图上和它所在点有边相连的点上的...

    Description

    给你一张 n 个点 m 条边的无向图,点编号 1,2,,n ,每个点上放有一枚棋子,棋子编号 0,1,,n1 ,一次操作是指将编号为 0 的棋子与图上和它所在点有边相连的点上的棋子交换位置。现在有 q 组询问,每次询问给定的局面是否能从给出的初始局面经若干次操作得到。
    n50,m100,q1000
    时间限制:3s,空间限制:1G

    题目传送门

    Tags

    置换与置换群,Schreier-Sims算法
    没有群的相关知识的同学就可以拿40分裸暴力然后继续切其他题啦

    Solution

    被一道板子题坑了两天。。。
    根据题目,图上每个点都有两个信息需要维护:点的编号和棋子编号。由于在一个确定的局面下二者之间有一一对应关系,很自然的想法便是把其中一个作为下标,另一个作为值。又由于题目给出的条件几乎都和点编号有关,显然把棋子编号作为下标更加靠谱。
    于是我们维护的是一个 n 阶排列 P,其中 Pi 表示编号为 i 的棋子所在点的编号,那么每一次操作就是把这个排列的首项 P0 与某一项交换。
    下面来考虑点的编号在转移过程中满足的若干性质。
    不难发现这样一件事:如果原图 G 存在一个环 V1V2Vt,并且 0 号棋子在这个环中的某一点(不妨设为 V1)上的话,经过 t 次操作使得 0 棋子围着环转一圈之后,原先在 V2,V3,,Vt 上的棋子就会到 Vt,V2,,Vt1 上。将这一过程重复若干次便可取遍所有的圆上排列。
    而这一过程的本质就是置换

    (V2VtV3V2V4V3VtVt1)

    显然,对于每一个简单环,我们都可以得到一个这样的置换。记这些置换组成的集合为 R
    不过这样得到的置换有一个问题,那就是我们并没有讨论 0 所在的点的变化。于是我们可以想办法让这一因素从我们的讨论范围中消失——对于每种局面,先把 0 沿一条路径移动到某一个确定的点(不妨设为 1 号点)上,即钦定 P0=1 ,于是只需讨论排列 P1,P2,,Pn1 之间的转移。可以证明这样做是正确的。
    设任意一种局面 S 经此处理之后得到的排列为 f(S),于是问题就转化为对于给定的初始状态 A 和每次给出的状态 B f(B) 能否由 f(A) 经若干 R 中的置换作用之后得到。
    如果把排列也看作是置换的话,那就是在问 f(B)f(A)1 是否在以 R 为生成集的置换群中。
    至此,问题已经被解决的一大半,剩下的就是如何快速判断一个给定的置换是否在以给定集合为生成集的群中。
    为了解决这个问题,我们要引入Schreier-Sims算法。

    太长不看版

    自行查阅2014年国家集训队论文《对置换群有关算法的初步研究》,剩下的部分是论文中介绍的算法的应(mú)用(bǎn)。

    正常版

    坑坑坑

    AC Code

    时间复杂度:O(n5)(大概吧)
    空间复杂度: O(n3)

    #include<bits/stdc++.h>
    using namespace std;
    const int MX=55;
    #define pb push_back
    
    int N,M,Q,pre[MX],f[MX],g[MX],pos[MX],t,ls[MX],idx,m,b[MX];
    int lr[MX],rid[MX][MX];
    vector<int> G[MX];
    struct Permutation
    {
        int a[MX];
        Permutation(){memset(a,0,sizeof(a));}
        bool isI()
        {
            for(int i=1;i<N;i++)if(a[i]!=i)return 0;
            return 1;
        }
        Permutation operator * (Permutation& b)
        {
            static Permutation ans;
            for(int i=1;i<N;i++)ans.a[i]=b.a[a[i]];
            return ans;
        }
        Permutation inverse()
        {
            static Permutation ans;
            for(int i=1;i<N;i++)ans.a[a[i]]=i;
            return ans;
        }
    }s[MX][MX],r[MX][MX],rr[MX][MX],ans;
    bool vis[MX],ins[MX];
    
    inline int read()
    {
        static int x;
        static char c;
        c=getchar(),x=0;
        while(!isdigit(c))c=getchar();
        while(isdigit(c))x=x*10+c-'0',c=getchar();
        return x;
    }
    inline void dfs(int u,int f)
    {
        int w;
        pre[u]=f,vis[u]=1,ins[u]=1;
        for(auto i:G[u])if(i!=f)
        {
            if(vis[i])
            {
                if(!ins[i])continue;
                ++t;
                for(int j=0;j<N;j++)s[1][t].a[j]=j;
                w=u;
                while(pre[w]!=i)s[1][t].a[w]=pre[w],w=pre[w];
                s[1][t].a[w]=u;
            }
            else dfs(i,u);
        }
        ins[u]=0;
    }
    inline void bfs()
    {
        int u=b[idx],v;
        static int q[MX],hd,tl;
        static char vst[MX];
        static Permutation t;
        q[hd=tl=1]=u;
        memset(vst+1,0,sizeof(char)*(N-1));
        vst[u]=1;
        for(int i=1;i<N;i++)r[idx][i].a[1]=0;
        for(int i=1;i<N;i++)r[idx][u].a[i]=rr[idx][u].a[i]=i;
        lr[idx]=1,rid[idx][1]=u;
        while(hd<=tl)
        {
            u=q[hd++];
            for(int i=1;i<=ls[idx];i++)
            {
                t=r[idx][u]*s[idx][i],v=t.a[b[idx]];
                if(!vst[v])
                {
                    vst[v]=1,q[++tl]=v;
                    r[idx][v]=t,rr[idx][v]=t.inverse();
                    rid[idx][++lr[idx]]=v;
                }
            }
        }
    }
    inline void Divide(Permutation& h)
    {
        for(int i=idx+1;i<=m;i++)if(h.a[b[i]]!=b[i])
        {
            if(!r[i][h.a[b[i]]].a[1])return;
            h=h*rr[i][h.a[b[i]]];
        }
    }
    inline void Schreier_Sims()
    {
        Permutation h;
        bool o;
        idx=m=1;
        for(int i=1;i<=ls[1];i++)for(int j=1;j<N;j++)
            if(s[1][i].a[j]!=j)b[1]=j;
        bfs();
        while(idx)
        {
            o=1;
            for(int i=1;o&&i<=lr[idx];i++)for(int j=1;j<=ls[idx];j++)
            {
                h=r[idx][rid[idx][i]]*s[idx][j];
                h=h*rr[idx][h.a[b[idx]]];
                Divide(h);
                if(!h.isI()){o=0;break;}
            }
            if(o)--idx;
            else
            {
                if(++idx>m)
                {
                    ls[++m]=0;
                    for(int j=1;j<N;j++)if(h.a[j]!=j)b[m]=j;
                }
                s[idx][++ls[idx]]=h;
                bfs();
            }
        }
    }
    inline void Transfer(int *A)
    {
        int u=-1;
        for(int i=0;i<N;i++)if(!A[i])u=i;
        while(u)swap(A[u],A[pre[u]]),u=pre[u];
        for(int i=0;i<N;i++)pos[A[i]]=i;
        memcpy(A,pos,sizeof(int)*N);
    }
    
    int main()
    {
        N=read(),M=read(),Q=read();
        for(int i=1,u,v;i<=M;i++)
            u=read()-1,v=read()-1,G[u].pb(v),G[v].pb(u);
        dfs(0,-1);
        if(ls[1]=t)Schreier_Sims();
        for(int i=0;i<N;i++)f[i]=read();
        Transfer(f);
        while(Q--)
        {
            for(int i=0;i<N;i++)g[i]=read();
            Transfer(g);
            for(int i=1;i<N;i++)ans.a[f[i]]=g[i];
            if(t)Divide(ans);
            puts(ans.isI()?"Yes":"No");
        }
        return 0;
    }
    展开全文
  • WC2017总结

    千次阅读 2017-02-09 20:17:14
    ~~~~~~吾之于WC,如蛙之于井底,仰而望天之高,跃而不及地。Part 1突然开始的WC模拟 ~~~~~~noip2016在11月20日结束,经过一段时间的乱搞,我们于12月开始,为期3个月的WC大征途。 ~~~~~~(GD压线进入wc!!???...
  • WC2017 酱油记

    千次阅读 2017-02-08 20:14:10
    WC接THUWC,可以体验连续滚粗的快感。 day -5  上了高铁发现居然和老师邻座,,,  15min的高铁也是劲啊。  晚上文艺表演,各种讲话,并没有什么兴趣。 day -4  早上鏼鏼鏼讲字符串,大概还是能听懂一点的。  ...
  • WC2017滚粗记

    2017-02-01 12:23:08
    DAY -2  强行从今天开始写滚粗记...... 温习了一波大家往年的游记,心中五味杂尘。然后给自己立几个目标 1....我可能需要时间好好想一想WC暴露的问题,继续逃避只能让我在滚粗的路上越走越远。
  • WC2017咸鱼记&THUWC2017垫底记

    千次阅读 2017-02-09 00:04:52
    最惊讶在于pku居然来WC了。。 看看自己的分数,其实还是更进一步的可能。 第二题的第一问不是很难,但是我被常识束缚,就放弃掉了。 说明思维还是要灵活,不能陷入惯性思维! 某王姓出题人丧心病狂。。 ...
  • WC2017出队记

    千次阅读 2017-02-27 11:37:01
    写于2017.02.27....... AC了几天前的校内考试题目之后在机房突然不知道该干什么了,想到游记再不写就忘了,于是开始码字 2017.1 作业成绩发下来了!看了一眼榜,作业拿了9.0分,是一个不是很高的分数,但是由于排名...
  • WC2017&THUWC2017 游记

    千次阅读 2017-02-16 01:12:56
    我可能去了假的WC QAQ 人世几回伤往事,山形依旧枕寒流。day1报到日,然而我们学校从重庆坐火车去绍兴,完美错过开幕式day2上午鏼鏼鏼讲字符串,勉强听懂前半截。 下午rzz的猜数游戏,尛焱轟讲IOI2016试题,勉强跟...
  • [WC2017]总结

    2017-02-14 15:59:57
    前几天集训题目很难,几场比赛中产生了不太想打复杂部分分的想法,所以分数一直不是很高,这个需要克服。 最后一天出了一道计算几何题,算法是...WC Lecture第一堂课的上线率是最高的,大概有70%以上。border那一套理
  • WC2017 Day5

    2017-04-21 20:45:00
    WC2017 Day5 T1 -本题内存1G,时限3s-在任意图上玩n数码问题-10分点数少,10分树,10分环,10分基环树,10分网格图,15分仙人掌,剩下30分任意图-直接BFS可过40分,然而我写了特判喜获10分,树环基环树全挂了-网格...
  • WC2017 Day4

    2017-04-21 20:54:00
    WC2017 Day4 计算机架构和程序底层优化 卡常!卡常! 好像就是洛可强论文内容 0x00 信息的表示和处理 二进制 整数的表示 位向量 16进制 字长? NOI Linux:32位 这导致NOI Linux系统处理64位整数很慢 大多数...
  • wc2017心路历程

    千次阅读 2017-02-12 11:44:35
    作为一位蒟蒻,在弱省混进了神犇云集的WC。大概上课讲的内容,与OI相关的大多数只能听懂百页PPT的前几页,与OI无关的大概听得能舒服些,一是很多时候无需细想,理解意思开阔眼界就好,或者是内容比较符合平时喜欢的...
  • WC2017模拟1.22】简单题

    千次阅读 2017-01-23 17:21:56
    题目大意给定n,k,求把n!拆分成k个不同的正整数的乘积的方案数。(一种方案的排列仍是一种方案)。答案对109+710^9+7取模。n≤10000 k≤30时限为4s分析这是一道容斥好题。首先可以不管算重,最终答案除以k!...
  • WC2017模拟1、2总结

    千次阅读 2017-01-16 09:08:23
    好难啊 ~~~~~~这两天几乎都垫底。  ~~~~~~做这种模拟最大的感觉就是:智商完全不够用啊~ ...说暴力 ~~~~~~对于我这等小弱鸡,wc必须打暴力啊。。  ~~~~~~但是我的暴力能力好像不怎么好。。。主要有
  • 题目出自成都七中 题目大意 ~~~~~~n 把椅子排成一个环。  ~~~~~~现在要撤掉一部分,使得只剩下恰好 k 把椅子,并且剩下的任意两把椅子原先不相邻。  ~~~~~~若两种方案可以经过旋转、翻转互相等价,则认为本质...
  • PKU WC2017 翻车记

    2019-10-08 07:32:01
    A.NOI 2017 循环之美 B.LOJ 「LibreOJ β Round #4」子集 C.codeforce 802 O 回家听蛀牙的新歌,无脑嗨到很晚 1.24 早上起来U盘找不到了,找了0.5h 开始补随笔(⊙o⊙)… 中午补了一道脑洞题,没初始化...
  • WC2017 && THUWC2017 游记

    千次阅读 2017-03-07 16:17:14
    WC2017 Ⅰ 2月3日 绍兴 坐了一个上午的车到绍兴。今天应该是这几天最精神的一天,毕竟睡了一个上午的觉。 看了寝室,很不错啊,有大学的感觉,床高高的,下面有桌子,更棒的是床位的主人是韦德的粉丝,...
  • WC2017游记

    千次阅读 2017-02-08 23:55:53
    菜鸡蒟蒻Nickwzk第一次来WC见世面。 绍一环境资磁啊。寝室环境吼啊,自助餐吼啊。 十节课给我挖了巨坑啊,不知道多久可以填完。(怕是有生之年填不完 营员交流吼啊,长见识get新算法名。(雾 认识了好多大爷啊。...
  • WC2017 Day2

    2017-04-21 20:51:00
    WC2017 Day2 基于物理的信息学竞赛知识 0x00 用处? 模拟这个世界 物理引擎 工程学 OI! 0x01 Overview 基础物理模拟 Signed Distance Function(如何处理物理边界) State of the arts 0x02 高中数学/物理 ...
  • WC2017 颓废记

    2017-02-04 23:19:00
    这能不能骗到访问量啊?...旁边人把我推醒了,听说WC2017结束啦?真是愉悦的一周 (大雾) Day 0, 下午乘车去绍兴一中,simple physics好好玩啊~ 宿舍在五楼,没有电梯QAQ,整体环境还不错,...
  • WC2017 Day3

    2017-04-21 20:53:00
    WC2017 Day3 近似算法 0x00 提纲 为什么需要近似算法 近似算法简介 总结 0x01 为什么需要近似算法? 这一部分都在胡扯 算法的特点 复杂度(时间,空间) 正确性(方法正确性,程序正确性) 简单性(程序结构...
  • WC2017打铁记

    2017-02-15 16:44:47
    蒟蒻爆零打铁惹~(>_<)~ WC考试被虐惨QAQ 两个半小时发现看错题意时间爆炸 根本不能好好做题惹呜呜呜 本不想写游记 但是感觉前后几天玩得很high 算是一个纪念吧

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,840
精华内容 3,136
关键字:

wc2017

友情链接: sooer_mp3_search.zip