这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
2020-2021:teams:die_java:front_page_summertrain7 [2020/07/31 16:41] fyhssgss 创建 |
2020-2021:teams:die_java:front_page_summertrain7 [2020/07/31 17:06] (当前版本) fyhssgss [训练实况] |
||
---|---|---|---|
行 27: | 行 27: | ||
但是!!!为什么那么操作就一定是最优的?出题人也表示不知道,所以这可能是一个错题。 | 但是!!!为什么那么操作就一定是最优的?出题人也表示不知道,所以这可能是一个错题。 | ||
- | <hidden><代码> | + | <hidden 代码><code cpp> |
#include<bits/stdc++.h> | #include<bits/stdc++.h> | ||
using namespace std; | using namespace std; | ||
行 82: | 行 82: | ||
return 0; | return 0; | ||
} | } | ||
- | </code></hideen> | + | </code></hidden> |
===== B.Binary Vector ===== | ===== B.Binary Vector ===== | ||
行 93: | 行 93: | ||
对于每加到第$i$个向量时,有$2^n-2^i$个向量线性无关,每次乘上概率$P = \frac{2^n-2^i}{2^n}$即可 | 对于每加到第$i$个向量时,有$2^n-2^i$个向量线性无关,每次乘上概率$P = \frac{2^n-2^i}{2^n}$即可 | ||
- | <hidden><代码> | + | <hidden 代码><code cpp> |
#include<algorithm> | #include<algorithm> | ||
#include<iostream> | #include<iostream> | ||
行 142: | 行 142: | ||
return 0; | return 0; | ||
} | } | ||
- | </code></hideen> | + | </code></hidden> |
===== C.Combination of Physics and Maths ===== | ===== C.Combination of Physics and Maths ===== | ||
行 153: | 行 153: | ||
答案肯定只有一列,而且要尽可能多的往上选,所以我们枚举每个点,把上面的全选了,求最大值即可。 | 答案肯定只有一列,而且要尽可能多的往上选,所以我们枚举每个点,把上面的全选了,求最大值即可。 | ||
- | <hidden><代码> | + | <hidden 代码><code cpp> |
#include<iostream> | #include<iostream> | ||
#include<cstdio> | #include<cstdio> | ||
行 190: | 行 190: | ||
return 0; | return 0; | ||
} | } | ||
- | </code></hideen> | + | </code></hidden> |
===== E.Easy Construction ===== | ===== E.Easy Construction ===== | ||
行 205: | 行 205: | ||
偶数:8 4 1 7 2 6 3 5 | 偶数:8 4 1 7 2 6 3 5 | ||
- | <hidden><代码> | + | <hidden 代码><code cpp> |
#include<bits/stdc++.h> | #include<bits/stdc++.h> | ||
using namespace std; | using namespace std; | ||
行 245: | 行 245: | ||
return 0; | return 0; | ||
} | } | ||
- | </code></hideen> | + | </code></hidden> |
===== G.Grid Coloring ===== | ===== G.Grid Coloring ===== | ||
行 264: | 行 264: | ||
注意特判$k$和$n$等于$1$的情况! | 注意特判$k$和$n$等于$1$的情况! | ||
- | <hidden><代码> | + | <hidden 代码><code cpp> |
#include<algorithm> | #include<algorithm> | ||
#include<iostream> | #include<iostream> | ||
行 393: | 行 393: | ||
return 0; | return 0; | ||
} | } | ||
- | </code></hideen> | + | </code></hidden> |
===== H.Harmony Pairs ===== | ===== H.Harmony Pairs ===== | ||
行 404: | 行 404: | ||
$ f[i][j][1/0]$ 表示从 $i$ 位往后所有位上和为 $j$ 且高位是否有限制的数字的数目,dp的时候当前为从大往小dp并同时用树状数组统计答案。 | $ f[i][j][1/0]$ 表示从 $i$ 位往后所有位上和为 $j$ 且高位是否有限制的数字的数目,dp的时候当前为从大往小dp并同时用树状数组统计答案。 | ||
- | <hidden><代码> | + | <hidden 代码><code cpp> |
#include<iostream> | #include<iostream> | ||
#include<cstdio> | #include<cstdio> | ||
行 510: | 行 510: | ||
return 0; | return 0; | ||
} | } | ||
- | </code></hideen> | + | </code></hidden> |
===== J.Josephus Transform ===== | ===== J.Josephus Transform ===== | ||
行 521: | 行 521: | ||
对于每一个操作,先用线段树在$O(nlogn)$时间内快速模拟把$k$约瑟夫环的删除序列做出来,这个显然是一个置换,然后将置换倍增即可。 | 对于每一个操作,先用线段树在$O(nlogn)$时间内快速模拟把$k$约瑟夫环的删除序列做出来,这个显然是一个置换,然后将置换倍增即可。 | ||
- | <hidden><代码> | + | <hidden 代码><code cpp> |
#include<bits/stdc++.h> | #include<bits/stdc++.h> | ||
using namespace std; | using namespace std; | ||
行 609: | 行 609: | ||
return 0; | return 0; | ||
} | } | ||
- | </code></hideen> | + | </code></hidden> |
===== K.K-Bag ===== | ===== K.K-Bag ===== | ||
行 624: | 行 624: | ||
2、$k \leq n$这个时候序列由中间若干个完整的排列加上左右不完整的排列,同样先记录左右最远延伸距离,同时用$dp$计算每个位置为结束位置时中间完整排列的最长距离,判一下配合左右能否覆盖整个序列即可 | 2、$k \leq n$这个时候序列由中间若干个完整的排列加上左右不完整的排列,同样先记录左右最远延伸距离,同时用$dp$计算每个位置为结束位置时中间完整排列的最长距离,判一下配合左右能否覆盖整个序列即可 | ||
- | <hidden><代码> | + | <hidden 代码><code cpp> |
#include<algorithm> | #include<algorithm> | ||
#include<iostream> | #include<iostream> | ||
行 698: | 行 698: | ||
return 0; | return 0; | ||
} | } | ||
- | </code></hideen> | + | </code></hidden> |
===== 训练实况 ===== | ===== 训练实况 ===== | ||
- | 开局fyh看**E**,wxg和hxm看**K**, 12:33 fyh过**E** 之前hxm写**K** wxg看**C** 12:39 hxm过**K** 12:46 wxg过**C** 12:46 fyhhxm发现**B**的规律,直接写结论 12:59 hxm过**B**,一起想**G**,**H** 之间:hxm想出**G**的构造,wxg在写**H** hxm和fyh调**G** 15:27 发现bug hxm过**G** 15:46 wxg过**H** 16:00 **A**放弃,想出**J** 16:39 wxg调过**J** | + | 开局fyh看**E**,wxg和hxm看**K**, |
+ | |||
+ | 12:33 fyh过**E** 之前hxm写**K** wxg看**C** | ||
+ | |||
+ | 12:39 hxm过**K** | ||
+ | |||
+ | 12:46 wxg过**C** | ||
+ | |||
+ | 12:46 fyhhxm发现**B**的规律,直接写结论 | ||
+ | |||
+ | 12:59 hxm过**B**,一起想**G**,**H** | ||
+ | |||
+ | 之间:hxm想出**G**的构造,wxg在写**H** hxm和fyh调**G** | ||
+ | |||
+ | 15:27 发现bug hxm过**G** | ||
+ | |||
+ | 15:46 wxg过**H** | ||
+ | |||
+ | 16:00 **A**放弃,想出**J** 16:39 wxg调过**J** | ||
===== 训练总结 ===== | ===== 训练总结 ===== | ||
行 709: | 行 728: | ||
hxm:本场前期过题速度较快,但中期两道题做的较慢,导致最后罚时并不是很理想,尤其是$G$题没有注意特殊情况,花费了很多时间与罚时 | hxm:本场前期过题速度较快,但中期两道题做的较慢,导致最后罚时并不是很理想,尤其是$G$题没有注意特殊情况,花费了很多时间与罚时 | ||
- | fyh: | + | fyh:最后写J的时候倍增的数组开错,导致又RE了一发。。这也是罚时增加的原因。以后看队友代码的时候要多问。 |