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\n",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\n",l,r);
                    l=l%n+1;
                }
                else
                {
                    printf("%d %d\n",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+;
const int INF=0x3f3f3f3f;
const int MOD=1e9+; struct edge
{
int x,y;
}e[MAXN]; int vis[]; int main()
{
ios::sync_with_stdio(false);
cin.tie();
int t;
cin>>t;
int kase=;
while(t--)
{
int n,m;
cin>>n>>m;
for(int i=;i<m;++i)
{
cin>>e[i].x>>e[i].y;
e[i].x--; //便于左移 1号点代表二进制最低位 即 1<<0;
e[i].y--;
}
int ans=;
for(int i=;i<(<<n);++i)//二进制枚举
{
//debug(i);
int tmp=;
for(int j=;j<m;++j)
{
int t1=i&(<<e[j].x); // 取出第e[j].x位
int t2=i&(<<e[j].y);
//debug(t1);
//debug(t2);
if((t1== &&t2 )|| (t2== && t1)) //一个0,一个非0,说明属于不同集合,连边
tmp++;
}
// debug(tmp);
ans=max(ans,tmp);
//cout<<endl;
}
cout<<"Case #"<<kase++<<": "<<ans<<endl;
}
return ;
}

2019icpc上海站 打星体验,首次感想 D K代码的更多相关文章

  1. ajax操作时用于提高用户体验的两段备用代码

    <div id="msgBoxDIV" style="position: absolute; width: 50%; padding-top: 2px; heigh ...

  2. 辛星笔记之高质量JavaScript代码书写要点

    首先本文章是http://www.zhangxinxu.com/wordpress/?p=1173 的读书笔记,读者能够自己到鑫旭的空间去阅读原文.这里我对其进行了简化. 可维护的代码的一些要求: ( ...

  3. POJ 2449 Remmarguts' Date (SPFA + A星算法) - from lanshui_Yang

    题目大意:给你一个有向图,并给你三个数s.t 和 k ,让你求从点 s 到 点 t 的第 k 短的路径.如果第 k 短路不存在,则输出“-1” ,否则,输出第 k 短路的长度. 解题思路:这道题是一道 ...

  4. 提升Boolean和out相结合的用户体验

    在我们编写代码的过程中经常有这样的需求,比如添加一条数据,我们想要的结果是如果添加成功了就返回true,如果添加失败了就返回false,在返回false的同时携带错误信息,我们通常的做法是定义这样的方 ...

  5. Java+面向对象初学感想

    在先导课之前我未曾接触C和Python之外的语言,在大一学年的课程中,用面向过程的思想方法足以完成绝大多数课程要求,故而我也对面向对象的编程思想知之甚少,虽然多有耳闻但是对它一直没有一个正式的学习了解 ...

  6. webpack教程(一)——初体验

    首先全局安装webpack,再npm初始化一个项目,并局部安装webpack开发工具 $ npm install webpack -g npm init (项目名称) $ npm install we ...

  7. java概述和java环境按照,java开发体验

    java概述: Java的发展可以归纳如下的几个阶段. (1)第一阶段(完善期):JDK 1.0 ( 1995年推出)一JDK 1.2 (1998年推出,Java更名为Java 2): (2)第二阶段 ...

  8. 让 AI 为你写代码 - 体验 Github Copilot

    前几天在群里看到有大神分享 Copoilot AI 写代码,看了几个截图有点不敢相信自己的眼睛.今天赶紧自己也来体验一下 Copoilot AI 写代码到底有多神奇. 申请 现在 Copoilot 还 ...

  9. drf路由组件(4星)

    路由组件(4星) 路由Routers 对于视图集ViewSet, 我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息. REST f ...

随机推荐

  1. java内存区域,jvm内存各个区域详解

    一.运行时数据区域 1.如图所示,可分为如下几个区域. 2.程序计数器 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器.字节码解释器工作时就是通过改变这个计数器的 ...

  2. Thinkphp5——pathinfo的访问模式、路径访问模式

    tp5访问入口文件的时候是,访问public目录下的index.php,那么她真正访问的url到底是什么?如何去访问其他页面,实际上她默认使用的PATH_INFO模式进行访问. PATHINFO模式 ...

  3. 区块链学习笔记:DAY01 区块链的技术原理

    其实很早之前就听过区块链,也看过有关区块链的介绍,那个时候的理解主要还是一句话:分布式记账 然后开始关注比特币,听了有几年了,对于其来历.用途其实一直都是一知半解. 这次的课算是第一次以一个学员的身份 ...

  4. ios instancetype与id区别

    我们都知道未知类型的的对象可以用id关键字表示,那为什么还会再有一个instancetype呢? instancetype能返回相关联的类型(使那些非关联返回类型的方法返回所在类的类型):而id 返回 ...

  5. iOS开发-CoreMotion框架

    转自: CoreMotion是一个专门处理Motion的框架,其中包含了两个部分 加速度计和陀螺仪,在iOS4之前加速度计是由 UIAccelerometer 类 来负责采集数据,现在一般都是用Cor ...

  6. DataFrame 链式赋值

    在运行以下Python代码时,Pandas抛出SettingWithCopyWarning警告: row_data = df_pred.loc[key] row_data['col'] = new_v ...

  7. 前端flex布局学习笔记

    flex布局,即为弹性布局,其为盒模型提供最大的灵活性,任何一个容器都可以指定为flex布局. eg:.box{ display:flex: } 行内元素也可以使用flex布局. 注意:设置flex布 ...

  8. 使用 Ocelot 匹配路由的方法匹配路由

    使用 Ocelot 匹配路由的方法匹配路由 Intro 之前我们在 Ocelot 网关的基础上自定义了一个认证授权的 Ocelot 中间件,根据请求的路径和 Method 进行匹配,找到对应的权限配置 ...

  9. FlyWay工作原理

    本文译自Flyway官方文档,原文地址https://flywaydb.org/getstarted/how 当你最开始将FlyWay指向一个空数据库时. 它会试着去查找schema历史表,如果此时数 ...

  10. 【Web技术】334- yarn、npm、cnpm 三者如何优雅的在一起使用 ?

    前端得包管理你有过几个? 一位用不好包管理器的前端,是一个入门级前端,一个用不好webpack的前端,是一个初级前端 三个包管理器是可以一起用的,只要你够胆大心细,就没任何问题! 在javeScrip ...