8.9实战感悟

来源:互联网 发布:在linux上安装oracle 编辑:程序博客网 时间:2024/06/06 20:24

本来考完了有点相信自己会AK来找自信的,结果……
这些东西说了也没用……
来写写今天的题的一些做法和感悟吧

T1

一看就是线性筛,稍微改改就行了
放下代码吧

memset(f,true,sizeof(f));//f表示是不是质数memset(s,true,sizeof(s));//s表示是不是半质数int cnt=0;//cnt表示有多少个质数for(int i=2;i<=N;i++){    if(f[i]) prime[++cnt]=i;    for(int j=1;j<=cnt&&i*prime[j]<=N;j++){        f[i*prime[j]]=false;        if(!f[i]) s[i*prime[j]]=false;        if(i%prime[j]==0break;//每一个数只会被它的最小质因子筛1遍    }}for(int i=2;i<=N;i++){    sum[i]=sum[i-1];    if(f[i]||s[i]) sum[i]++;//前缀和部分}

代码是不是很简单呀

T2

基本第一眼题目看完大概就知道应该怎么做了
因为K十分的小,K<=10,所以可以使用类似状态压缩的方法,将每一个钥匙和传送门需要的东西当做是一个二进制数
然后妥妥的bfs,中间判断的时候位运算即可
最懵逼的是最后一个点我就是输出 No Solution……别人都是T……
表示现在还是没有看出到底错在哪了……
bfs的代码总不用写了吧,提高组的人不会写就真心尴尬了……

T3

爆炸的一道题……竟然只拿了50分……
表示前两题半小时左右写完,后面也没改。最后一题看完之后感觉也会做,时间似乎绰绰有余……似乎要AK了么……
但是,最后一步怎么求特尴尬……
前面lca什么的怎么求就不必赘述了,不会的提高组也不用打了
表示实战的时候分类讨论搞了很长时间,将近1个半小时……
当时我十分脑残地讨论A,B,C三者的关系,被自己的分类讨论烦死……
标程真心精妙
A,B,C肯定存在某种关系:要么在同一条链上,要么中间有分叉
那么我始终可以假设这三者之间有一个分叉点,这三个点通过这个分叉点来连接
那么这就可以简洁明了地算出来了啊
其实90分很好拿,sj就十分简单明了地拿了90
50就50吧,反正当做是一次学习和教训

题外话

表示今天很有可能是最简单的一次实战……
明天是什么难度也只能拭目以待了……
只求明天正常发挥

以后写感悟的时候需要代码的可以直接下面评论告诉我或者空间回复告诉我,到时候我写每篇感悟的时候顺便把代码放上去,大家也可以互相讨论
感觉我自己在讲怎么做好空啊,没有代码可能比较虚,具体实现会比较好

@zhangchi2603已经注册了博客,怎么其他人不注册啊
注册后互相关注,就可以看到其他人写的博客,就不必天天空间上发了

原创粉丝点击