2017-C09-team3
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
[[Image(20170828.png)]]
= 流水账 =
今天reku迟到了,lzw和Johann学长签到题就WA了两发,不过还有两道签到题,都是1A的。
然后Johann说了一下C的建图,reku和lzw看了看,感觉就是个强连通分量,然后就上去写,写了一会才过。
然后Johann和lzw讨论了I,几何选手Johann写了一阵子,也过了。
此时reku和lzw讨论了G,lzw提出了一个nloglog的解法,感觉不太稳,后来想一想是CF,莽了一发,也过了。
reku和Johann学长讨论J,啥也没讨论出来。
然后三个人讨论一下B,很快讨论出了做法,reku上去写,因为细节比较多,lzw去看着reku进行实现,防止搞错。然后调了半天,终于过了。
最后只剩下40分钟,Johann学长有了D的做法,不过比较难写,没有写完,7题结束比赛。
= 总结 =
== reku ==
今天感觉还行,失误就是中间的几个题写的的确有点慢,如果写的快一点,能给Johann学长留出一个小时的时间,我觉得Johann学长的D也许能过掉。J题其实样例的提示已经很明显了,但是我们就是看不出来,导致这个中档题都没有过,要加强智力啊...(加强个屁啊,怎么加强啊)
== lzw4896s ==
A题一看是个签到题,很激动,想着要比二队先过这个题,写好之后马上交了,结果贡献了罚时。以后比赛中不应该出现这种心态,签到题还是要求稳,不差那么一两分钟来检查一遍。 G题很快就想到了线段树维护LCA的两个log的做法,但是比较手残,写好之后调试了二十多分钟,如果能把这些时间节省下来,让Johann去写D题,说不定还可以多过一个题。 另外今天的I题和Johann学长讨论出解法之后,我自己想的实现方式和Johann学长上机写的方式有些不一样,看了Johann学长的代码以为是错的,讨论了一会儿才弄明白,也耽误了一些时间,队员之间的配合上还有待提高。
== Johann ==
今天在签到题wa了两发之后,状态就好了起来,中间基本都是1A。感觉心理压力小了,想题也顺畅一些。学长们看到I题像几何就直接抛给我了(这不是几何呀qwq),感觉以后肩负重任了。做D的时候感觉很难写,时间又紧,心理上有点放弃了。其实没有reku学长说的那么难,感觉要提升代码能力和心理,不要慌。关于J题,以后我们队就叫Three Idiots吧。
= 教训 =
= 题解 =
* E: 对于每个左端点,two pointer处理出最小的右端点使得画出的图形黑色格子和目标图形一样多。 用hash判定是否和原图形一样即可。 对于每个格子 表示成p^x^ * q^y^ 每次支持平移,删除一个点,加入一个点。对于平移操作,我们需要知道最小的x坐标和最小的y坐标,只要用2个multiset分别维护即可。 注意multiset删除的时候会把相同的值都删去,应该写成st.erase(st.find(val)) 而不是 st.erase(val).
* J: 基本策略是先弄出一个1, 然后弄出2 4 8 16... 128, 二进制表示即可。 构造出1: a = ? max ? b = a max a c = b max b.... 迭代个20次, 那么得到的数 几乎可以认为一定是255. 两个255除一下得到1, 或者直接把255当做-1来用。
流水账
今天reku迟到了,lzw和Johann学长签到题就WA了两发,不过还有两道签到题,都是1A的。
然后Johann说了一下C的建图,reku和lzw看了看,感觉就是个强连通分量,然后就上去写,写了一会才过。
然后Johann和lzw讨论了I,几何选手Johann写了一阵子,也过了。
此时reku和lzw讨论了G,lzw提出了一个nloglog的解法,感觉不太稳,后来想一想是CF,莽了一发,也过了。
reku和Johann学长讨论J,啥也没讨论出来。
然后三个人讨论一下B,很快讨论出了做法,reku上去写,因为细节比较多,lzw去看着reku进行实现,防止搞错。然后调了半天,终于过了。
最后只剩下40分钟,Johann学长有了D的做法,不过比较难写,没有写完,7题结束比赛。
总结
reku
今天感觉还行,失误就是中间的几个题写的的确有点慢,如果写的快一点,能给Johann学长留出一个小时的时间,我觉得Johann学长的D也许能过掉。J题其实样例的提示已经很明显了,但是我们就是看不出来,导致这个中档题都没有过,要加强智力啊...(加强个屁啊,怎么加强啊)
lzw4896s
A题一看是个签到题,很激动,想着要比二队先过这个题,写好之后马上交了,结果贡献了罚时。以后比赛中不应该出现这种心态,签到题还是要求稳,不差那么一两分钟来检查一遍。 G题很快就想到了线段树维护LCA的两个log的做法,但是比较手残,写好之后调试了二十多分钟,如果能把这些时间节省下来,让Johann去写D题,说不定还可以多过一个题。 另外今天的I题和Johann学长讨论出解法之后,我自己想的实现方式和Johann学长上机写的方式有些不一样,看了Johann学长的代码以为是错的,讨论了一会儿才弄明白,也耽误了一些时间,队员之间的配合上还有待提高。
Johann
今天在签到题wa了两发之后,状态就好了起来,中间基本都是1A。感觉心理压力小了,想题也顺畅一些。学长们看到I题像几何就直接抛给我了(这不是几何呀qwq),感觉以后肩负重任了。做D的时候感觉很难写,时间又紧,心理上有点放弃了。其实没有reku学长说的那么难,感觉要提升代码能力和心理,不要慌。关于J题,以后我们队就叫Three Idiots吧。
教训
题解
- E: 对于每个左端点,two pointer处理出最小的右端点使得画出的图形黑色格子和目标图形一样多。 用hash判定是否和原图形一样即可。 对于每个格子 表示成px * qy 每次支持平移,删除一个点,加入一个点。对于平移操作,我们需要知道最小的x坐标和最小的y坐标,只要用2个multiset分别维护即可。 注意multiset删除的时候会把相同的值都删去,应该写成st.erase(st.find(val)) 而不是 st.erase(val).
- J: 基本策略是先弄出一个1, 然后弄出2 4 8 16... 128, 二进制表示即可。 构造出1: a = ? max ? b = a max a c = b max b.... 迭代个20次, 那么得到的数 几乎可以认为一定是255. 两个255除一下得到1, 或者直接把255当做-1来用。
附加文件
- 20170828.png by johann_wang
- code_D.cpp by johann_wang