自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 Codeforces Round #690 (Div. 3) F. The Treasure of The Segments (二分+主席树)

题目链接题意:定义good线段集合:该集合中至少存在一条线段(x)与集合内其他所有线段(others)都至少有一个有一个交点。给定n条线段,求最少删除几条线段,使得剩下的线段集合是good。思路:稍微转化一下题意,就是求good线段集合的大小最大是多少。考虑枚举每一个线段,让其作为线段X,然后求出其他线段中与X有交点的个数。先将线段按照左端点排序。对于当前枚举的线段X,[L,R],在数组下标[X,N]的范围内二分找到最大的左端点小于等于R的位置pos。那么[X+1,pos]区间内的线段都与X至少存在一个

2020-12-16 12:47:48 200

原创 第17届NIT校赛-Triangle Numbers(数位DP)

一道典型的数位DP题目。首先考虑如何确定单个数字是否是“Triangle Numbers”,不妨直接暴力枚举找合法三角形。在DFS搜索终点(即某个数字全部位数都已枚举)调用该函数判断即可接下来是最关键的,如何将搜索记忆化。即考虑这样的情况,当前已经枚举一些高位(或者说已经确定数字的前缀),剩下一些低位(后缀)还没有枚举,且这些低位的枚举没有限制,每一位都可以是0-9的任意一个。一个简单直观的想法是以0-9这十种数字的出现次数和可枚举的后缀长度作为前缀等价类的划分依据。被划分至同一个等价类的前缀关..

2020-12-06 18:32:26 253

原创 HDU-3247 Resource Archiver (AC自动机+最短路+状压DP)

题目链接#include <bits/stdc++.h>using namespace std;const int MAXN = 6e4 + 10;vector<int> vec;// AC自动机queue<int> q; //BFS队列const int AlphaSize = 2; //字符集大小inline int getID(char ch) //字符转整数下标{ return ch - '0';}int T

2020-12-02 22:41:44 240

原创 HDU 4758 Walk Through Squares (AC自动机+DP)

题目链接题意简化后,给定两个模式串(仅包含字母‘D’和‘R’),然后用m个字母‘D’和n个字母‘R’组成长度为(m+n)且可以同时匹配两个模式串的文本串的方案数。#include <bits/stdc++.h>using namespace std;const int MAXN = 210;inline int getId(char ch){ if (ch == 'D') return 0; return 1;}queue<int> q

2020-11-29 16:17:15 84

原创 HDU 3341 Lost‘s revenge (AC自动机+DP)

题目链接题意:给定n个模式串和一个文本串,可以任意重新排列文本串,求所有方案中 匹配模式串数量最多是多少。(模式串匹配允许重叠)#include <bits/stdc++.h>using namespace std;const int MAXN = 510;inline int getId(char ch){ if (ch == 'A') return 0; if (ch == 'T') return 1; if (ch ==

2020-11-28 23:00:30 68

原创 HDU 4057 Rescue the Rabbit(AC自动机+DP)

题目链接题意:给定n个模式串,每个模式串都有权值。文本串如果包含某个模式串,就加上该模式串的权值(如果某个模式串多次出现,只计算一次的贡献),求所有长度为L的文本串中权值最大的是多少。AC自动机+DP 的入门题。n最大只有10,用二进制状态压缩来表示n个模式串的出现情况。dp[i][j][k] i代表当前文本串长度,j代表当前在AC自动机上第 j个结点,k就是二进制压缩的状态,表示当前n个串的出现情况。DP数组的值为0或1,表示对应的状态是否存在。最后遍历所有二进制压缩的状态,计算其贡献并取最大值。D

2020-11-27 12:53:40 85

原创 2019 ICPC Asia Nanchang Regional 南昌 k-tree (DSU ON TREE +动态开点线段树)

题目地址考虑枚举LCA,对于某个确定的 LCA ,比如说LCA是Z,假设它有k个儿子,也就是在它之下的k个子树,有贡献的点对(x,y),x和y一定是分别分布在这k个子树里不同的两个子树中,因为如果x,y和在同一个子树 S 中,Z就不可能是x和y的LCA,S肯定是x和y的公共祖先(不一定是最近的公共祖先),而Z是S的父亲,所以x和y的最近公共祖先轮不到Z。假设当前遍历到第 i 棵子树,那么要统计的就是 这棵子树中的所有点,跟之前遍历的总共 i-1 棵 子树之间的贡献。再来回想一下,我们要求的是 v[

2020-11-23 20:13:46 229

原创 CF915E Physical Education Lessons (动态开点线段树)

序列的区间赋值和区间查询问题。考虑使用线段树,但这题的n范围达到了1e91e^91e9 ,直接构建行不通,数组开不下。注意到询问q只有3e53e^53e5 ,一次询问,最多新开辟log2n{log_2} ^nlog2​n个结点,所以真正要用到的线段树结点数量大概是 q∗log2nq*{log_2} ^nq∗log2​n, 所以使用动态开点的方式。大概是9e69e^69e6的空间,然而实际上需要开 1.5e71.5e^71.5e7才不会RE,(没想明白为啥还需要再开6e66e^66e6的空间。#inc.

2020-11-23 14:16:47 109

原创 L3-001 凑零钱 (30分) CCCC团体程序设计大赛 (01背包+输出最小字典序方案)

#include<bits/stdc++.h>using namespace std;const int MAXN = 1e4 + 4;const int MAXW = 2e2 + 2;int w[MAXN];int dp[MAXW];int path[MAXN][MAXW];int main(){ int n, W; scanf("%d%d", &n, &W); for (int i = 1; i <= n; i++)scanf("%d", &a..

2020-11-20 19:13:48 131

原创 L3-011 直捣黄龙 (多关键字最短路(Dijkstra))

题意非常明确,求单源最短路。无负权值的图首选Dijstra算法 ( NlogNlog^NlogN)。麻烦的地方在于关键字太多了,处理方法类似于结构体排序的处理方法。如果第一关键字(路径长度)不相等,就按照第一关键字决策,否则比较第二关键字,如果第二关键字也一样,再按照第三关键字决策。(题目保证当第一第二关键字相等的时候,第三关键字一定不相等,所以比较到第三关键字,一定可以出决策方案。在每一步决策的时候,都要注意相关信息(最短路个数,经过城市个数,敌军数量)的更新。瞎扯几句:写完之后测试点1过不去,调了“.

2020-11-16 00:04:11 298 2

原创 2020_CCPC_长春 -F - Strange Memory (Dsu On Tree(树上启发式合并))

题意:给出一棵有根树,结点编号1-n,每个结点都有权值。求对于一个确定的LCA,对以LCA为根的子树进行一遍暴力的搜索,就能得出答案,枚举每个点作为LCA,加和之后就是最终的答案。于是这题变成了不带修改且可以离线的子树相关的问题,DSU ON TREE 是解决这类问题的有效手段。#include<bits/stdc++.h>using LL = long long;using namespace std;const int MAXN = 1e6+100 ;inline int re.

2020-11-11 18:53:10 221

原创 2020CCPC长春 D - Meaningless Sequence(找规律+数位DP)

#include<bits/stdc++.h>using namespace std;using LL = long long;const LL mod = 1e9 + 7;LL C[3100][3100];void init(){ C[0][0] = 1; for (int i = 1; i <= 3010; i++) { C[i][0] = 1; for (int j = 1; j <= i; j++) { C[i][j] = (C[i..

2020-11-08 22:28:43 356

原创 2020CCPC长春A - Krypton(混合背包)

In the future several years, you will surely remember that you once participated in a special China Collegiate Programming Contest. Due to COVID-19, all parties had paid a lot of effort to eventually hold a rare online programming contest. As a problem wri

2020-11-08 22:23:04 589

原创 AOJ 15951 零件加工问题二

题目传送门Description有个国有中型企业,接到一批需要加工零件的订单,员工们非常高兴,工厂领导为了鼓励员工尽快地完成加工任务,出台了奖励政策:“如果在保证质量要求的前提下,每完成一个零件加工任务,都有相同数量的奖金!”。所以所有员工都希望加工尽量多的零件,以便拿到更多的奖金。现在请你帮忙,怎样加工才能在一台机床上加工最多的零件。假定对于待加工的第i个零件,给你两个非负整数Si,Ei,其中Si表示加工开始的时间,其中Ei表示加工结束的时间,由于受到客观条件的制约,这开始和结束的时间限制必须要遵

2020-11-07 10:56:31 457

原创 2020 CCPC绵阳站G.Game of Cards(博弈搜索)

G .Game of CardsLittle Rabbit and Little Horse love playing odd card games. Now, they are playing a card game called 0123-game.There are several cards on the table. c​0​​ of them are labeled with 0, c​1​​ of them are labeled with 1, c​2​​ of the

2020-11-05 18:44:24 661

原创 方伯伯的商场之旅(数位DP)

Description方伯伯有一天去参加一个商场举办的游戏。商场派了一些工作人员排成一行。每个人面前有几堆石子。说来也巧,位置在 i 的人面前的第j 堆的石子的数量,刚好是 i 写成 K 进制后的第 j 位。现在方伯伯要玩一个游戏,商场会给方伯伯两个整数L,R。方伯伯要把位置在 [L,R]中的每个人的石子都合并成一堆石子。每次操作,他可以选择一个人面前的两堆石子,将其中的一堆中的某些石子移动到另一堆,代价是移动的石子数量 * 移动的距离。商场承诺,方伯伯只要完成任务,就给他一些椰子,代价越小,给他的椰子

2020-10-11 21:47:29 126

原创 URAL 2052 . Physical Education (数位DP + 二分)

题意:给定n(1<=n<=2e9),将[1,n]以所有数位上的和作为第一关键字,数的大小作为第二关键字升序排序。求排序前后位置不发生改变的数字个数。案例中 n=19排序前后:1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12,13,14,15,16,17,18, 191,10, 2,11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 17, 9, 18, 19其中位置没有发生改变的有1,18,19 三个数,所以答案为3

2020-10-10 17:11:37 85

原创 快速读入输出挂

1 fread 和 fwrite 实现的超级读入输出挂(速度超快,但不支持终端交互)2 getchar 和 putchar 实现的读入输出挂(比1慢一些,但支持终端交互)#include<bits/stdc++.h>namespace fastIO {#define BUF_SIZE 100000//缓存区大小#define DECIMAL 6 //double 类型的 默认输出保留位数#define LL long long bool IOerror = 0;//是否读

2020-10-06 21:42:41 237 1

原创 CF1089K King Kog‘s Reception(权值线段树)

题目是个队列问题,涉及到进队,出队,查询三种操作t d ,表示在时刻 t 来了骑士,占用国王 d 的时间。− i ,表示撤销第 i 次操作。? t ,表示询问公主在时刻 t 时来到,需要等多久。注意到时间值域是 [1,1e6] ,考虑使用权值线段树维护这个队列。线段树上的一个代表一个时间段,前两个操作对应线段树的单点修改,第三个操作对应线段树的区间查询。具体维护的信息见代码注释。#include<bits/stdc++.h>#define Accepted 0using Azi

2020-10-06 20:12:57 175

原创 Codeforces 914C Travelling Salesman and Special Numbers(数位dp)

The Travelling Salesman spends a lot of time travelling so he tends to get bored. To pass time, he likes to perform operations on numbers. One such operation is to take a positive integer x and reduce it to the number of bits set to 1 in the binary represe

2020-10-03 11:55:14 159

原创 【SPOJ - BALNUM 】K - Balanced Numbers (数位DP)

K - Balanced Numbers链接: 题目传送门题意:当一个数满足以下两个条件:(1)每个偶数数字在其十进制表示形式中出现奇数次(2)每个奇数数字在其十进制表示形式中出现偶数次,则称之为Balanced Numbers。求区间{L,R】内,Balanced Numbers的个数。做法:数位DP,考虑将四种状态记忆化.s1:当前枚举过的数字中,它本身是偶数且出现了偶数次的数字个数s2:当前枚举过的数字中,它本身是偶数且出现了奇数数次的数字个数s3:当前枚举过的数字中,它本身是

2020-09-29 22:20:14 122

原创 HDU -3709 -Balanced Number(数位DP)

链接: 题目传送门题意 :求区间【L,R】内平衡数的个数。平衡数的定义:考虑类似于物理学中力矩的计算方式,将一个的某一位作为支点,支点左边的某个数位权重为它的数值大小乘上它到支点的距离,支点右边的数位同理。当支点左边总权重等于右边总权重,则称之为平衡数。比如 4139 是一个平衡数。考虑将支点固定为 3 所在的位置,那么两边权重相等。4 * 2 + 1 * 1 = 9和9 * 1 = 9 。做法:虽然知道是数位DP,但一开始非常迷茫,想不到好的记忆化方式。因为这个支点不是固定的,就导致状态数太多

2020-09-29 21:54:37 111

原创 HDU 5642 King‘s Order(数位DP)

这里写自定义目录标题题目传送门新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入题目传送门题意:长度为n的字符串(只由小写字母组成),新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Mark

2020-09-27 09:35:04 132

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除