自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ROS配置多主机通讯

配置ROS多主机通讯

2023-12-14 18:24:33 583 4

原创 一道状压dp(CCA的区间)

题目链接:https://ac.nowcoder.com/acm/contest/11168/E题目分析:“最多翻转一个子区间” 这句话就相当于 可以拼接任意两个不重合的符合要求的区间,取他们的和的最大值。由于一个区间的合法状态最多是log级别,也就是该题目的区间长度最大的24。若没有 “最多翻转一个子区间” 这个限制条件,我们只需要枚举端点nlogn就可以解决问题。如果有了该条件,那么思考:我们要求的合法区间是没有重复元素的,且元素值都是2的i次。那么一个合法的区间必然可以被状

2021-10-30 11:11:37 113

原创 基于案例的软件构造教程第四章4.10课后题答案

只包含教材132页的奇数题答案正确性不保证,都是自己口胡写的一.数据持久层:数据持久层位于领域层和基础架构层之间。由于对象范例和关系范例这两大领域之间存在“阻抗不匹配”,所以分出数据持久层。文件:计算机文件是以计算机硬盘为载体存储在计算机上的信息集合。输入/输出流:输入就是将数据从各种输入设备(包括文件、键盘等)中读取到内存中,输出则正好相反,是将数据写入到各种输出设备(比如文件、显示器、磁盘等)。测试覆盖:测试系统覆盖被测试系统的程度,一项给定测试或一组测试对某个给定系统或构件

2021-10-13 20:32:18 3116 4

原创 一道树上二分的题目(codeforces round #746(Div.2) D. Hemose in ICPC ?)

题目链接:https://codeforces.com/contest/1592/problem/D一般交互题常见的思路 1是二分 2是分块这道题可以先跑一遍欧拉序,将结点保存在a数组内,之后我们就可以二分a数内连续的一端(这个连续的一段就代表着树内连续的一条边) ,找出的l,r就是题目的答案。代码如下:#include <bits/stdc++.h>using namespace std;#define rep(x, y, z) for (int x = y; x <= z;

2021-10-05 19:29:16 125

原创 [HEOI2013]EDEN的新背包问题

这道题思路很让人眼前一亮,大致就是将前缀后缀的思维再套上多重背包。设两个数组pre和suf ,pre表示前i个数,权值不超过j下的最大价值。suf表示从后往前,后i个数,权值不超过j下的最大价值。这样,我要如果要任意去除第x位的物品的信息,就可以利用max {pre[a-1][i]+suf[a+1][xx-i]} (xx指题目种给出的新的背包限制)很快求出去除某一物品下的最大价值。代码如下:#include <bits/stdc++.h>using namespace st

2021-09-28 20:19:40 160

原创 bitset的运用

题目链接:https://ac.nowcoder.com/acm/problem/51011说一下第二种拓扑排序的思路,因为是有向无环图,可以进行拓扑排序,记录出队列顺序, 再倒着,由结尾统计。运用 二维bitset 的 | 运算操作可以 顺带着去重。代码如下:第一种 (直接dfs 203ms)#include <bits/stdc++.h>using namespace std;#define rep(x, y, z) for (int x = y; x <= z;

2021-09-27 21:20:49 309

原创 [HNOI2004]L语言 (字典树 + dp)

题目链接: https://ac.nowcoder.com/acm/problem/20033思路:和裸字典树有所不同的是,如果要求出的该串的最长的前缀,可能会由字典中的前一个字符串的后半部分和后一个字符串的前半部分拼接起来组成一个最长前缀的值。所以我们需要一个dp[i] 数组,含义是 表示t串中前i位是否完全匹配,若前半部分完全匹配,则我们只需要匹配i+1,i+1… 段的最大匹配长度,并记录答案。代码如下#include <bits/stdc++.h>using namespa

2021-09-27 20:04:25 181

原创 2019南昌(And and Pair)dp

题目链接:https://nanti.jisuanke.com/t/42578思路:要保证i>=j 可以从最后一位开始记录方案数设f[k][2][2] 第一维表示记录到第k位,第二维表示i为0或1 ,第三维表示j为0或1。要注意的一点是,需要额外记录f[i][0][1] 的方案数,虽然在第i位下不合法,但如果之后记录到i=1,j=0的情况时候,就会变成合法状态。代码如下:#include <bits/stdc++.h>using namespace std;#define

2021-09-25 10:15:35 57

原创 一道倍增思想的题

题目链接:https://ac.nowcoder.com/acm/problem/222283思路:我们可以发现这道题的本质是求[L,R] 区间内最长的严格上升子序列的数字个数。先用单调栈O(n)预处理出来每个数第一个大于等于它的下标 。设st[i][j] 表示第i位数后面比a[i]大的第2^j个数的下标,利用倍增思想,预处理出来比当前数a[i]大的 第 1,2,4,8…个数字的下标代码如下:#include <bits/stdc++.h>using namespace std.

2021-09-18 15:17:44 81

原创 一道双指针的题(音乐家的曲调 )

题目链接: https://ac.nowcoder.com/acm/problem/222216题意:从长度为n的只有小写字母的字符串中选出三个不相交的区间,使这三个区间的区间长度之和最大。当然,要求选出的任意一个区间,区间内每种小写字母的出现次数不能超过m。请问最大的区间长度之和是多少?思路:数据范围给了1e7 ,只能O(n) 求解思考如何在O(n)中得到三个不相交区间的最大总长度我们可以通过双指针,预处理出来从1~i的这个范围内的最大前缀 以及 i~n 范围内的最大后缀区间..

2021-09-16 20:06:56 71

原创 Codeforces Round #722 (Div. 1) 1528B (数学推导dp)

题目链接: 题目地址题意:一个数轴上有2n个点,你需要把这个2n个点用n个线段配对n个线段配对后需要有两种关系之一: (1) 两线段长度相等 (2)一个线段包含另一个线段问有x条线段时,有多少种配对方式首先思考若两线段长度相等:对于x条线段,配对2x个点, 若x为6,则有4种配对方案,分别是每条线段长度为(1,2,3,6) 。 可以画图理解一下, 这样我们可以发现dp[x] 有一方面贡献 可以+ x的因子个数再思考一个线段包含另一条线段的情况,对于x条线段

2021-07-30 17:18:36 93

原创 牛客多校1 F题(数位dp)

牛客多校1 F题目: 题目地址像之前的数位dp,都是计算[l,r]有多少个“1” 等等。这道题目不同,问题是要求[l,r] 中,任意能被3整除的数字个数比如: 104 能被3整除,因为104中的0/3 = 0​ 124 能被3整除 因为124 中有连续子序列12 可以整除3​ 17 不能被3 整除 ,因为 1,7,17 都不能整除3问题是求[l,r] 这样能整除3的数字个数 l<=r<=1e18记录一下关于求连续子序列的数位dp写法

2021-07-29 16:13:08 97

原创 HDU 2476区间DP

题目链接: 传送门题目大意: 给定两个字符串a,b。可以选取a任意一段区间,将该区间内的字符变成任意一样的字符,问最少经过多少次才能将a串变成b串思路: 进行两次DP,第一个是算出从空白串变成b串的最小操作次数。然后 在定义ans[i] 表示将1到i从a变成b的最小操作次数代码:#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N

2021-05-25 12:54:28 167

原创 一道二分题目

地址: 传送门题意是定义一个可重集合 s ,一次操作为将 s 中最大值减去 p 。小 L 想知道,如果给你 s,p,以及操作次数 k ,求出最后的集合。题意简单,但题目的数据范围很大,用优先队列模拟铁定超时。我们观察看看有没有什么这种操作有没有什么性质。如果操作到一定次数后,数组内所有数字一定可以形成一种最大值减最小值的范围属于[0,p] 的情况 。再继续观察,我们可以想到,可以找出经过排序好后序列a[n]最后经过k次操作后的最终位置idx。因为 假设a[n]最后位置为idx ,idx前

2021-05-23 22:13:17 60

原创 方格取数dp

思路:f[k][i1][i2] 表示 从(1,1)走到(i1,j1)和(i2,j2)各走k步的集合最大值第一遍错误思路:先刷一遍最大值,然后将最大值的路径覆盖为0,然后再刷第二遍最大值。错误原因: 先刷第一遍,这样第二遍的值是受第一遍刷的路径所影响的,有后效性,不能作为整体最优解。#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int .

2021-05-13 20:53:42 88

原创 复杂一些懒标记的线段树分析

acwing 1277地址: 传送门输入样例:7 431 2 3 4 5 6 751 2 5 53 2 42 3 7 93 1 33 4 7输出样例:2358思路:这道题有两种区间修改,一种是加法,另一种是乘法。所以就要设两个懒标记,一个是add,另一个是mul ,对于这两种操作,就有了优先级的问题。如果我们对于懒标记先加再乘,譬如 (t * a) + b ,这种情况下,若在其整体再进行乘法,pushdown就很难维护出来。 因为懒标记要满足一个性质叫可叠加性,就是说可以

2021-05-12 09:57:59 140

原创 带懒标记的线段树

acwing 243 一个简单的整数问题2地址: 传送门输入样例:10 51 2 3 4 5 6 7 8 9 10Q 4 4Q 1 10Q 2 4C 3 6 3Q 2 4输出样例:455915#include <iostream>#include <cstring>#include <algorithm>using namespace std;#define int long longconst int N = 100010

2021-05-07 17:34:11 84

原创 线段树维护差分数组

acwing 246 区间最大公约数题目链接:传送门输入样例:5 51 3 5 7 9Q 1 5C 1 5 1Q 1 5C 3 3 6Q 2 4输出样例:124

2021-05-04 17:28:12 223

原创 线段树-没有懒标记的线段树

问题描述:acwing245 你能回答这些问题吗题目链接:传送门输入样例:5 31 2 -3 4 51 2 32 2 -11 3 2输出样例:2-1思路:要维护一个区间的连续最大字段和(tmax) ,就要从左右子区间来看,是否可以根据子区间维护出父区间的信息。要想维护父区间的tmax, 它有这样几种情况:该连续最大子段区间不跨越左右子区间,即单独在左子区间或右子区间该连续最大子段区间跨越左右子区间,此时我们现有的信息不足以维护出父区间的最大子段区间,所以需要额外维护每

2021-05-04 10:32:49 135

原创 (codeforces div.2 #714) B. AND Sequences

题目链接: https://codeforces.ml/contest/1513/problem/B题目大意: 给定一个数组,求满足a1&a2&…&ai = ai+1&ai+2&…&an 这样结构的所有排列数目思路: 找出和数组内所有数字 与操作 都不影响的数字k 放在等式的左右两边 ,这样这样构造的序列一定是符合要求的。因为左边 k & ai & a… 的值一定与 k & aj … a… 一定相等。

2021-04-17 15:06:15 167

原创 L2-014 列车调度 (25 分)

这道题思路很巧妙,记录一下题目链接:传送门思路: 这道题既然要求火车编号递减从出口离开,所以在进入入口的时候,就应该该火车跟随在比最小编号它编号大的火车后面, 若该编号比任何一个已经安排好的最小编号都大,就新开一个轨道。在寻找该火车应该跟在哪辆火车后面时,应该选择编号最接近它 且 比它大的火车。可以用lower_bound 二分查找一下代码:#include<cstdio>#include<algorithm>#include<queue>

2021-03-20 16:13:53 73

原创 Codeforces Round #689 (Div. 2, based on Zed Code Competition)

Codeforces Round #689 (Div. 2, based on Zed Code Competition)地址:https://codeforces.ml/contest/1461A:题意是用abc构造一个以最多以k为循环的回文子串,总长度为n思路: 只需要顺序在一个循环节内输出同一种字符,下一个循环节输出下一种字符就好了代码:#include<cstdio>#include<algorithm>#include<cmath>#incl

2021-03-06 16:38:21 78

原创 Codeforces Round #702 (Div. 3) A~E题解

Codeforces Round #702 (Div. 3) A~E地址:https://codeforces.com/contest/1490A:由于数据范围很小,n最大才到50,所以直接暴力搞喽代码:#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<map>#include<iostream>using nam

2021-03-01 21:08:47 81

原创 Educational Codeforces Round 104 (Rated for Div. 2) A~D题解

Educational Codeforces Round 104 (Rated for Div. 2) A~D题解题目地址:传送门A:大致题意是 n个英雄打架,问最多有几个人可能成为最后的胜者思路: 最小初始分值的人无论如何最后都不可能成为最后的胜者,因为它无论跟谁打要么平局,要么输, 所以很简单,找出有最小初始分数的人数,再用总人数减去它便是结果了代码:#include<cstdio>#include<algorithm>#include<cmath>

2021-02-23 15:54:35 105

原创 对acwing基础课第一章的总结

对acwing基础课第一章的总结

2020-10-31 12:04:18 245

空空如也

空空如也

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

TA关注的人

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