首页 > 其他分享 >Tower Defense (分块+差分的差分+优化空间方法, 主席树做法待补)

Tower Defense (分块+差分的差分+优化空间方法, 主席树做法待补)

时间:2022-10-26 11:23:43浏览次数:70  
标签:暴力 待补 差分 flag Defense 时间 预处理 根号

题目大意: 

 

 思路:

  • 这题难点在于每一秒会恢复值而且(mi+ri,ci) 有一个阈值. 
  • 发现 一个点被清理后, 他的恢复有3个状态, 一次恢复 ri的值, 当 t<ci/ri, 恢复 ci%ri值 当t=[ci/ri ]+1(且是除不尽时) ,然后就时恢复 0, 当t>前面的时间
  • 又发现 总共恢复的时间不会超过 2*10; 那么就预处理差分的差分求每一个块的值, 第二个差分是没秒恢复多少差值.
  • 预处理时间是 n根号n; 刚好1s
  • 在对每一块弄一个flag元素
  • 对怪每一次处理块时,看 这个块是否被一次性杀了, 是 又看他的值能不能杀掉怪怪物,能就暴力处理, 不能就杀光,flag=1, 去下一个块
  • 没有被一次性杀, 就暴力处理.  时间复杂度分析: 由于每一个怪物最多留下一个要我们暴力处理的块,(处理后会flag=1,或者暴力还是他) 所以这里会增加n根号n时间
  • 总时间2 n根号n, 题目时间是4s, 不会超过
  • 但是空间复杂度会超过, 怎么办呢?
  • 考虑\,用当前块的时候,才预处理这个块. 这样空间为 n. 
  • 用块来作为外层循环, 怪物作为内存循环(离线查询)

标签:暴力,待补,差分,flag,Defense,时间,预处理,根号
From: https://www.cnblogs.com/Lamboofhome/p/16827613.html

相关文章

  • 差分
    差分一维差分例题——差分输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l,r,c,表示将序列中\([l,r]\)之间的每个数加上c。请你输出进行......
  • Codeforces Round #802 (Div. 2)C. Helping the Nature(差分)
    题目链接题目大意:给你一个有n个元素的数组a,你可以通过一下三种操作使数组的每一个值都为0:选择一个下标i,然后让a[1],a[2]....a[i]都减一;选择一个下标i,然后让a[i......
  • 区间问题----差分+离散化+前缀和
     《二维离散化+二维前缀和+二维双指针算法+二分+以点代二维区间》思路:首先,利用二分,将求解问题变成判断问题,二分边长关于在二维平面上的任意区域的数值问题可......
  • 二重差分
    题目链接题目大意:小明在游戏中搭建了一堵长为的城墙,墙上有个支撑点。为了知道墙是否足够坚固,小明喊来他的好朋友小刚帮助他进行测试。小刚有一种特殊的炮弹可以对墙......
  • POJ 1201 Intervals 差分约束
    ​​http://poj.org/problem?id=1201​​TLE了很久,因为用了cin.....思路和其他差分约束差不多,​​http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html​​......
  • Gym - 101147J Whistle's New Car 树上差分
    J.Whistle'sNewCartimelimitpertestmemorylimitpertestinputoutputWhistlehasboughtanewcar,whichhasaninfinitefueltankcapacity.Hediscoveredani......
  • 运用离散化缩小不必要的范围+差分:只通过对两个区间的端点进行加减操作即可使这段区间
    原题链接:https://codeforces.com/gym/403650/problem/C   题目的原意是:给定n个区间,求1-1e9这个数轴上,对于每一个数点,在给定区间上出现过的最大值一个最朴素的想法......
  • 【复习(雾)笔记】差分/树上差分
    差分/树上差分(雾)前言说实话,写这东西挺迷的,按道理说这玩意我应该会,但是做题的时候又不会,跟新学一样,就离谱。差分这东西就挺神奇的,前后加一减一就能维护区间。开始觉得......
  • 算法基础(五)| 差分算法及模板详解
    ⭐写在前面的话:本系列文章旨在复习算法刷题中常用的基础算法与数据结构,配以详细的图例解释,总结相应的代码模板,同时结合例题以达到最佳的学习效果。本专栏面向算法零基础但有......
  • 前缀和、差分
    前缀和类似于数列,s[i]=s[i-1]+a[i],  s[r]-s[l-1]等于l到r的所有项之和  求前缀和运算:constintN=1e5+10;intsum[N],a[N];//sum[i]=a[1]+a[2]+a[3]......