2019 CCPC-Wannafly Winter Camp
CaprYang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
comet OJ 热身赛 C. eustia 贪心
题解贪心合并 合并策略每次尽量合并为较大的继续合并先从小到大排序 从第二个开始如果和上一个相比大于m则ans++AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;const in...原创 2019-01-19 15:31:49 · 804 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1 (Div2, onsite) I 起起落落 dp
题解题目可以理解为让你统计持续下降的子序列个数 持续下降子序列可以理解为前三个点的值 左>右>中 再往后平移两个位置依旧满足条件的子序列令d[i]表示以i为结尾的子序列个数 遍历每个位置i 记录可以作为中心点的个数k j从i-2遍历之前处理过的答案如果p[j] < p[i]那么他可以作为i的一个中点k++ 如果p[j] > p[i]那么以j为结尾的子序列都可以接上k和...原创 2019-01-25 20:26:53 · 647 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1 (Div2, onsite) A 机器人 分类讨论
题解圆圈表示特殊点 X表示必经点 S表示起点左上角图表示找到经过X至少要经过最左最右必经点lr 使用数组排序二分查找题目一共分四种情况(图片参考至某大佬) 代码将12和34合并为两种情况最开始vec数组只保存题目所给特殊点 求出b线路最左最右必经点bl,br 之后加入起点s重新排序求出a最左最右必经点al,ar(情况1)如果b站点没有点直接输出a区间长度(ar-al)*2+s点到ar或...原创 2019-01-26 11:27:54 · 714 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day7 (Div2, onsite) A 迷宫 思维
题解题意可以理解为一个点上同时只能存在一个人 只要前面没人挡着每秒所有人都可以向出口移动一个单位考虑两个队的人排队的人合并为一队方式 同一排的人会合并在一起 也就是BFS同层的节点会合并在一起但是每秒也只能移动一个单位 所以即使前面有很大的空位也只能向前走一步不需要真的记录整个队伍 只需要记录队伍的最后一个人的距离就是答案 使用k记录最后一个人即k = max(d, k + 1)如果同层没...原创 2019-01-26 18:01:14 · 765 阅读 · 2 评论 -
CCPC-Wannafly Winter Camp Day7 (Div2, onsite) E 线性探查法 模拟 贪心
题解b数组一定有数值%n==位置的元素 这个是无碰撞直接插入的元素 使用set维护所有当前插入的元素 所有无碰撞的元素直接加入set每次取出数值最小的元素插入 插入后会影响到后面第一个空闲位置 检测他出现的位置和直接取模之间的所有元素是否已经插入 如果是则将他加入set作为备选AC代码#include <stdio.h>#include <bits/stdc++.h&g...原创 2019-01-26 18:06:35 · 465 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day7 (Div2, onsite) G 抢红包机器人 暴力
题解数据范围很小 直接N^2暴力即可 接受每个红包抢得顺序 按照题意人不可能比机器人抢得快所以在前面的一定是机器人 后面向前面建一条有向边假设第i个人为机器人 从i点出发DFS统计经过点的数量取min即可(包含未抢红包的是机器人情况)AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std...原创 2019-01-26 18:11:03 · 475 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day5 (Div2, onsite) J Special Judge 计算几何
题解题意的交点可以理解为两种 1常规相交如X形 2交点不是都是两个线段的端点如T形和…__…下划线表示重叠位置直接套计算几何模版(以下代码使用kuangbin大大的计算几何模版直接复制粘贴五删减篇幅过长233)判断交点是否常规相交 非常规相交判断一个线段的端点在另一个线段上要求这个端点不能等于另一个线段的两个端点AC代码#include <stdio.h>#include ...原创 2019-01-26 22:19:55 · 522 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day4 (Div2, onsite) G 置置置换 dp
题解令d[i][j]表示长度为i最后一个位置为j的数量 从2开始枚举位置i和结尾 奇数由i-1的小于j的状态转移 偶数由大于j的状态转移大于j的情况下 如果当前选为j之前也会出现过j的情况 可以把那一部分大于等于j的状态都理解为+1后的状态如d[4][2]由d[3][3]的{2, 1, 3}转移来可以看作是{3, 1, 4} 所以转移包含j使用前缀和数组优化加法直接计算 s[i - 1]...原创 2019-01-26 23:43:34 · 403 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day8 (Div2, onsite) G 穗乃果的考试 暴力
题解根据输入nm O(N^2)暴力打出行和列每个位置∑nm的覆盖次数h和l 使用差分+前缀和优化加法接受数据的同时计算答案 如果当前位置为1则加上覆盖次数 即ans += a[i][j]*h[i]*l[j]AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long...原创 2019-01-27 21:40:01 · 706 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day2 (Div2, onsite) B Erase Numbers I 暴力 贪心
题解如果要删除一个数字肯定是要删除长度最短的 拼接起来的字符串越长才会越大 考虑删除2个数字肯定是要在删除1个的基础上进行所以先删一个再删一个 枚举删哪个然后直接string拼接字符串记录最优答案和要删除的下标 两次O(N^2)暴力即可AC代码#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;bits/stdc++.h&amp;amp;gt;usin原创 2019-01-28 22:35:36 · 384 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day4 (Div2, onsite) A 夺宝奇兵 思维
题解按照题意从1到n再从n到1且每个点都有两个不能重复经过 (1)表示同编号第一个点(2)第二个点 则ai到ai+1只有两种情况ai(1)~ai+1(1)和ai(2)~ai+1(2) 或者 ai(1)~ai+1(2)和ai(2)~ai+1(1)直接两种情况取min 再加上an(1)到an(2)的距离即可AC代码#include <stdio.h>#include <b...原创 2019-01-28 23:07:05 · 252 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day4 (Div2, onsite) C 最小边覆盖
题解按照题意尽量的使用最少的边把每个点至少覆盖一次 则如果有一条边两段度数都大于1则这条边可以删去所以只需要检测输入的边两端点度数是否大于1即可AC代码#include <stdio.h>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int INF = 0x3f...原创 2019-01-28 23:25:41 · 198 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1 (Div2, onsite) C 拆拆拆数 数论
题解ab两个数字如果互质直接输出a和b 如果不互质则在10以内暴力就可以得到答案 为什么是这样我也不清楚哈哈 当作一个结论记了AC代码#include &lt;stdio.h&gt;#include &lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;l...原创 2019-01-25 17:38:10 · 598 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1 (Div2, onsite) E 流流流动 树形dp
题解按照题意将节点之间连线后 每个联通块无环但是整体不一定联通 使用并查集将每个集合都跟0号节点连一根线 建立以0为根的树使用树形dp d[i][0/1]表示以i为根的子树i这个节点1选/0不选的最大收益 DFS从0遍历整棵树回溯后计算d如果不选当前节点x则直接加上子节点y选或者不选 即d[x][0] += max(d[y][0], d[y][1])如果选当前节点x从子节点y转移时候 如果...原创 2019-01-25 17:15:25 · 469 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day5 (Div2, onsite) H Nested Tree 树形dp
题解按照题意 将m课树合并为一颗树 题目保证合并后必定为一棵树且端点数量不超过n*m&amp;amp;lt;=1e6 遍历所有节点不会超时使用树形dp d[i]表示以i为根的子树节点数量 使用DFS递归回溯计算d的值 n*m-d[i]表示以d的父节点为根的子节点数量(把树反转过来)则每次把ans加上d[i]*(n*m-d[i])可计算i节点与父节点连接的边对答案的贡献AC代码...原创 2019-01-24 19:37:28 · 386 阅读 · 0 评论 -
comet OJ 热身赛 E. dijkstra dijkstra
题解利用距离公式建边跑dijkstra两条线距离c1-c2/sqrt(aa+bb) 线与圆利用点到直线距离-圆半径与0取max 圆到圆直接点距离公式-半径与0取maxAC代码#include &lt;stdio.h&gt;#include &lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;const int...原创 2019-01-19 15:37:33 · 675 阅读 · 0 评论 -
comet OJ 热身赛 H. checkin
AC代码#include &lt;stdio.h&gt;#include &lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;const int INF = 0x3f3f3f3f;int main(){#ifdef LOCAL //freopen("C:/input.txt", &quo原创 2019-01-19 15:38:28 · 585 阅读 · 0 评论 -
comet OJ 热身赛 K. principal 括号匹配
题解使用栈模拟括号匹配 栈内存储元素的下标 使用b数组记录栈顶下标栈顶下标表示着当前位置栈剩余未匹配的下标 最后对于每个q检测b数组b[r]==b[l-1]如果相等则表示范围内括号被匹配掉AC代码#include &lt;stdio.h&gt;#include &lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;...原创 2019-01-19 15:42:11 · 509 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1 (Div2, onsite) B 吃豆豆 dp | 分层BFS
题解将二维平面增加两个维度 一个已经获得的糖豆数量 另一个为当前位置距离下次获得糖豆的剩余时间 进行分层BFSBFS过程中队列节点记录坐标、已获得数量、已用时间 当已用时间%当前位置t[i][j]==0时则获得一个 标记已经走过的不再重复AC代码#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;bits/stdc++.h&amp;amp;gt;usi原创 2019-01-20 18:07:58 · 681 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1 (Div2, onsite) F 爬爬爬山 dijkstra
题解根据题意 当wls下降一定高度再回到原始高度之后体力值也会回复为原有值可以将题意简化为如果想要登上高度大于h[1]+k高度的山时要将山缩减为h[1]+k的高度按照这个规律建图 将无向边拆分为两条 通往高度大于h[1]+k的山的边代价增加与h[1]+k的高度差和0取max后平方建图完毕后直接跑dijkstra加堆优化即可AC代码#include &amp;lt;stdio.h&amp;gt;#in...原创 2019-01-20 18:08:24 · 585 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day1 (Div2, onsite) J 夺宝奇兵 暴力 贪心
题解考虑枚举一维k 表示先将宝物数量大于k的人手中宝物全部买下 这时所有人的宝物都小于k 只需要将自己手中宝物数量通过购买最便宜的宝物补足k即可AC代码#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;typedef long long ll;const ll LINF = 0x3f3f3f3f3f3f3f3f;const int ...原创 2019-01-20 18:09:20 · 640 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day2 (Div2, onsite) A Erase Numbers II 暴力
题解本题目是可以使用N^2暴力飘过的 ij枚举两个数字注意题目要求不能改变顺序 使用add函数将两个整数拼接在一起求最大值即可不能使用字符串拼接 使用整数时两个1e9拼接在一起会超过long long范围 使用unsigned long long存储AC代码#include &lt;stdio.h&gt;#include &lt;bits/stdc++.h&gt;using names...原创 2019-01-21 22:42:00 · 229 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day4 (Div2, onsite) I 咆咆咆哮 贪心 暴力
题解考虑如果选择b肯定是在所有的a使用完毕后再使用数据量1000枚举a的使用量i 计算每个数值选择a比选择b高出的收益然后降序排序并选择前i个答案取max即可AC代码#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;typedef long long ll;const int IN原创 2019-01-23 20:32:38 · 470 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day5 (Div2, onsite) A Cactus Draw
题解建图后将度最大的节点作为根 行坐标为节点深度 使用l数组记录每行最后一个点的位置每次++xy坐标限制在n范围内即使是一条链也可以满足 兄弟节点在同一行的坐标并依次往后排列 最后按照节点序号输出答案AC代码#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;bits/stdc++.h&amp;gt;using namespace std;typedef long lo.原创 2019-01-24 19:23:49 · 492 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day5 (Div2, onsite) C Division 贪心
题解每次选取最大的数字进行除2收益最大 使用优先队列存储选取最大值后再加入队列k范围在1e9内 最多1e5个数字 每个值最多1e9所以最多进行nlogv次就能将数值全变为0 当队首为0时推出循环AC代码#include &lt;stdio.h&gt;#include &lt;bits/stdc++.h&gt;using namespace std;typedef long long ...原创 2019-01-24 19:30:20 · 498 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day5 (Div2, onsite) F Kropki 状压dp
题解使用状压dp d[i][j][k]表示当前长度为i最后的位置使用j并且已经使用的状态为k的情况下方案数量从前向后推 枚举每个位置 枚举当前位置使用的数字枚举下个位置使用的数字枚举所有状态进行转移 如果满足条件则直接加上当前数量注意2倍关系是双向的AC代码#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;bits/stdc++.h&amp;gt;using name.原创 2019-01-24 19:36:42 · 489 阅读 · 0 评论 -
CCPC-Wannafly Winter Camp Day2 (Div2, onsite) K Sticks 暴力 折半枚举
题解一共12根木棒如果直接DFS每3根分一组复杂度非常高再乘上6000组样例直接爆炸 先使用DFS枚举状态 每次只枚举一半12根里面选6根另外6根自然也确定了 再从6根里面选3根同理剩下三根自然也会确定 这样复杂度就会将C(12, 6)*C(6, 3)*常数枚举出来的状态前一半处理过程中状态取反已经将后面的包含了 所以只需要用前一半即可AC代码#include <stdio.h&g...原创 2019-01-30 00:42:47 · 572 阅读 · 0 评论
分享