自定义博客皮肤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)
  • 收藏
  • 关注

原创 动态规划之装配线问题

装配线问题是一类动态规划问题,它通常被用来优化工厂生产线上的流程,以达到最短的生产时间和最大的利润。表示从装配线 2 的前一个站点转移到当前站点,需要经过传输线路。同样的,第二行式子中,表示从装配线 1 的前一个站点转移到当前站点,需要经过传输线路。表示从装配线 1 的前一个站点转移到当前站点,表示从装配线 2 的前一个站点转移到当前站点,来表示它们上的站点时间,再定义两个数组。来表示它们之间的传输时间,假设。分别是两条装配线的入口时间,表示从装配线 1 的站点。表示从装配线 2 的站点。

2023-03-18 21:14:54 248

转载 E. Vlad and a Pair of Numbers

不讲武德,欺负我没有数理基础的阿呆

2023-02-02 01:31:50 142

原创 D. Matryoshkas

Codeforces Round #847 (Div. 3) D. Matryoshkas

2023-02-01 18:32:54 233

原创 B. Special Numbers

B. Special Numbers题目链接题意给你一个底数n,让你算出排在第k个以n为底数形式不同的幂的和解题思路手动模拟一下你会发现,第一个数是111,第二个数是n+1n+1n+1,第三个数是n2{n^2}n2,第四个数是n2+1{n^2}+1n2+1,那么你会发现,它其实就是二叉树的排列,给的k就是十进制下,在二叉树中的第k个结点,根据这个我们构造出该结点的所有有关的结点,回溯到二叉树构造的问题,从根结点开始,与当前它的父节点比较,相等就是乘以nnn,不相等丢给右孩子乘以nnn再加一。AC

2021-10-12 11:35:34 231

原创 D1. Mocha and Diana (Easy Version)

D1. Mocha and Diana (Easy Version)题目链接????题目大意给你两个森林,让你对每个森林加相同的边,问你最多可以加多少条边思路怎么才能加边呢,这两个顶点没有连通才能加入,否则不能加入,那么根据树的定义可知连通意味着这两个点有相同的根且唯一,那么并查集再合适不过,然后暴力枚举n∗nn*nn∗n种结点组成情况,根据根或者说是否在同一个集合中判断能否加入通过代码#include <bits/stdc++.h>#define ll long long#d

2021-08-16 15:18:17 427

原创 D. Array Differentiation

D. Array Differentiation题目链接????题目大意给你 一个序列 nnn 个数,问是否能构造出一个序列使得已给出的序列是构造出的序列其中两元素的差值,其中两元素任意思路给你nnn个点,要求你随意连,使得连出来有nnn条边,你会怎么连,我想无论怎么连都会有有一个环,令b[i]b\lbrack i\rbrackb[i]为这个图的nnn个点,a[i]a\lbrack i\rbracka[i]为所连的边,那么我们就行搜索,每次查询这nnn条边选和不选,累加和,枚举所有不同的情况,如果

2021-07-27 22:17:58 240

原创 D. PriceFixed

D. PriceFixed题目连接????题目大意商店有n件商品,第i件商品,你需要买a[i]件,而第i件商品打折的够满b[i]件,问你怎样才能花最少的钱购买思路要求数少的,打折肯容易,要求数大的肯定难打折,那么贪心的去选取,先对需求非递减排个序,然后枚举如果当前的购买数满足打折条件那么就贪心买当前的商品,否则就拿后面的商品和当前的还需多少件商品数,取min,然后修改后面的值,这样能得到最优解代码#include <bits/stdc++.h>using namespace st

2021-06-23 16:50:54 416 2

原创 B. I Hate 1111

B. I Hate 1111题目链接????题目大意给你一个数问你是否可以由11,111,…11111…组合而成思路不难看出11和111可以组成所有的1的数,那么回到最朴素的罪罚就是你每次枚举111的系数然后x减去 111∗系数111*系数111∗系数然后判断这个差能否模11为0。第二种方法就是你先将x除以11得到的商a,x模11得到的余b,那么如果余不为0是不是可以将其转化成111,那么这里就需要要求商需要大于等于10,才能化成111你余数是多少那么你要转换成的111就是多少,就是你需要多

2021-06-01 20:55:13 784

原创 C. Parsa‘s Humongous Tree

C. Parsa’s Humongous Tree题目链接????题目大意给你一棵树,每个结点有一个权值范围,相邻结点有可以计算差值,要求求出这些差值绝对之和的最大值。思路要想拿到最大值,肯定是取边界值,边界的组合方式有四种a左a_左a左​-b左b_左b左​,a右a_右a右​-b左b_左b左​,a左a_左a左​-b右b_右b右​,a右a_右a右​-b右b_右b右​,这四种情况的绝对值,而没每次拿的值是固定的,那么转移方程式也就只有两种情况,一种是a结点只取左边界值dp[0]状态,另一种是a结点只取

2021-05-26 13:51:22 187 2

原创 D - aab aba baa

D - aab aba baa题目链接????题目大意给你a个a,b个b,要求你输出按字典序排列第k个的字符串思路给你a个a,b个b总共n=a+b个字符,那么有多少种排列方式,是不是∁na\complement^a_n∁na​,那么每次判断能不能放a,如果排列的最大值小于k,那么只能放b,同时要修改k的值,否则就放入a,同时在放入时要修改ab的剩余数量。通过代码#include <bits/stdc++.h>#define ll long long#define fi firs

2021-05-24 13:33:01 239

原创 D. Dragon Balls

题目链接????2020-2021 ICPC Northwestern European Regional Programming Contest (NWERC 2020)D. Dragon Balls题意给你n个球要求你在1000次询问以内找出球的位置。思路首先我们肯定从原点开始询问,如果给出的距离不是0,那么你就继续询问,我们每次只找当前的小球,当你给出小球距离的原点的距离时,那么你就找和原点距离给给出值一样的点,然后记录这些点,每次询问这些点的位置距离是否为零,这样肯定能找到。#incl

2021-05-10 14:39:07 210

原创 E. Arranging The Sheep

E. Arranging The Sheep题目????题目大意给你一行字符串,要求你使用最少的移动次数使得所有的‘*’排在一起。思路只有选择这些‘*’中的中间位置才能使得移动最小,中位数的性质,所以你从中间的那个符号开始,一个往前找差值,一个往后找差值,主机在算距离时,移动的符号受前面的符号影响。通过代码#include <bits/stdc++.h>#pragma GCC optimize("Ofast")#pragma GCC target("avx,avx2,fma")

2021-05-06 20:36:15 199

原创 C. Phoenix and Towers

C. Phoenix and Towers题目链接题目大意给你n块石头每块高为hi,要求搭成m座塔,并且任意两座塔的高度之差不会超过x。问是否可行,如过可以将对应的石头划分到一个下标中。思路题目给的数据范围就可以说明一定可以搭成的,每块石头都小于差x,那么总存在组合使得其差不会超过x,那么如何组合,将每块的高度存放于set中这样每次访问时,就可以先访问小的元素,每次取出首元素,删除首元素,之后将输入的ai之和压入set中,这样可以让访问到的元素差值尽可能的小通过代码#include <b

2021-05-03 13:01:47 583 1

原创 5733. 最近的房间

5733. 最近的房间题目连接题目思路我们先对每个房间的面积和询问的面积限制进行排序,然后从大到小枚举每一种情况,如果能房间大于面积限制就将房间压入set中,为什么压入set中,因为这里面是有顺序的,怎样才能使得绝对值只差最小呢,那么肯定是肯定是询问值的左右两个值,然后通过二分找到当前询问的大于限制值的第一个房间号和其前一个值,如果左边值小等于右边值,那么左边就是要找的答案,否则就是右边,但是有可能这个房间不存在那么就需要在set两边加上左右边界。通过代码class Solution {

2021-05-02 20:07:46 68

原创 D. Maximum Sum of Products

D. Maximum Sum of Products题目链接题目大意给你两个长度均为n的序列a,b,要求你只能修改a的一个连续区间使其反转且至多一次,使得 ∑i=1n\displaystyle\sum_{i=1}^ni=1∑n​a[i]*b[i]的值最大。思路首先我们先求出序列的和最大值是多少,然后在修改时,我们记录修改前后的差值的最大值,就可以了,那么怎么记录呢,反转是一个连续的区间,所以我们可以先从连续区间的最小值开始反转,然后一层向两边拓展,每次记录一个差值的最大值,然后当前状态是由上一个状

2021-05-01 18:45:35 244

原创 C. Berland Regional

C. Berland Regional题目链接题目大意有多个学校,每个学校若干名学生,每个学生有不同的能力,要求每个队人数有k(k>=1&&k<=n)的限制,只有当每个队人数为k时,才能派出比赛,问在不同人数下,能力值总和最大为多少?思路能力值高者优先派出,所以从大到小排个序,然后用每个学校的队员数模一个队的人数,有余数就不派倒数的几个人去。这样可以的到最优解。通过代码#include <bits/stdc++.h>#pragma GCC optimi

2021-05-01 18:27:58 343

原创 线段树好题

线段树好题题目链接题面思路连续字段和包括线段树当前节点的三个部分:1.最大连续子段和只出现在当前节点的左儿子的连续区间中,2.最大连续子段和只出现在当前节点的右儿子的连续区间中,3.最大连续子段和出现在当前节点的左儿子和右儿子所组成连续区间中。那么你需要维护当前节点的几个信息,左右儿子的前缀和,后缀和,以及左右儿子的总和。这里一个个比较如果最大连续子段和是前缀和,是不是只需要比较左儿子的总和和加上幼儿子的最大前缀和与左儿子前缀和的比较大小取max,同理后缀和是不是右儿子的总和加上左儿子的后缀和的最

2021-04-27 20:47:05 112

原创 线段树

线段树模板题线段树可以在较低时间复杂度下访问和维护区间信息,它利用了树形结构每个节点的父节点,存储它的子子孙孙的信息,比如和权值等,例如根节点存储这个区间里的信息,以模板题为例,首先我们得先建树,根节点存储整个区间的和,然后其左儿子存储前一半区间的和,右儿子存储后一半区间的和,然后递归建下去,知道访问到叶子节点时,其区间长度为一,就是代表这个区间里的一个元素值,这里需要注意,建树时,我们先递归到叶子节点才能开始建树。然后就是懒标记,就是在添加区间信息时,不一定需要往下更新,只更新当前的节点的值,并在当前

2021-04-26 17:54:02 59

原创 C. Fillomino 2

C. Fillomino 2题目链接题目大意给你一个数n,表示一个n*n的矩阵,然后输入对角线上的元素,问你能否建立一个只有主对角线以下元素的矩阵输出,每个相同元素必须连通,每个元素的个数必须等于该元素值的大小思路这样的矩阵一定是存在的,因为元素个数和矩阵的能容纳的元素相等,那么如何构建呢,每次主对角线上元素开始,能往左构建尽量往左构建,当到了左边界时,然后一直向下面构建,当到到达底部时,就一直向有右构建,这样构建是最优的,因为这个对角线上的元素最低可能的影响下一个对角线上的元素。通过代码#i

2021-04-24 13:06:05 594

原创 C. Baby Ehab Partitions Again

C. Baby Ehab Partitions Again题目链接题目大意给你一个长度为n的序列要求你使得这个序列无论怎么划分成两个子序列,其和都不会相等。要求你输出这个序列中需要删除元素的下标。思路当原序列的和为奇数时不需要删除,这个序列无论怎么划分都不会出现相等的情况,如果为偶数,先除去序列元素的最大公因子,这样方便找出一个奇数,直接去除,然后就是判断这些元素中能不能凑出总和的一半,能不能凑出一半,等价于01背包问题,背包的限制就是总和的一半,最大价值也就是总和的一半。通过代码#inclu

2021-04-22 21:52:27 233 1

原创 B. AGAGA XOOORRR

B. AGAGA XOOORRR题目链接题目大意给你一个长度为n的序列进行异或运算使得序列序变为长度>=2的只有相同元素的序列。问你是否可能思路当最后相同的元素为偶数个时,最后异或得到结果为0,如果最后相同的元素为奇数个时,你只需要判断从前往后每个异或得到的结果是或否与最后一个结果相同,记录这些个数,如果个数大于2的话就是可以的,也就是将这些元素,转换为最后异或结果相同的元素,为什么是大于2呢,如果从0只有一个元素也就是最后一个那么绝对不可能,如果从1呢这种情况属于偶数,会被直接判断掉。通

2021-04-22 19:41:45 165

原创 C. Product 1 Modulo N

C. Product 1 Modulo N题目链接题目大意给你一个数要求让你从1到n-1中尽可能多的取数使得乘积模n等于1思路你只能那和n互质的数,否则在模n时,其取模结果不会为1,gcd(p%n,n)=gcd(p,n),也就是如果n和k*n+1互质的话,那么,存在一个数都能被这两个数整除,那么这个数一定是1,所以你只需要取与n互质的数放到序列中,但是有可能这个乘积模n不是1,那么你将这个不是1的余数在原序列中删除,就可以的到答案,为什么呢,你除去的这个余数相当于相当于整除余数本身,由于整除本身是

2021-04-22 19:26:30 173

原创 C. The Sports Festival

C. The Sports Festival题目连接题目大意给你一个长度为n的序列,要求然你找到一种排列使得在前i个数中最大值与最小值差的总和最小思路怎样拿才是最小的拿法呢,先将原序列排序之后进行区间dp,最小和是由区间长度从1~n变化来的,那么从1开始,以1为长度滑动串窗口,找到长度为中区间元素差值最小值,为什么取相邻元素呢,因为这个序列已经排好序了,那么肯定是相邻元素差值最小,然后在长度是2的最小值,长度为2的最小值是由长度是的最小变化而来,而为2的区间有两种变化方法,dp[当前位置][当前位

2021-04-19 17:01:50 72

空空如也

空空如也

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

TA关注的人

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