Shopping
 
- 万物皆可构造
- 我们只关心最少的趟数
- 显然可以 
      
       
        
        
          t 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          → 
         
        
          t 
         
        
          [ 
         
        
          i 
         
        
          ] 
          
         
          
          
            m 
           
          
            o 
           
          
            d 
           
          
          
        
          2 
         
        
          L 
         
        
       
         t[i]\to t[i]\bmod 2L 
        
       
     t[i]→t[i]mod2L,然后直接加到答案里面
- 显然可以每走到一个商场停留 
      
       
        
        
          2 
         
        
          L 
         
        
       
         2L 
        
       
     2L时间购物,然后走到下一个商场,答案是 
      
       
        
        
          n 
         
        
          + 
         
        
          1 
         
        
       
         n+1 
        
       
     n+1
- 还是考虑依次处理每个商场
- 记 
      
       
        
        
          l 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          = 
         
        
          [ 
         
        
          t 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          ≤ 
         
        
          2 
         
        
          ( 
         
        
          L 
         
        
          − 
         
        
          x 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          ) 
         
        
          ] 
         
        
       
         l[i]=[t[i]\le 2(L-x[i])] 
        
       
     l[i]=[t[i]≤2(L−x[i])]
-  
      
       
        
        
          r 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          = 
         
        
          [ 
         
        
          t 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          ≤ 
         
        
          2 
         
        
          x 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          ] 
         
        
       
         r[i]=[t[i]\le 2x[i]] 
        
       
     r[i]=[t[i]≤2x[i]]
- 假设 
      
       
        
        
          i 
         
        
          < 
         
        
          j 
         
        
       
         i<j 
        
       
     i<j,并且 
      
       
        
        
          l 
         
        
          [ 
         
        
          j 
         
        
          ] 
         
        
          = 
         
        
          r 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          = 
         
        
          1 
         
        
       
         l[j]=r[i]=1 
        
       
     l[j]=r[i]=1,那么我在 
      
       
        
        
          2 
         
        
          L 
         
        
       
         2L 
        
       
     2L的时间内可以先到 
      
       
        
        
          j 
         
        
       
         j 
        
       
     j商场,购物完后再回到 
      
       
        
        
          i 
         
        
       
         i 
        
       
     i商场,再从 
      
       
        
        
          i 
         
        
       
         i 
        
       
     i商场出发
- 注意到如果 
      
       
        
        
          l 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          = 
         
        
          1 
         
        
          , 
         
        
          r 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          = 
         
        
          0 
         
        
       
         l[i]=1,r[i]=0 
        
       
     l[i]=1,r[i]=0,那么 
      
       
        
        
          x 
         
        
          ≤ 
         
         
         
           L 
          
         
           2 
          
         
        
       
         x\le \frac{L}{2} 
        
       
     x≤2L
- 如果 
      
       
        
        
          l 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          = 
         
        
          0 
         
        
          , 
         
        
          r 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          = 
         
        
          1 
         
        
       
         l[i]=0,r[i]=1 
        
       
     l[i]=0,r[i]=1,那么 
      
       
        
        
          x 
         
        
          ≥ 
         
         
         
           L 
          
         
           2 
          
         
        
       
         x\ge \frac{L}{2} 
        
       
     x≥2L
- 因此只能 
      
       
        
        
          l 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          = 
         
        
          r 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          = 
         
        
          1 
         
        
       
         l[i]=r[i]=1 
        
       
     l[i]=r[i]=1与上述两种点匹配
- 显然 
      
       
        
        
          l 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          = 
         
        
          r 
         
        
          [ 
         
        
          i 
         
        
          ] 
         
        
          = 
         
        
          0 
         
        
       
         l[i]=r[i]=0 
        
       
     l[i]=r[i]=0的情况只能在原地等
- 注意细节,如果 
      
       
        
        
          l 
         
        
          [ 
         
        
          n 
         
        
          ] 
         
        
          = 
         
        
          1 
         
        
       
         l[n]=1 
        
       
     l[n]=1的话可以单独把这个点消掉让答案减少 
      
       
        
        
          1 
         
        
       
         1 
        
       
     1
- 复杂度 
      
       
        
        
          O 
         
        
          ( 
         
        
          n 
         
        
          ) 
         
        
       
         O(n) 
        
       
     O(n)
Snuke and Spells
 
- 考虑求出一个序列最多的不修改的球的数目
- 如果当前值为 
      
       
        
        
          x 
         
        
       
         x 
        
       
     x的球保留了 
      
       
        
        
          i 
         
        
       
         i 
        
       
     i个,那么下一个保留的球的值最多为 
      
       
        
        
          x 
         
        
          − 
         
        
          i 
         
        
       
         x-i 
        
       
     x−i
- 显然这个构造是合法的,因为被改变了的球可以任意填坑
- 显然可以暴力 
      
       
        
        
          d 
         
        
          p 
         
        
       
         dp 
        
       
     dp做到单次查询 
      
       
        
        
          O 
         
        
          ( 
         
        
          n 
         
        
          ) 
         
        
       
         O(n) 
        
       
     O(n)
- 但是这样太慢了考虑继续推性质
- 然后想歪了去推优化 
      
       
        
        
          d 
         
        
          p 
         
        
       
         dp 
        
       
     dp了
- 假设对于值 
      
       
        
        
          x 
         
        
       
         x 
        
       
     x覆盖区间 
      
       
        
        
          [ 
         
        
          x 
         
        
          − 
         
        
          i 
         
        
          + 
         
        
          1 
         
        
          , 
         
        
          x 
         
        
          ] 
         
        
       
         [x-i+1,x] 
        
       
     [x−i+1,x]
- 那么能保留的球的数目上界就是区间覆盖的并的长度
- 复杂度 
      
       
        
        
          O 
         
        
          ( 
         
        
          n 
         
        
          + 
         
        
          q 
         
        
          ) 
         
        
       
         O(n+q) 
        
       
     O(n+q)
- 说白了还是构造 
      
       
        
        
          d 
         
        
          p 
         
        
       
         dp 
        
       
     dp然后优化
Sorting a Grid
 
- 考虑暴力匹配
- 假设我们已经匹配了前 
      
       
        
        
          i 
         
        
          − 
         
        
          1 
         
        
       
         i-1 
        
       
     i−1列
- 考虑构造二分图完美匹配
- 证明利用Hall定理+鸽巢原理
- 复杂度 
      
       
        
        
          O 
         
        
          ( 
         
         
         
           n 
          
         
           4 
          
         
        
          ) 
         
        
       
         O(n^4) 
        
       
     O(n4)
Skolem XOR Tree
 
- 万物皆可构造
- 考虑菊花图的构造
- 水逆了呵呵考虑将 
      
       
        
        
          1 
         
        
       
         1 
        
       
     1作为根
- 显然不能只挂长为 
      
       
        
        
          1 
         
        
       
         1 
        
       
     1的链
- 为什么没有想到挂长为 
       
        
         
         
           2 
          
         
        
          2 
         
        
      2的链啊该死
- 我们只需要将剩下的点两两配对使得 
      
       
        
        
          x 
         
        
          ⊕ 
         
        
          y 
         
        
          = 
         
        
          1 
         
        
       
         x\oplus y=1 
        
       
     x⊕y=1
- 显然 
      
       
        
        
          n 
         
        
       
         n 
        
       
     n是奇数就做完了
- 显然 
      
       
        
        
          n 
         
        
       
         n 
        
       
     n是偶数的话 
      
       
        
        
          n 
         
        
          = 
         
         
         
           2 
          
         
           k 
          
         
        
       
         n=2^k 
        
       
     n=2k是无解的
- 显然直接找 
      
       
        
        
          lowbit(n) 
         
        
          → 
         
        
          1 
         
        
          → 
         
        
          n 
         
        
          − 
         
        
          lowbit(n)+1 
         
        
       
         \text{lowbit(n)}\to 1\to n-\text{lowbit(n)+1} 
        
       
     lowbit(n)→1→n−lowbit(n)+1即可
Two Histograms
 
                
 
             
            posted @ 
2022-07-22 10:25 
仰望星空的蚂蚁 
阅读(
14) 
评论() 
 
收藏 
举报
 来源