首页 > 其他分享 >做题笔记(四)

做题笔记(四)

时间:2024-11-12 11:10:05浏览次数:1  
标签:二分 text 笔记 即可 区间 diff 2800

CF1773H - Hot and Cold \(\text{diff:}2600\)

询问 \((x, y)\) 和 \((x + 1, y)\) 和 \((x + 1, y + 1)\) 即可将 \(x,y\) 坐标的范围减半,然后可以在 \(3\log _ 2 10^6 = 60\) 次询问左右解决这个问题。

CF725F - Family Photos \(\text{diff:}2900\)

发现有些东西 \(A,B\) 都不会选,扔掉,有些东西只有 \(A\) 或者 \(B\) 会选,直接加上权值。

此外的东西都是两者想要争取的,将其按照 \(a + b\) 排序,那么从前向后取就是最优的,证明考虑临项交换。

重在简化题意,从而套用经典的贪心。

gym104768M - Flipping Cards

二分中位数,求最大字段和即可。

gym104768G - Hard Brackets Problem

小细节题,发现前面大多数都是照抄,唯一的区别在于如果后面的一组括号是匹配的,那么可以省去一些右括号。

gym104768K - Randias Permutation Task

从 \(nm \le 180\) 入手数据点分治一下。

\(m \le 18\) 的时候,直接 \(\mathcal{O}(n^2 2^m)\) 暴力搜索即可。

\(m > 18\) 的时候 \(n < 10\),那么排列数量很少,直接 DP 即可。

gym104768I - Barkley II

转化为求区间种类数 - mex 的最大值。

直接扫描线加上势能线段树即可,先计算 \([1, i]\) 的答案,然后删去 \(a_1\),变成 \([2, i]\),依此类推。

gym104768B - The Game

发现把最大值对齐就好了,然后为了在 \(n-m\) 次内做好,需要一些冗余操作,这个可以通过每次选最小值得到,可以线段树上二分(可能有更简单的做法)。

感觉现在缺乏的是思维上的方向和技巧,NOIP 前还是专心这一块。

CF1375G - Tree Modification \(\text{diff:}2800\)

考虑弱化性质。

题目给的是树,但是操作改变了树的形态,不方便 DP 之类,但是树是二分图,从二分图染色的角度分析容易发现答案就是黑白点个数的最小值减一。

这种思想在 CF1149C 也有提到,不考虑要求的直径,只是考虑所有的链。

CF461D - Appleman and Complicated Task \(\text{diff:}2800\)

首先观察到第一行确定就能确定整个图,那么每个限制都映射到第一行上的一个区间内的奇(偶)数,分开奇偶,利用并查集统计答案即可。

CF1408G - Clusterization Counting \(\text{diff:}2700\)

题目给了一个很怪的限制,组内边小于组外边,按值从小到大加入边,思考一下可以得到一个东西能被划分出来当且仅当这是个团。

计数的话考虑上述过程还可以求出其 Kruskal 重构树,那么就是一个子树。

CF1767E - Algebra Flash \(\text{diff:}2500\)

最小权点覆盖等于总和减去最大权独立集。

然后使用 Meet-in-Middle 求解即可。

CF1422F - Boring Queries \(\text{diff:}2700\)

对于小于根号的数字直接稀疏表维护最大值即可。

对于大于根号的情况,一个数字至多有一个这样的因子,那么相当于区间内不同数字的乘积,使用主席树区间乘法,单点查询即可。

区间乘法用标记永久化代替。

CF580E - Kefa and Watch \(\text{diff:}2500\)

字符串 \(s[l,r]\) 循环节长度为 \(x\),等价于 \(s[l,r-x]=s[l+x,r]\)。

CF1371F - Raging Thunder \(\text{diff:}2800\)

线段树维护反转的简单方法是对于正反各自维护信息,操作时交换即可。

标签:二分,text,笔记,即可,区间,diff,2800
From: https://www.cnblogs.com/z-t-rui/p/18541366

相关文章

  • Mit6.S081笔记Lab7: Multithreading 多线程
    课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/thread.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/threadxv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相......
  • 《Django 5 By Example》阅读笔记:p17-p53
    《Django5ByExample》学习第2天,p17-p53总结,总计37页。一、技术总结1.数据库迁移pythonmanage.pymakemigrationsblogpythonmanage.pysqlmigrateblog0001pythonmanage.pymigrate2.ORMDjango自带ORM。3.view(1)定义p42,ADjangoviewisjustaPythonfuncti......
  • 软考架构案例分析-重点回顾笔记2
    反规范化设计方法? 常见反规范化技术:   增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作。   增加派生列:在表中增加可以由本表或其他表中数据计算生成的列,减少查询时的连接操作     并且避免计算或使用集合函数。  ......
  • 工作学习笔记(六)变量命名规则
    在Java中,除了写注释来增加代码的可读性和维护性,还可以通过一些命名规则和约定来提高代码的可读性和维护性。变量命名规则的概述使用有意义的名字:变量名应该具有清晰的含义,能够准确地反映变量的用途。避免使用单个字符或无意义的缩写。小驼峰命名法:在变量名中使用驼峰命......
  • AUTOSAR_EXP_ARAComAPI的7章笔记(2)
    ☞返回总目录相关总结:服务发现实现策略总结7.2服务发现的实现策略如前面章节所述,ara::com期望产品供应商实现服务发现的功能。服务发现功能基本上是在API级别通过FindService、OfferService和StopOfferService方法定义的,协议和实现细节是开放的。当一个AP节点(更......
  • 并查集+最小生成树 学习笔记+杂题 2
    图论系列:前言:相关题单:戳我算法讲解:戳我CF1829ETheLakes给定一张\(n*m\)的矩阵,询问正整数四联通块权值和的最大值。并查集维护即可,记录一下集合内的点的权值和。代码:constintM=1005;intT,n,m,ans;inta[M][M],fa[M*M],siz[M*M];intfx[5]={0,1,-1,0,0};intfy[5]......
  • 学习笔记(三十五):[email protected] (线性容器ArrayList)
    概述:一种线性数据结构,底层基于数组实现 一、导入import{ArrayList}from'@kit.ArkTS'; 二、定义letarrayList:ArrayList<string|number>=newArrayList(); 三、常用函数1、add,在ArrayList尾部插入元素 2、insert,在长度范围内任意位置插入指定元素......
  • 学习笔记(三十六):[email protected] (非线性容器HashMap)
    概述:HashMap底层使用数组+链表+红黑树的方式实现,查询、插入和删除的效率都很高。HashMap存储内容基于key-value的键值对映射,不能有重复的key,且一个key只能对应一个value一、导入import{HashMap}from'@kit.ArkTS' 二、定义lethashMap:HashMap<string,number>=ne......
  • 24/11/11 算法笔记<视觉> 换脸,人脸特征点检测
    先介绍一下换脸的简单步骤1、提取两张图片的脸部特征点2、为两张图片创建mask3、进行映射变换使得人脸对齐4、使用opencv的泊松融合将两张图片合成我们直接上代码1.导入代码包importmediapipeasmpfrommediapipe.tasksimportpythonfrommediapipe.tasks.pythoni......
  • leetcode刷题笔记--最大滑动窗口
    classSolution{publicintlongestOnes(int[]nums,intk){intl=0,r=0;while(r<nums.length){if(nums[r++]==0){k--;}if(k<0&&nums[l++]==0){......