自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CF1251F Red-White Fence

很喜欢出自游戏王的一句话:你的生命已如风中残烛。再过几天也就退役了, 这可能是关于算法的最后几篇博客了。题目大致是给你一些红板和白板, 要求是利用一块红板和若干白板拼成一个山峰状的栅栏,最高点是红板,且要严格递增递减。题目所给 kkk 极小, 肯定是考虑每一块红板去跟所有的白板组合,并不是一个排列问题。对于每个长度的白板,我们只能选择一块或者两块。那么这个问题可以转化成:从 nnn 块白板中取出 mmm 块来组成栅栏,对于取一块白板来说, 一块白板可以放在左右两个位置,mmm 块就是 2mCnm2

2021-11-18 16:12:23 2617

原创 ACM大二周赛 2021-10-31 题解

A很明显发现答案就是一棵二叉树的中序遍历#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 5;int t[N << 1];void build(int k, int val){ t[k] = val; if (val == 20) return; build(k << 1, val + 1); build(k <<

2021-10-16 17:27:02 423

原创 2021-10-02

问题:给你一个长度为 nnn 的序列 aaa, a[i]<=1e5a[i] <= 1e5a[i]<=1e5,mmm 次询问,每次询问为:lll rrr xxx,给你一个区间,是否可以从区间里选择两个数 a[i]a[i]a[i] ,a[j]a[j]a[j], iii 可以等于 jjj,使它们乘积为 xxx,有输出 YESYESYES,没有输出 NONONO 。...

2021-10-02 18:08:15 103

原创 CF 1521题解

A.Nastia and Nearly Good Numbers很明显 b=1b = 1b=1 时无解,此外 a+a∗b=a∗(b+1)a + a * b = a * (b + 1)a+a∗b=a∗(b+1) 肯定是一组解。AC代码:#include <bits/stdc++.h>using namespace std;signed main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); i

2021-08-06 16:01:26 145

原创 CF 1389 题解

A. LCM Problem观察可得,第一个数的两倍小于等于第二个数时,有解,且这组解必定能被构造。AC代码:#include <bits/stdc++.h>using namespace std;signed main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); int t; cin >> t; while(t --) { int l,

2021-08-05 18:49:45 124

原创 CF 1527D MEX Tree

题目意思大致是:给出一棵 nnn 个点的树,点从 000 到 n−1n - 1n−1 编号。定义一条路径的权值是路径上所有点编号的 MEXMEXMEX。对于每个 0≤i≤n−10 \le i \le n - 10≤i≤n−1求出 MEXMEXMEX 为 iii 的路径有几条 ?我们可以得到一个性质:当我们求出ANSiANS_iANSi​ 和 ANSi+1ANS_{i + 1}ANSi+1​时,考虑最简单的容斥思想,MEXi+1=ANSi−ANSi+1MEX_{i +1} = ANS_i - ANS_{i

2021-08-05 18:26:49 113

原创 CF1549 D. Integers Have Friends

gcdgcdgcd居然能用STSTST表维护!!!差分,然后STSTST表维护双指针。AC代码:#include <bits/stdc++.h>using namespace std;template <class T>struct RMQ{ vector <vector <T>> ST; RMQ(const vector <T> & V) : ST(1, V) { int Len

2021-08-04 17:36:41 197 1

原创 CF 1452题解

A. Robot Program如果没有限制条件的话,答案就是 n + m。考虑限制条件,那么我们每走一步就要换一种走法, 很明显交替走是最优的,如果不能交替走,就停在原地。很明显答案就是 n + m + max(max(n, m) - min(n, m) - 1, 0)AC代码:...

2021-08-03 11:01:51 115

原创 P2587 [ZJOI2008]泡泡堂 题解

P2587 [ZJOI2008]泡泡堂利用田忌赛马的贪心思路即可求得最大值,考虑最小值即是对面得分最大,但是总得分是固定的,利用总得分减去对手得分的最大值即是最小值。代码如下:#include <bits/stdc++.h>std::vector <int> a,b;int cal(std::vector <int> A, std::vector <int> B) { std::deque <int> T,K; T.a

2021-05-15 21:10:41 125

原创 普通平衡树板子

#include <bits/stdc++.h>struct Splay_tree{ struct node{ int fa, ch[2], val, siz, cnt; node() { fa = val = siz = cnt = 0; memset(ch, 0, sizeof ch); }; }; int tot,root; std::vector <

2021-05-04 10:29:28 74

原创 P3722 [AH2017/HNOI2017]影魔

先鸽了 复习的时候写

2021-03-16 21:17:23 95 1

原创 C - Boboniu and String

C - Boboniu and String这无疑是一道很好的题目,我没有什么思路。通过观看某谷大佬的博客,花了很久才得以AC!正如这是是一道好题,所以写一篇题解,也算是检验自己有没有掌握这一个问题。题目有一些赘余,简单阐述一下题意:就是给你一系列的"BN"串,顾名思义"BN"串只由’B’,或者’N’组成,让你构造一个"BN"串,让它经过一系列的操作后能转换为所给的"BN"串('B’与’N’的个数一样就是相等的),求所有转换次数中最大的那个,使之最小化!操作有6种:加’B’,加‘N’,加‘BN’,

2021-02-15 18:43:59 139

原创 大数加法

string add(string s1,string s2){ int j,l,la,lb; string ma,mi; ma=s1;mi=s2; if(s1.length()<s2.length()) {ma=s2;mi=s1;} la=ma.size();lb=mi.size(); l=la-1; for(j=...

2020-04-26 19:40:20 141 1

原创 F HDU - 6351

比赛的时候想写 dfs 时间不够 也不是很会在lly学长的帮助下 我觉得暴力真香利用next_permutation(),枚举所有排列,检验,记录即可代码如下:#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algor...

2020-04-25 11:10:57 131

原创 H CodeForces - 612D

扫描线一个区间左赋值1 右-1排序,历遍,为k,记录为被覆盖k次的一个左区间,flag=1不为k,flag=0,记录为被覆盖k次的一个右区间历完,输出即可代码如下:#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <a...

2020-04-25 09:15:16 104

原创 C HDU - 4725

最短路裸题 建图较难点点之间的路径很好建立,但不同层之间的点的路径很难建立。通过 点->层->层->点 这样走即可实现不同层之间的点的路径的建立但我们要注意:点->层->层->点 点到层,不能直接到该层,要到上一层,或者下一层,否则可能最短路跑不出去。数据范围1e5,我们再用1e5来建立,点层,层层的路径,比如,1代表第一个点,n+1就是第一层。2e5...

2020-04-24 23:53:22 216

原创 HDU-5418 Victor and World

代码:#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <algorithm>#include <queue>#define ll long long#define mem(a,b) memset(a,b...

2020-04-18 23:40:15 101

原创 F - 最长回文子串

就是求最长的最长回文子串字符串长度<=10^6n^2做法肯定不行了直接用n的马拉车算法(板子题哦)就可以了,hash 求回文应该也是可以的吧!代码如下:#include <bits/stdc++.h>#define ll long long#define mem(a,b) memset(a,b,sizeof(a))#define fo1(a,b) for(int ...

2020-04-08 22:23:04 151

原创 H - Bag of mice

概率DP有n只白鼠,m只白鼠,两个人轮着抓 ,两个人都抓一次,都就会跑1只如果公主抓到白鼠,就赢了 否则GG 问:获胜概率是多少?我们就算公主赢的时候!!!1:公主抓到白鼠,OK,公主赢了,不用比了。2:公主抓到黑鼠,龙抓到黑鼠,不然公主GG,跑了白鼠,或者,黑鼠。先初始化下数组1.1 f [i][j]+=1.0*i/(i+j);2.1 f[i][j]+=1.0f[i][j-3]...

2020-04-08 22:17:12 125

原创 E - Calc

E - Calc题意:举个栗子吧abcde要求的值就为a ab abc abcd abcde b bc…之和我们每修改一次某个值就要求一次和我看到题就想到了线段树(我也不知道为什么)QWQ!!!首先我打了一个线段树板子,只有一个t 数组 如果直接放进去t 储存的值只是abced 中的一个段了,根本就不能求和。要求和,先开个和的数组吧!反正也没什么用 ans数组(求和用的)我...

2020-04-08 22:03:35 218

原创 The King’s Ups and Downs

萌新在练DP的过程中遇到了这个题,但是我太菜了不会做啊,只好看了下大佬的题解。题意:给你一个数n,对这n个人排序为高低高低…或者低高低高…,问有几种排序方法。一个数据n,我人傻了。经过观摩理解,我才知道正解的方法 。我们用假设法来解 。假设:现在有i个人要排队了,既然是DP,那么上一个状态就是 i - 1 排队,即 i - 1 人已经排好队了,还有一个人要给他安排一个位置。不过这样子假设...

2020-04-07 13:37:14 107

原创 H - 蓬松的头发

应该是最水的一题我还以为要用DP 我不会啊排序一下正数直接乘负数两两配对乘(从最小负数开始走,得到的乘积最大)0不要乘最后特判下不知道是不是因为上一场 题目变简单了代码如下://#include <bits/stdc++.h>#include <iostream>#include <cstdio>#include <algorit...

2020-04-03 22:49:28 118

原创 F - 我们什么时候能见面?

题目意思:n个数组 最少出现m次 最多出现n次优先取最多出现的数 如果有几个数出现次数一样 那么优先取其中最小的数(PS:超n次我们就不用管了,就算n次 意思就是同一个数组里重复的元素不要重复计数)想法:开个两个map一个map < pair<int,int>,int > m1; map <int,int> m2;前一个map用来记录同一个数组中...

2020-04-03 22:43:17 165

原创 D - 淡黄的长裙

贪心题题面的意思就是 ai bi举个例子吧 比如a1 b1 a2 b2处罚时间就是 ti-bi (ti是ai的和)我们要使得 处罚时间的最大值最小继续举例 吧 (b1<b2)1 a1 b1 a2 b22 a2 b2 a1 b1t1=max(a1-b1,a1+a2-b2)t2=max(a2-b2,a1+a2-b1)b1<b2t2=a1+a2-b1很明显 t1&lt...

2020-04-03 22:28:01 138

原创 A - 无聊的游戏

应该是博弈论 但我还没学 这题有点水。n m (a>b)1 n是m的倍数 那么这种情况下取的人赢了2 接下来我们考虑一下走到哪部就稳操胜券了 首先你必须取 m个或者大于m并且是m的倍数,那么我们考虑2m个特殊边界,n>2m 举个例子n=2.5m 我只要取到1.5m 换你取 1.5m > m 你必须要取m 还剩0.5m m>0.5m 那么 我只要取完剩下的0.5m 你就...

2020-04-03 22:12:43 156

原创 manacher 板子

manacher 板子:#include <bits/stdc++.h>#define ll long long#define mem(a,b) memset(a,b,sizeof(a))#define fo1(a,b) for(int a=0;a<b;++a)#define fo2(a,b) for(int a=1;a<=b;++a)#define inf 0...

2020-03-31 10:45:26 86

原创 A - 打广告 HDU - 2795

给个传送门板子题:比赛时,思路比较乱…,而且直接抄了个板子,在改的…代码:#include <bits/stdc++.h>#define ll long long#define mem(a,b) memset(a,b,sizeof(a))#define fo1(a,b) for(int a=0;a<b;++a)#define fo2(a,b) for(int a=1...

2020-03-30 13:14:25 82

原创 矩阵快速幂

矩阵 Aij^n 的模板:放个题目传送门贴代码:#include <bits/stdc++.h>#define ll long long#define mem(a,b) memset(a,b,sizeof(a))#define fo1(a,b) for(int a=0;a<b;++a)#define fo2(a,b) for(int a=1;a<=b;++a)...

2020-03-28 19:32:31 53

原创 Allowance 贪心

放题:As a reward for record milk production, Farmer John has decided to start paying Bessie the cow a small weekly allowance. FJ has a set of coins in N (1 <= N <= 20) different denominations, wh...

2020-03-10 23:24:54 161

原创 CF1303D Fill The Bag 位运算与贪心

传送门:点这里题意:用所给的的大小为 2 的非负整数次幂的物品把背包装满。首先我们需要知道一点:物品可以对半拆分。那么这意味什么呢?就是可以把物品拆分成最小的单位,即大小为 1。于是,我们就可以用这些物品来表示1—sum(物品总和)中的任意一个数的大小,最多只是拆分次数的不同。思路:先计算出所有物品的总和,如果背包的大小比物品的总和大,显然是不能装满的。接下来就是位运算和贪心了,具体怎么实...

2020-02-28 16:38:41 138

原创 CF1C Ancient Berland Circus 几何

CF1C Ancient Berland Circus传送门:点这里题意:利用三个点求最小正多边形的面积。上图:手稿,有点丑思路:一个正多边形,其每个点必把圆平分,且中心事原点。设有:多边形在圆上的点把圆平分成了N段(就是像切蛋糕一样把圆切成了N块大小相等的蛋糕)。那么我们只需要求一个的大小,再乘以N。N=2 * pi / t(t为每块的圆心角)每块的面积为:R * R* sin t...

2020-02-27 17:28:08 278 3

原创 LCS与P1439【模板】最长公共子序列

LCS:Longest Common Subsequence,最长公共子序列话不多说,上题:P1439【模板】最长公共子序列传送门首先,我看到这个洛谷的题,我就想到了vjudgeOJ上的一道题目Common Subsequence,感觉题目很像,我就去看了看原题,结果发现都是求最长公共子序列,就兴冲冲的用相同的算法解题,交了一发,原地自闭。第一发:#include<bits/st...

2020-01-06 17:17:10 262 3

原创 LIS与P1020 导弹拦截

LIS:Longest Increasing Subsequence,最长递增子序列**话不多说,上题:P1020 导弹拦截:**传送门PS:这是一道求最长递增子序列的题,但要注意,本题开启spj,n方100分,nlogn200分 很坑很坑 。n方做法,代码如下:...

2019-12-28 17:52:50 204 1

原创 P2440 木材加工 二分答案入门

原题:P2440 木材加工题目描述木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有剩余),需要得到的小段的数目是给定的。当然,我们希望得到的小段木头越长越好,你的任务是计算能够得到的小段木头的最大长度。木头长度的单位是cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度也是正整数。例如有两根原木长度分别为11和21,要求切割成到等长的6段,很明显能切割出来...

2019-12-25 11:44:36 339

原创 B - Charlie's Change dp背包路径

原题:Charlie is a driver of Advanced Cargo Movement, Ltd. Charlie drives a lot and so he often buys coffee at coffee vending machines at motorests. Charlie hates change. That is basically the setup of ...

2019-12-21 19:30:25 186

原创 DP基础三背包

基础三背包:学习三背包问题已有几天了,特来总结下三背包问题,加深自己的印象。01背包01背包就是有N件物品,你可以选择拿或不拿,在背包最大容量下,获得最大价值。附上函数代码:void dp1(){ for(int i=0; i<n; ++i) { for(int j=m; j>=w[i]; j--) { ...

2019-12-19 17:12:22 198

原创 Quick_sort 快速排序

quick_sort加粗样式欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界...

2019-12-15 15:57:34 303 1

空空如也

空空如也

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

TA关注的人

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