2017icpc全国邀请赛(陕西)

本文是对2017年ICPC全国邀请赛的赛后总结,作者分享了比赛中的经验教训,包括热身赛中的算法问题以及正赛中的策略。在正赛中,详细讨论了B题的解决思路——通过交换区间内的数字来求最大连续子段和,C题的简单贪心解法,以及未能完成的A题和K题的解题思路。作者意识到现场决策和算法理解的重要性,并表达了对比赛准备不足的遗憾。
摘要由CSDN通过智能技术生成

赛后总结

首先想吐槽一下天花板会掉的酒店和自带不明黄色痕迹的床单
算了还是直接进入主题吧…..
热身赛爆零了,一道猜题意一道是二分贪心,一道是数位dp+数论,cf上面的题,强肛二分贪心结果没肛出来,真是蠢的不行.
正赛打的也很难看,先看到J题签到直接输出一个坐标就OK,
然后是B题,题意是给我们一个序列,然后可以把序列中任意两个数字进行交换,最多交换k次,求能够得到的最大连续子段和.一开始往DP那方面去想,但是没什么思路,而且当时已经过穿了的题目,后来灵机一动,枚举任意一个区间,然后把区间内前k小的数字和区间外前k大的数字进行交换.然后求一个最大值即可.
接下来是C题,队友想的,方法大概就是一个简单的贪心,没什么特别复杂的情况,直接贪心暴力就行,不过有个地方我觉得很可能会TLE,但是赛后出题人表示就是给一道简单的贪心签到,没造这种数据.过完三个题一个半小时吧当时是48名,银牌都没压力铜更是稳的不行,对于一个铁牌选手来说我当时心里已经非常激动,心态完全爆炸不太想写题目,这也导致我们后面直接崩溃.
A题题意是有一个一行n列的01矩阵A,和一个n*m的01矩阵B,给定这两个矩阵相乘后的矩阵(mod2),求A和B矩阵有多少种组合方案
三个小时没什么结果,还剩几十分钟的时候我仔细想一下想到枚举A里面的1的个数然后开始组合数乱搞,但是时间毕竟太紧了没写出来感觉好气,赛后想到公式应该是(2^n - 1) * (2 ^ (n * m - m)) 如果给定的矩阵是全0,则还要加上一个2^(m*n)
K题题意是一个人要去参加一个婚礼,目的地在坐标轴一个点上,当前在0点处,从一个点跳到下一个点需要一个单位时间,然后数轴上有一些点,可以向前跳yi步,但是要求必须连续走了zi步,问到达目的地的最少时间,(只能往前走不能往后走,总共10万个点)
出题人说这个题怎么最短路和dp都行,最短路建边应该不是很复杂,堆优化一些dijkstra应该就可以了,具体没想,想了一个dp方程
虽然数轴的数字比较大,有1e9,但是实际上我们只关心那些能跳的点,它要从哪里开始连续走,然后可以跳到哪里,因此实际上只有最多30万个点.
对于每一个点,它可以由前面的点走过来即,dp[i] = min(dp[j] + x[i] - x[j] )(0<= j < i)
同时i点可能由前面某些点跳到,枚举那些能跳到他的点j dp[i] = min(dp[i] , dp[j - zj] + zj) (这个地方要用map哈希一下),
虽然还没交(目前为止没有地方可以交),但是感觉应该差不多了,把代码贴一下 等什么时候能交的时候交一下看看.

#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<set>
#include<map>
#include<time.h>
#include<cstdio>
#include<vector>
#include<list>
#include<stack>
#include<queue>
#include<iostream><
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值