自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【无标题】

有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出 最优选法的方案数。注意答案可能很大,请输出答案模 109+7 的结果。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示 方案数 模 109+7 的结果。数据范围0&

2022-05-22 16:45:36 192

原创 最大子序和

输入一个长度为 n 的整数序列,从中找出一段长度不超过 m 的连续子序列,使得子序列中所有数的和最大。注意: 子序列的长度至少是 1。输入格式第一行输入两个整数 n,m。第二行输入 n 个数,代表长度为 n 的整数序列。同一行数之间用空格隔开。输出格式输出一个整数,代表该序列的最大子序和。数据范围1≤n,m≤300000输入样例:6 41 -3 5 1 -2 3输出样例:7分析:求一段连续的长度不超过m的序列最大和单调队列套前缀和代码:#include &l.

2022-03-29 10:08:28 306

原创 Educational Codeforces Round 118 (Rated for Div. 2)

Educational Codeforces Round 118 (Rated for Div. 2)知乎体验更佳A Long Comparison题目:给定两个整数a,b然后在后面补上若干个0,比较大小解决:减去共同长度的0,然后拼接到a,b后面用字符串可以直接比较大小代码:string a, b;int x, y;void work(){ cin >> a >> x; cin >> b >> y; int d =

2021-12-04 09:13:31 184

原创 CF25C Roads in Berland

题目:给定一个矩阵,g[i][j]表示从点i到点j最短距离然后,给定k次修改,如果本次修改可以使得最短距离变得更短,请输出所有最短路径的长度2<=n<=3001<=d i,j <=1000k(1<=k<=300解决:每次只有点a和b的距离修改了,那么,我们只要更新与a和b有关的点的距离即可。代码:#include <bits/stdc++.h>using namespace std;const int N = 310;int n

2021-11-30 20:28:15 525

原创 CF14D Two Paths

题目:给定一棵树,现在要你在树上找出两条不相交的路径,使得这两条路径长度的乘积最大2<=n<=200解决:枚举点a和a的一个子结点b。每次搜索a节点所在部分的最长路径(不会经过b点),搜索b节点所在部分的最长路径(不会经过a点)时间复杂度为O(n^2)这里找树的最长路径我是用的两边dfs写的代码:#include <bits/stdc++.h>using namespace std;const int N = 210;int n;vector<

2021-11-30 17:39:25 218

原创 CF24E Berland collider

题目:在x轴上有子弹,有的往左发射,有的往有发射,并且每个子弹都有运行速度。以向右为正方向。对于输入,按照坐标递增的顺序输入。1<=n<=5*10^5 vi,xi的绝对值不超过10^9 vi!=0对于输出,输出第一次子弹相撞的时间,如果不相撞,输出-1解决:二分相撞的时间然后枚举子弹运行后的位置,如果两个子弹运行方向为相向,且本来右边的子弹到了左边子弹的左边,说明相遇了代码:#include <bits/stdc++.h>using namespace

2021-11-25 10:55:02 110

原创 Computer

题目地址:HDOJ 2196题目:给定一棵树,输出每个点能够到达的最远的距离解决:找到树的直径,分别用两端做树根,记录每个点到树根的距离,然后输出。代码:#include <bits/stdc++.h>using namespace std;const int N = 200010;int n;int h[N], e[N], w[N], ne[N], idx;int d1[N], d2[N], maxv;void add(int a, int b, int c){

2021-11-20 19:04:52 290

原创 CF9D How many trees?

题目:用n个点组成的二叉树,问有大于等于h的有多少个n<=35 , h<=n解决:DP 解决dp[i][j]表示使用i个节点,高度为j的方案有多少个。我们知道数的结构的方案数一般都是按照左右子树的方案数去推到根节点所在树的方案数。所以dp[i][j] = dp[k][j-1] * dp[i - k - 1][j-1]代码:#include <bits/stdc++.h>using namespace std;const int N = 55;int n

2021-11-15 23:08:50 852

原创 CF6E Exposition

题目:有一个长度为n的序列,现在问你子串内元素之差不超过k的原序列的子串长度最长为多少,如果有多个同样长度的答案,请输出所有子串的起点和终点下标。解决:滑动窗口,用set搞,学到了学到了代码:#include <bits/stdc++.h>using namespace std;const int N = 100010;int n, k;int a[N];multiset<int> s;vector<pair<int, int> &gt

2021-11-08 20:23:55 129

原创 CF8C Looking for Order

题目:在一个二维平面上,散落着n个物品,现在要将所有物品收集到起点(x0,y0),一只手可以拿一个物品,所以最多拿两个物品。从一个点到另一个点花费的时间为(x1 - x2)^2 + (y1 - y2) ^ 2,每次要从起点出发,然后拿一个物品或者两个物品后要返回起点。现在需要你确定收集物品的顺序,使得总的物品所需要的时间最少。1≤ n ≤ 24, 0 ≤ x, y ≤100解决:状压dp状态转移时,选择一个物品或两个物品,然后转移。dp[(k | (1 << i) | (1

2021-11-08 18:21:23 62

原创 CF6D Lizards and Basements 2

题目:有一排目标,每次可以选择一个目标攻击,每次选择攻击的那个人造成a的伤害,但是他的旁边位置会收到b的伤害不能直接攻击第一个人和最后一个人3<=n<=10; 1<=b<a<=101<=hi<=15解决:深搜 + 多次剪枝代码:#include <bits/stdc++.h>using namespace std;;const int N = 15;int n, a, b;int h[N];int ans = 1e9;

2021-11-06 16:21:20 97

原创 CF3D Least Cost Bracket Sequence

题目:给定一个序列,序列中有左括号、问号、右括号。对于一个?,可以替换成(花费为ai,可以替换成’)'花费为bi。问是否可以在代价最小的情况下,将原序列变成一个合法的括号序列。如果可以,请输出花费,以及括号序列是怎样的否则输出-1解决:首先,我们可以将问号全部变成),同时记录已有的花费,然后用cnt记录未匹配的(的个数,如果小于0了,说明对于当前’)‘多,为了合法,我们必须将某一个?有’('变成(,贪心的考虑,找到bi-ai最大的那个找出来,然后减去最优。这一操作可以利用大根堆解决代码

2021-11-06 16:12:12 72

原创 CF4D D. Mysterious Present

做题链接: D. Mysterious Present题目:给出一个限制(w, h),和n个物品的二维信息(wi,hi)求物品二维都满足wi > w, hi > h的前提下的最长二维严格上升子序列以及长度(wi > wi - 1, hi > hi - 1)如果找不到任何物品就直接输出0.物品的顺序可以任意,不做要求1≤n≤5000, 1≤w,h≤1,000,000解决:n只有5000,显然本题是具有二维限制的求最长上升子序问题,并输出子序先按照(x,y)为第一、

2021-11-04 21:07:20 160

原创 CF1C Ancient Berland Circus

题目:现在所有的马戏团在 Berland 都有一个直径13米的圆形竞技场, 但在过去的事情是不同的。在古代 Berland 竞技场的马戏团被塑造成一个规则 (等角) 多边形, 角色的大小和角度可能因马戏团而异。竞技场的每个角落都有一根特别的柱子, 柱子之间的绳子标记着竞技场的边缘。最近, 来自 Berland 的科学家发现了古代马戏团竞技场的遗迹。他们发现只有三根柱子, 其他的被毁坏了你得到了这三根柱子的坐标。请找出竞技场中最小的区域。输入三行,每行包含两个数字,表示柱子的坐标,坐标的绝对值不超

2021-11-04 09:30:03 94

原创 Dev C++ 运行后显示Failed to execute “文件夹位置“: Error 0: 操作成功完成

Dev C++ 运行后显示Failed to execute “文件夹位置”: Error 0: 操作成功完成今天遇到了这个问题,然后换了编译器还是会报错。所以排除了是编译器的问题。然后,发现,这个作物是来自代码。我敲!!。代码:我在dp上开了五维,然后编译器就挂了#include <bits/stdc++.h>using namespace std;const int N = 55;int n;int p[N], a[N], c[N], m[N], g[N];//问题出在了

2021-10-13 10:42:51 2325

原创 2021牛客暑期多校训练营10

2021牛客暑期多校训练营10H War of Inazuma (Easy Version)H War of Inazuma (Easy Version)题目:在n维空间有一个n维超立方,顶点编号从0~2^(n -1),定义二进制表示只有一位不同的数字相邻(如0和1,2,4相邻和5,6不相邻)现在分为两个阵营,分别用0和1表示,规定一个队伍相邻的友军的个数不能超过根号n上取整的个数。输出一组合法的二进制阵营编号分析:我们可以查看一下相邻的限制,自己和相邻的数字的二进制的不同在于有且仅有一个数

2021-08-24 09:34:11 134

原创 2021牛客暑期多校训练营3

2021牛客暑期多校训练营3Black and whiteBlack and white题目:

2021-08-12 09:47:02 109

原创 2021牛客寒假算法基础集训营3

2021牛客寒假算法基础集训营3【题解】2021年牛客寒假集训营第三场题解I序列的美观度线性DP题目判断错误,看了那么多模拟题,还以为这也是模拟题,没看透题哦代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <vector>using namespace std;typedef long long L

2021-08-07 23:25:39 143

原创 算法基础训练营2

算法基础训练营2【题解】2021年牛客寒假集训营第二场题解[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qqeyiHha-1628349890332)(C:\Users\86198\AppData\Roaming\Typora\typora-user-images\image-20210205071956366.png)]H牛牛与棋盘part 1 双重for就两重for循环打印矩阵就好了,这个黑白格子的划分可以用位运算&1,或者模2这样比较取巧的方式实现。

2021-08-07 23:25:05 67

原创 算法基础训练营1

算法基础训练营12021牛客寒假算法基础集训营1【题解】2021年牛客寒假集训营第一场题解F对答案一时爽对标cf难度:900知识点:贪心签到题。最小值显然是0。最大值只需要找到有多少答案牛妹和牛牛是一样的,用题目总数加上这个数即可。#include <string>#include <iostream>#include <algorithm>using namespace std;#define ll long longint n;int m

2021-08-07 23:24:16 108

原创 2021牛客暑期多校训练营6

2021牛客暑期多校训练营6F Hamburger SteakF Hamburger Steak可以发现,取好mx后,任意的一个牛排安排的时间,不会有重叠部分,直接模拟就好了#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 100005;int n, m;ll mx;ll sum;int a[N];int main(){ cin >> n &gt

2021-08-07 10:32:23 55

原创 2021牛客暑期多校训练营1

2021牛客暑期多校训练营1链接

2021-08-04 08:18:24 160

原创 AtCoder Regular Contest 124

AtCoder Regular Contest 124A - LR Constraints一题都没错出来,现在全要补,哎,出来混,迟早要还的哦做题地址:Atcoder Regular Contest 124A - LR Constraints题目:给定n张卡片,每张卡片都写着一个数字,范围是从1到k。给定k个限制,每个限制包含两个信息,第一个是字符c,第二个是一个小于等于n的数字ti,表示含义为,c = L。第ti个数字是位置ti上写着i,而这个i是第一个出现的i。如果,c = R,第ti

2021-07-30 15:44:26 232

原创 Codeforces Round #735 (Div. 2)

Codeforces Round #735 Div. 2A. CherryB. CobbC. Mikasa很废,做了一题。第二题应该暴力200的,但只暴力了100做题地址:Codeforces Round #735 Div.2A. Cherry题目:让连续区间内,最大值和最小值的乘积最大解决:可以看出相邻两个的最大乘积就是答案。分析:假设最优答案至少是长度为3的连续区间,那么,长度为3的连续区间内,有一个最大值,一个最小值,和一个中等值,那么,相邻两个的乘积要么最大,要么次

2021-07-30 09:44:55 642 2

原创 2021“MINIEYE杯”中国大学生算法设计超级联赛(4)

2021“MINIEYE杯”中国大学生算法设计超级联赛(4)Display Substring做题地址Display Substring题目:给定T组测试数据,T大小为2e3给定一个长度为n的字符串,给定k,n大小为1e5,k为n*(n+1)/2,T组数据保证n小于8e5给长度为n的字符串S,元素全部都是小写英文字母,给定26个字母的权重,问S的权重为第k大的子串的权值为多少。...

2021-07-29 16:50:26 163

原创 2021“MINIEYE杯”中国大学生算法设计超级联赛(1)

2021“MINIEYE杯”中国大学生算法设计超级联赛11 Mod, Or and Everything1009 KD-Graph1 Mod, Or and Everything打表找规律。将表打出来,然后观察规律。我们发现,求它二进制最高位下十进制值-1,注意特判整二进制的时候是n/2-1void work(){ LL n; cin >> n; if (n == 1) cout << 0 << endl; else if ((n & -

2021-07-22 09:32:46 166

原创 Codeforces Round #731 (Div. 3)

Codeforces Round #731 Div. 3A. Shortest Path with Obstacle狂刷CF的时机到了,开干开干~~2021/7/16,第2场,奥里给!!!A. Shortest Path with Obstacle

2021-07-17 11:15:33 199

原创 组合数学题锦

组合数学题锦001 杨辉三角002 D. AquaMoon and Chess001 杨辉三角做题地址:牛客小白月赛36的C 杨辉三角题目:解决:题解002 D. AquaMoon and Chess做题地址: Codeforces Round #732 (Div. 2)的D. AquaMoon and Chess题意:有T组测试数据,T的大小为10000每组测试数据有一个长度为n的0/1的字符串,n的大小为1e5,T组数据n的总长度为1e5.可以执行多次操作1(可以0次),

2021-07-17 11:09:07 147

原创 牛客小白月赛36

牛客小白月赛36C 杨辉三角C 杨辉三角公式推导过程#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll mod = 99824353;ll qmi(ll a,ll b){ ll ans = 1; while (b) { if (b & 1) ans = ans * a % mod; b >>= 1;

2021-07-17 07:26:19 146

原创 Codeforces Round #732 (Div. 2)

@[toc](Codeforces Round #732 (Div. 2))狂刷CF的时机到了,开干开干~~2021/7/15,第1场,奥里给!!!A. AquaMoon and Two Arrays题意:T次询问,T大小为100.给定两个序列a和b,长度为n,n大小为100,a和b大小为0~100.可以对序列a进行操作1若干次,直到a和b序列相等。如果可以,输出每次的操作,否则,输出-1操作1:每次选择两个下标i和j所在的数字,ai+1,aj-1。解决:如果两序列和相等,那么

2021-07-16 10:45:15 234

原创 Educational Codeforces Round 111 (Rated for Div. 2)

@[toc](Educational Codeforces Round 111 (Rated for Div. 2))狂刷CF的时机到了,开干开干~~2021/7/15,第1场,奥里给!!!A-Find The Array题目地址:A-Find The Array题意:给定一个s,问一个满足条件1的集合最小长度是多少条件1:一个长度为n的集合,其中的元素要要么是1,要么是k,如果是k的话,说明集合中已经存在了k-1,k-2解决:最贪心的考虑,从1开始,每次增长2,直到和大于n结束

2021-07-15 16:21:04 170

原创 思维题【题锦1】

思维题A-Find The Array将一些平时遇到的思维题,放在这里做一个题锦。蹲坑的时候可以看着玩,即锻炼思维,有可以重温以前做过的题,一举两得开始时间2021-07-15,更新时间2021–7-15A-Find The Array题目地址:A-Find The Array题意:给定一个s,问一个满足条件1的集合最小长度是多少条件1:一个长度为n的集合,其中的元素要要么是1,要么是k,如果是k的话,说明集合中已经存在了k-1,k-2解决:最贪心的考虑,从1开始,每次增长2,

2021-07-15 16:20:53 161

原创 AtCoder Grand Contest 021

AtCoder Grand Contest 021A - Digit Sum 2AGC难度上天,希望自己可以将题目陆陆续续的都给做出来。这里的题目质量奇高,一定要好好刷起来,这是第三篇只要是我做出来的题目,都会认真的写题解的~~A - Digit Sum 2对于这种处理数位上的题目,我总是不会做,哎!!!题目:给定一个长度为16的数字串,它表示一个大小为10^16大小的数字N,让我们找到1~N中,每位数字和最大的数字。解决:尝试给每一位降1,然后他后面的所有数位上的数字都可以变成

2021-07-14 17:08:43 167

原创 AtCoder Grand Contest 020

AtCoder Grand Contest 020A - Move and WinB - Ice Rink GameAGC难度上天,希望自己可以将题目陆陆续续的都给做出来。这里的题目质量奇高,一定要好好刷起来,这是第二篇只要是我做出来的题目,都会认真的写题解的~~A - Move and Win这题真是满满的童年啊,同年的龙虎斗什么的,双方都只剩一个棋子了,如果甲可以吃乙,如果最优的话,要是吃的到,要么吃不到。当,两个相距一格的时候,现走的那人可以将另一个人的一个方向的路封死,一直追到最后

2021-07-12 18:15:59 208

原创 AtCoder Grand Contest 题解传送门

AtCoder Grand Contest关于AGC我所做的题解传送门AtCoder Grand Contest 054

2021-07-12 14:27:33 99

原创 AtCoder Grand Contest 054

AtCoder Grand Contest 054A - Remove SubstringsB - Greedy DivisionAGC难度上天,希望自己可以将题目陆陆续续的都给做出来。这里的题目质量奇高,一定要好好刷起来,这是第一篇只要是我做出来的题目,都会认真的写题解的~~A - Remove Substrings题意:给定一个长度为n的字符串,n的大小为1e5,可以选择任意两个不相同的字符,将这两个字符下标之间所含有的字符串全部消除,问最少多少次操作后可以使字符串成为0串,输出最少次数

2021-07-12 14:24:20 242

原创 map的遍历方法

#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <queue>#include <map>#include <string>using namespace std;int n,x,ans=1,cnt;map<int,int>mp;v

2021-07-12 07:59:10 68

原创 牛客小白月赛30

牛客小白月赛30A 黑白边B 最好的宝石C 滑板上楼梯D GCD牛牛的加法导读:简单的题目,只说明题意,或者直接说明结论下面的难题,会做详细的解释和证明A 黑白边题意:n个点,m条边,每条边连接两个点,边权值有0,有1,问若图不连通,输出-1,否则,输出最少用多少个1这就很显然了,只需要用kruskal跑一遍就OK了,因为0边在前,1边在后#include <bits/stdc++.h>using namespace std;const int N = 200005

2021-07-11 15:07:52 117

原创 AtCoder Beginner Contest 178

导读:简单的题目,只说明题意,或者直接说明结论下面的难题,会做详细的解释和证明立个flag,在座的大佬们做个见证:一个月刷60场ABC,现在2021/7/9,第二十四天,已打卡二十场。F - Contrast题解参考地址我们reverse数组过后发现,a数组与b数组最多只会重复一种数字c,那么,在其他合法方案的下标所在的位置,如果有ai和bi都不等于c的话,那么我们就可以将c与bi的位置交换一下,这样就会消灭掉一处重复的位置。遍历下来,如果c全部消灭则合法,否则不合法#include .

2021-07-10 14:06:18 116

原创 AtCoder Beginner Contest 179

AtCoder Beginner Contest 179A - Plural FormB - Go to JailC - A x B + C导读:简单的题目,只说明题意,或者直接说明结论下面的难题,会做详细的解释和证明立个flag,在座的大佬们做个见证:一个月刷60场ABC,现在2021/7/9,第二十四天,已打卡二十场。A - Plural Formvoid work(){ string s; cin >> s; int n = s.size(); if (s[n

2021-07-09 11:11:10 124

空空如也

空空如也

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

TA关注的人

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