solution

DAY1

A  UVAlive 3937 painting the sticks

给你一些木棒,按照给定的颜色序列染色,每次最多可以染连续的3块(每块的颜色可以不一样),每块可以由任意多个连续木棒组成,求最少步数。

题目里有说不允许覆盖染色吗?统计不同的颜色块的个数,除以3并向上取整就是答案了。。

B UValive3938 "Ray, Pass me the dishes!"

给一个长度为n的序列,有m个询问,每次询问某个区间内的和最大的子区间

线段树问题,对于线段树上的每个节点维护ans,以及前缀和的最大值,最小值,但需要注意的是对于[l,r]这个区间,要维护[l-1,r-1]区间的前缀和最小值。

C UVAlive3939  Plucking fruits

给你一张无向图,和m个询问,每次询问从a到b存不存在一条路径,路径上每条边的权值都大于c 

最小瓶颈生成树,离线解决,先将边权从大到小排序,依次加边,在加边Wi之前,处理所有c大于Wi,且小于等于W(i-1)的询问,如果此时a和b在一个集合里,就是存在,反之则不存在,因为以后添加的边权都会小于c。

F - Remember the Word UVAlive3941

给你一个字符串T, 和一个包含很多字符串的集合, 问集合中的字符串组成T的方案数

DP  f[i] 表示组成T[1...i]的方案数 f[j] = f[j] + f[i]  if s[i+1...j] in set 

用trie树 优化递推, 可以减少不必要的状态转移

G - Liking's Letter UVAlive3943

求一个字符串中出现次数超过1次的最长子串

后缀数组,直接取高度数组中的最大值即可,但此题对时间要求很高,快速排序版本的过不了,用的基数排序才勉强过的。。。

I  Cake slicing UVAlive3944

切蛋糕,使得每块蛋糕里有且只有一个草莓,每切一刀都有一个代价,求最小代价。

dp 用 f[i,j,k,l] 表示一个该问题的子问题,求解每个子问题,记忆化搜索。但要预处理一下每个方块有多少个草莓。

 

DAY2

A Ginkgo Numbers UValive6182

定义一种数和相应的乘法,求给定的一个gingo number 是不是素数

题目中给出了一个gingo number 是另一个 gingo number 的因子的充要条件, 利用这个充要条件暴力求解即可,数据规模很小。

C - One-Dimensional Cellular Automaton uvalive6184

矩阵乘法+快速幂的裸题

D - Find the Outlier UVAlive6185

给你一个多项式函数的阶数d,并给出0....d+2对应的函数值,其中有一个是错误的,找出来

枚举其中一个函数值,假设他是错的,将剩余的d+2的函数值构造成d+2个线性方程,含有d+1个未知数,进行高斯消元,判断是否有解,若无解则说明所枚举的即是答案

F - Never Wait for Weights  Uvalive6187

在某一时刻,会告诉你某两个点的之间的差值,或者询问你某两个点之间的差值是多少?回答所有的询问

并查集问题,需要维护附加信息,就是孩子与父亲的差值,官方说法叫做偏移量,路径压缩和合并的时候主意维护偏移量就可以了。

 

DAY3

A - Beer Problem

题意描述不说了,比较简单的费用流问题,注意图是无向图,一条边可以拆成两条有向边就可以

C - Black and White

逆时针给你一些点的坐标,保证连接起来是个封闭图形,求面积

因为每条边的方向不是平行于就是垂直于x轴,所以就特别简单了,枚举一遍即可

D - Integer Numbers

给你一个整数数列,修改最少的数使其成为单调递增且连续的数列

求a[i]-i, 然后找那个相同的数的个数最多的数,答案就是n-maxsum

E - Islands

题意描述就不说了, 并查集并添加附加信息s[i] 表示以i为根的集合中点的个数

对于每个点,先求出与之相邻的六个点的坐标,然后求出有几个集合,以及每个集合的规模,如果合并后的联通块的规模满足条件

就保留这个点。

I - Radio Waves

求一个最大的覆盖半径,使得相同频率的调频不会相互覆盖

将所有点对之间的距离排序,然后从小到大加入并查集里,在并查集中维护两个点之间的关系,遇到第一条边,加入并查集后发生了冲突,则停止。

 

DAY4

A - Elevator

大水。。

B - Continuous Login

给定一个数N, 用最少的1...n的前缀和组合

在比赛中队友发现了一个规律,最多就用三个。。所以直接暴力

一个直接枚举,二个的话,枚举一个,二分一个,三个就枚举两个,二分最后一个。。

D - Ranking System

模拟题, 多关键字排序,然后枚举统计,主意细节就可以了。

F - Calculate the Function

给你一个序列,和m个询问,每次询问区间[l,r]  Fi(Li) = ALi   Fi(Li + 1) = A(Li + 1)

for all x >= Li + 2Fi(x) = Fi(x - 1) + Fi(x - 2) × Ax       求F[r] 

线段树问题, 每个节点是一个矩阵, 区间合并时做矩阵乘法,然后对每个区间询问,就可以快速知道对应的矩阵

剩下的就比较简单了

I - ?(>_o)!

卖萌的题。。。

 

DAY5

A - Special Experiment

给你N个数,要求你去掉一些数,使得剩余的数任意两个的差值都不等于另外的M个数,并使和最大

枚举任意两个数,如果他们的差值等于那M个数中的某个,便在他们之间连一条边,最后求这张图的最大点权独立集。

题目暗示了这张图是棵树。。所以就很简单了,用树形dp即可。

F - Sum of Factorials

给你一个数,判断是不是一些斐波那契数字的和

背包问题。

 

转载于:https://www.cnblogs.com/ZGS1994/p/3840332.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值