首页 > 其他分享 >一些做题记录

一些做题记录

时间:2023-03-18 14:11:06浏览次数:50  
标签:记录 矩阵 算法 具体 dp 一些 思路 难度

难度从 \(1\sim10\) 分类,越小越简单。

CF1100D

算法难度:2 实现难度:3 思维难度:7

具体思路:

这个数据范围很奇怪,而且,这东西很人类智慧。

具体而言,先把王挪到棋盘正中间,然后将棋盘分为了 \(4\) 块,我们发现至少有三块加起来比 \(499\) 大,所以找到这个位置并不停的斜着走就好了。

有一个实现细节,如果斜线上的位置有一个车,那么可以先往下走一步,这样车必然挪开,所以还是合法的。

容易证明上述思路移动步数小于 \(2000\)。

那么,如何想到这个思路呢?我也不知道

\(\\\)

[WC2011]最大XOR和路径

算法难度:5 实现难度:3 思维难度:6

具体思路:

我们发现任意的环与一条 \(1\) 到 \(n\) 的链异或起来能组成所有可能的路径。

如何求出所有的环?暴力枚举肯定不行,会被卡成 \(n^2\)。

又发现先建出生成树,然后任意环必然能通过若干树边加一条非树边来凑出来。

如果 \(1\) 到 \(n\) 的链有多条怎么办?

任选一条即可,因为多条 \(1\) 到 \(n\) 的路径又能组成一个环。

其实,思路挺巧妙的。

\(\\\)

CF1245F

算法难度:3 实现难度:3 思维难度:4

具体思路:

思路很一眼,如果二进制下某一位有进位则这个式子必然不合法,然后直接数位 dp 就好了。

\(\\\)

CF1712E2

算法难度:4 实现难度:3 思维难度:4

具体思路:

正难则反,转化成 \(lcm(i,j,k)\le i+j+k\),然后有两种情况分讨。

一种是 \(lcm(i,j,k)=k\),这种就直接拆因数做。

一种是 \(lcm(i,j,k)=2\times k\) 且 \(i+j\ge k\),此时只有两种情况满足,即 \((3,4,6)\) 和 \((6,10,15)\) 以及它们的倍数。

然后直接扫描线做就行了。

\(\\\)

CF1801D

算法难度:3 实现难度:3 思维难度:4

具体思路:

场切的 div1+2 中 div2 的 \(F\),思路比较简单。

先惰性的演出,也就是说,当钱不够时再演出。

而贪心一下,如果要演出必然在演出路上经过的能得到最多钱的点演出。

于是我们就能列出一个 dp 方程,具体而言,\(dp_{i,j,k}\) 代表现在在第 \(i\) 个节点,路上经过的 \(w_i\) 最大的点是 \(j\),手里有 \(k\) 块钱,最少需要买多少次。

当然,这个东西复杂度肯定崩了,我们发现 \(k\) 这个东西太大了,考虑优化。

因为演出是惰性的,所以我们可以把 \(k\) 作为第二关键字塞进 dp 里头。

那这样为什么是对的呢?

感性理解一下,如果演出次数少了一次,那么我们再在 \(j\) 这个位置上买一次,演出次数就相等,而手里的钱必然会更多。

然后直接用最短路优化 dp 就行。

\(\\\)

一个题

算法难度:3 实现难度:3 思维难度:6

大致题意:

给一个矩阵,如果相邻两个格子值相同则有边,每次询问一个子矩阵内有多少个连通块,如果两个格子在子矩阵外联通了也算一个。

具体思路:

对于每种联通的值,我们先随便选择一个领头人,查询的时候用二维前缀和求出子矩阵内有多少个领头人。

如果领头人不在子矩阵内,但是却算进了答案,当且仅当这种颜色经过了子矩阵边缘,直接扫过去就行了。

很神奇的思路。

\(\\\)

CF878D

算法难度:4 实现难度:2 思维难度:8

具体思路:

虽然我们只需要求这个数具体是多少,但是还可以二分答案,找到 \(mid\) 之后将小于设为 \(0\) 大于等于设为 \(1\),取 max 就相当于二进制或,取 min 就是二进制与。

然后就可以 bitset 优化了。

虽然是套路,但感觉这个套路还是很神仙。

\(\\\)

2022/3/18

一个题

算法难度:5 实现难度:6 思维难度:6

大致题意:

给两颗树,问有多少个集合满足这些点在第一棵树中是联通块,第二棵树中是一条链。

具体思路:

有个套路,如果点的个数减去边的个数恰好为 \(1\),则这是一个联通块。

然后对于第一棵树中的一条边,如果在第二棵树包含它,那么起点和终点必然都是一个区间,点同理。

所以相当于矩阵加,问有多少个 \(1\),直接二维扫描线就行。

标签:记录,矩阵,算法,具体,dp,一些,思路,难度
From: https://www.cnblogs.com/duck-pear/p/17230535.html

相关文章

  • c++ 影响多线程速度的因素记录
    目录0.序言1.缓存行同步问题/共享数据竞争1.1测试代码1.2测试逻辑1.3测试结果1.4小结2.任务颗粒度过小问题2.1测试代码2.1测试逻辑2.2测试结果2.3小结3.缓存未......
  • 关于游戏设计上一些问答
    Q:游戏情节和“游戏设定”相比,是不是游戏设定的包含范围更广阔一些?A:是的,游戏情节和游戏设定是两个不同的概念,游戏设定的范围比游戏情节更广泛一些。游戏设定通常指游......
  • 记录个人第一篇博客~
     《从前慢》                   --木心《云雀叫了一整天》记得早先少年时大家诚诚恳恳说一句是一句清早上火车站长街黑暗......
  • 【链表】复习/刷题 记录
    leetcode203.RemoveLinkedListElements/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode......
  • 【问题记录】html双横杠换行问题,white-space的重要性
    废话如图,就是这两个小玩意儿。两个​​--​​同时出现在html就会傻逼地给你进行智障前期,以为是浏览器把这个当做​​英文单词的换行​​​来处理了,所以用css的​......
  • NET中使用NLog记录日志转载
    .NET中使用NLog记录日志 以前小编记录日志使用的是Log4Net,虽然好用但和NLog比起来稍显复杂。下面小编就和大伙分享一下NLog的使用方式。引用NLog.Config在使用NLog......
  • 一些有趣的思维题
    CF1804F难度不算很大。令\(x,y\)为直径两端,则\(\forallu\)有\(\rho(u,x)+\rho(u,y)\ge\rho(x,y)\),即\(\max(\rho(u,x),\rho(u,y))\ge\frac{\rho(x,y)}{2}\)......
  • 【转】git将子目录拆分独立仓库并保存提交记录
    原文:https://blog.csdn.net/afgasdg/article/details/113113697 ----------------git将子目录拆分独立仓库并保存提交记录1.需求说明项目原来很大,将多个子模块柔和在......
  • 玩prometheus过程中遇到的一些问题
    一、pgw的无默认值监控项1、prometheus的配置文件global:scrape_interval:15s#Setthescrapeintervaltoevery15seconds.Defaultisevery1minute.ev......
  • 历年省选记录
    23/3/6P8289[省选联考2022]预处理器小模拟,eezz。23/3/7P8290[省选联考2022]填树谔谔考虑一条链的第一问,计算钦定这条链上所有点权都\(\in[l,l+K]\)......