思维
zlq7777
icpc区域赛银
展开
-
F. Dasha and Nightmares (异或hash
分析:线性枚举,统一算贡献,发现当枚举过去的时候,没后效性,所以只要算出枚举到当前情况之前的累计,发现没法直接查询,这里就要想到用 hash 压缩表示状态;然后对于每一个位置是空的要单独算;题意:给你 2e5 个字符串,总长不超过 5e6 ,输出多少对字符串两两组合之后,满足 1.长度是奇数 2.不同的字母恰好25个 3.每个字母出现次数都是奇数;原创 2023-03-03 17:15:46 · 112 阅读 · 0 评论 -
G2. Teleporters (Hard Version) 【二分
分析:首先发现每个点实际的贡献就是(min(a[i] + i, a[i] + n - i + 1)),但是不能直接排序算,因为我们必须从 0 号点出发,第一个位置是独立的,思考了一会没啥办法,无奈只能将这一维枚举,再考虑如何用 logn 的时间复杂度算出每个起点的最大个数,一开始想着用个堆维护一下,但复杂度太高,再想着离线,排序之后,再利用单调性二分再降复杂度,直接排序后前缀和处理好直接二分。然后再特判一下开头点是否在二分后的区间就好了。原创 2023-02-25 19:00:10 · 188 阅读 · 0 评论 -
D. Chat Program(22南京
分析:真的很惭愧,当时看到第 K 大,一眼数据结构,直接跑偏了,想了半天(明知不对就不能再硬想了)。本来这样就不是正确的思考方式。对于最大值,考虑二分,对于第K大,只要处理后区间>=mid的个数多于K个即可,正常做肯定是 nm 的,想着优化肯定就是要优化掉 等差数列 那个复杂度,思考一下就能知道,每个位置能直接算出覆盖区间,所以在枚举的时候直接算出左右端点,最后跑一遍前缀和即可;题意:给一个 n(2e5)长的数组,再给一个等差数列,问最多执行一次(添加等差数列)后的最大第 K 大是多少。原创 2023-02-24 11:04:07 · 431 阅读 · 0 评论 -
E. Explosions?(思维+单调队列
得明白两个事:预处理每个数减去坐标之后,只要不减就一定是能满足的,所以对队尾如果比当前的大,那么要减去长度*差值——使满足不减的性质【把山峰不断削平的一个过程】;然后还得处理队头,这里我有个一直想不明白的点:为啥只要处理队头就行了 —— 是因为如果有上一步的合并操作,有可能会使得长度超过他本身的最大长度(本身就是。分析:略加思考会想到实际上就是找一个最大的金字塔,两侧都是平原,但实际上并不完全是,因为两侧斜率可以不一样;,你有两种操作,一种花费 1 MP减少一个怪的一格血量,可以操作任意次;原创 2023-02-18 12:52:04 · 397 阅读 · 1 评论 -
D. Tournament Countdown 【交互+分治优化(1800
但是这个不满足,考虑分治优化(个人思路,可以类比冒泡排序和归并排序的思路,线性可以分治优化,这个还是很妙的),发现如果当只剩两个的时候,直接一次询问即可,剩四次的时候,发现只要两次即可;个人按顺序就排列,两两进行锦标赛,每次可以询问两个人,然后可以知道谁赢的多(或者一样多)。分析:首先有个很直接简单的思路就是从1开始询问,不断的找出赢场最大的那个人,复杂度是。原创 2023-01-27 22:21:12 · 73 阅读 · 0 评论