zoukankan      html  css  js  c++  java
  • 2019icpc上海站 打星体验,首次感想 D K代码

    2020.2.16 UPD: D,K都有问题 赛后来改...

    2020.2.17 UPD:

    D改了蛇皮走位。简单解释就是l朝着顺时针不断加+1,r朝着逆时针不断加+1,见代码。

    K这样T(1<<16)M 在牛客的机子上容易T,另一种枚举是1的位再找是0的位统计跑的更快。这份代码没法保证一定过的去,经常就跑了1900多ms差点就t。

    E牛客机子sort再kruskal好像有点难过,要用桶排序

    B 牛客机子map过不去,只能字典树了。。。(map好像是能过的,我姿势不对?不能记录在map里记录每个前缀,而是对每个前缀找map里是否是这个字符好像,不然map里太多了就T了)

    H 二分思想差不多有的,就是没想到check的时候,子树一旦不满足居然对儿子直接sort取大的减去就可以了。的确非常暴力啊。

    J 就是树剖之后线段树部分要维护 (ax+b)的三次方,挺麻烦的,别的差不多都看懂的。

     END.

    暑期训练以来首次参赛,体验还行吧,过程有些战战兢兢。

    刚开始以为是正式队,热身赛只过了一题,有很大的压力,正赛前一天晚上才知道是打星队,有点如释重负的感觉。也幸好都是打星队,不然真的有可能打铁,虽然实际上我们队伍下半程整体状态还不错,终场甚至接近铜牌区,但比赛中就是一切皆有可能。
    熟悉了参赛的流程,每个阶段该干什么,有了首次的体验,蓝色的马甲不错hhhh。


    实际比赛过程中,很大的感觉是,区域赛的题目更加注重对题目的分析,对思维的考量,从一个题目中看出它是怎么构造运转的,用什么样的算法去实现,和我们平时对着一类带标签的题目去做感觉完全不一样。


    比如说K题,我就是不知道它用啥去做,一直想着搜索,却又不知道怎么在后效性下保持最优。

    赛后才知道是二分图,然而这学期才刚学离散数学,还没学到,无奇环=二分图!

    卡了队伍保守估计3小时以上,出不来。赛后我队长给出了bfs建图再找的做法(感觉还挺优的),我在学了二进制枚举之后,写了O(2^16*m)的枚举找的做法。有收获吧。


    E题靠着队长的神奇思维,说是无论怎么走,一个图可以获取的最大边数是固定的n-1,验证了一下,发现确实,得出了最大生成树的做法,码了板子,调了一会儿,我没清tot导致RE了一发(紧张过度,我的锅,贡献罚时),也就过了,其实E题花的时间也不多吧?感觉就30分钟多?所以说想到用什么做,甚至是猜想,并且能验证,就可以不用多久码出来。


    B题据说字典树裸题,判有没有别的字符串是它的前缀,虽然也看出来了字典树,但幸好板子上正好没有这个(滑稽),省的抄板子调了,然后和队友讨论,发现最长的是10个字符所以可以暴力map,记录每个string,出现就映射到1,重复出现显然已经不行,再遍历对每个当前的串去分解取0~k位置的子串,最多O(10n)?这里我还想转化到int 除10再转化回来,队友说可以直接考虑substr,然后虽然substr运用的比较少,但最后还是搞出来了。我队友nb!

    然后D答案很好猜,我们队最后几分钟疯狂写构造的代码,最后还是没调好,机时欠缺,大家都有自己的想法和代码,有些混乱,还是时间没把握好,思路不够清晰明确。

    赛后我补了一下我的D的构造,只是还没有OJ可以交,不知对不对。

    总体而言,虽然成绩表面上似乎还行(与其他队相比之下),但实际上比赛确实充满着运气,我f们的实力还不足以克服压制一切运气,还需努力呀!熟悉板子,主要还是思考和模拟构造。
    然后BDEHK都可以再补或者熟悉一下吧,字符串、树、和图。

    D代码(未提交):

    (如果构造错了我再改

    
    
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int T;
        scanf("%d",&T);
        for(int t=1; t<=T; ++t)
        {
            int n,l,r;
            scanf("%d",&n);
            printf("Case #%d: %d ",t,n/2);
            for(int i=1; i*2<=n; ++i)
            {
                l=i;
                r=(l+n-2)%n+1;
                for(int j=1; j<n; ++j)
                {
                    if(j&1)
                    {
                        printf("%d %d ",l,r);
                        l=l%n+1;
                    }
                    else
                    {
                        printf("%d %d ",r,l);
                        r=(r+n-2)%n+1;
                    }
                }
            }
        }
        return 0;
    }
    
    

    K代码

    (未提交,感觉应该对的吧?):

    #include <bits/stdc++.h>
    #define debug(x) cout << #x << ": " << x << endl
    using namespace std;
    typedef long long ll;
    const int MAXN=3e2+7;
    const int INF=0x3f3f3f3f;
    const int MOD=1e9+7;
    
    struct edge
    {
        int x,y;
    }e[MAXN];
    
    int vis[21];
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int t;
        cin>>t;
        int kase=1;
        while(t--)
        {
            int n,m;
            cin>>n>>m;
            for(int i=0;i<m;++i)
            {
                cin>>e[i].x>>e[i].y;
                e[i].x--; //便于左移  1号点代表二进制最低位 即 1<<0;
                e[i].y--;
            }
            int ans=0;
            for(int i=0;i<(1<<n);++i)//二进制枚举
            {
                //debug(i);
                int tmp=0;
                for(int j=0;j<m;++j)
                {
                    int t1=i&(1<<e[j].x); // 取出第e[j].x位
                    int t2=i&(1<<e[j].y);  
                    //debug(t1);
                    //debug(t2);
                    if((t1==0 &&t2 )|| (t2==0 && t1))  //一个0,一个非0,说明属于不同集合,连边
                        tmp++;
                }
               // debug(tmp);
                ans=max(ans,tmp);
                //cout<<endl;
            }
            cout<<"Case #"<<kase++<<": "<<ans<<endl;
        }
        return 0;
    }
  • 相关阅读:
    改变Edit的光标(使用CreateCaret,ShowCaret和LoadBitmap三个API函数)
    浅析Delphi Container库(有开源的DCLX)
    Delphi接口的底层实现(接口在内存中仍然有其布局,它依附在对象的内存空间中,有汇编解释)——接口的内存结构图,简单清楚,深刻 good
    Asp.Net在多线程环境下的状态存储问题
    C#程序中注释过多的8条理由
    CentOS 6.4 编译安装LLVM3.3,Clang和Libc++
    Microsoft 2013校园招聘笔试题及解答
    代码契约CodeContract(八)
    T-SQL 临时表、表变量、UNION
    BST&AVL&红黑树简单介绍
  • 原文地址:https://www.cnblogs.com/Zzqf/p/11939266.html
Copyright © 2011-2022 走看看