这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
2020-2021:teams:die_java:front_page_summertrain7 [2020/07/31 16:42] fyhssgss [训练结果] |
2020-2021:teams:die_java:front_page_summertrain7 [2020/07/31 17:06] (当前版本) fyhssgss [训练实况] |
||
|---|---|---|---|
| 行 5: | 行 5: | ||
| ===== 训练结果 ===== | ===== 训练结果 ===== | ||
| - | * 时间:''2020-07-27 12:00~17:00'' | + | * 时间:2020-07-27 12:00~17:00 |
| - | * rank:''36/1019'' | + | * rank:36/1019 |
| - | * 完成情况:''7/8/11'' | + | * 完成情况:7/8/11 |
| ===== 题解 ===== | ===== 题解 ===== | ||
| 行 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了一发。。这也是罚时增加的原因。以后看队友代码的时候要多问。 |