
Codeforces
在Codeforces做的题
太阳湖散步
这个作者很懒,什么都没留下…
展开
-
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 · 325 阅读 · 0 评论 -
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 · 614 阅读 · 0 评论 -
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 · 264 阅读 · 0 评论 -
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 · 187 阅读 · 0 评论 -
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 · 932 阅读 · 0 评论 -
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> >原创 2021-11-08 20:23:55 · 202 阅读 · 0 评论 -
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 · 98 阅读 · 0 评论 -
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 · 150 阅读 · 0 评论 -
CF3D Least Cost Bracket Sequence
题目:给定一个序列,序列中有左括号、问号、右括号。对于一个?,可以替换成(花费为ai,可以替换成’)'花费为bi。问是否可以在代价最小的情况下,将原序列变成一个合法的括号序列。如果可以,请输出花费,以及括号序列是怎样的否则输出-1解决:首先,我们可以将问号全部变成),同时记录已有的花费,然后用cnt记录未匹配的(的个数,如果小于0了,说明对于当前’)‘多,为了合法,我们必须将某一个?有’('变成(,贪心的考虑,找到bi-ai最大的那个找出来,然后减去最优。这一操作可以利用大根堆解决代码原创 2021-11-06 16:12:12 · 108 阅读 · 0 评论 -
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 · 220 阅读 · 0 评论 -
CF1C Ancient Berland Circus
题目:现在所有的马戏团在 Berland 都有一个直径13米的圆形竞技场, 但在过去的事情是不同的。在古代 Berland 竞技场的马戏团被塑造成一个规则 (等角) 多边形, 角色的大小和角度可能因马戏团而异。竞技场的每个角落都有一根特别的柱子, 柱子之间的绳子标记着竞技场的边缘。最近, 来自 Berland 的科学家发现了古代马戏团竞技场的遗迹。他们发现只有三根柱子, 其他的被毁坏了你得到了这三根柱子的坐标。请找出竞技场中最小的区域。输入三行,每行包含两个数字,表示柱子的坐标,坐标的绝对值不超原创 2021-11-04 09:30:03 · 129 阅读 · 0 评论 -
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 · 801 阅读 · 2 评论 -
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 · 252 阅读 · 0 评论 -
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 · 432 阅读 · 0 评论 -
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 · 214 阅读 · 0 评论 -
Codeforces Round #726 (Div. 2)
@[toc](Codeforces Round #726 (Div. 2))A. Arithmetic Arraysum表示n个数字之和,若sum == n,则不用操作,若sum < n我们只需要补一个数就可以达到目标,如果sum>n,需要补sum-n个0#include <bits/stdc++.h>using namespace std;void work(){ int n; cin >> n; int sum = 0; for (int原创 2021-06-21 15:48:03 · 147 阅读 · 0 评论 -
CodeCraft-21 and Codeforces Round #711 (Div. 2)
@[toc](CodeCraft-21 and Codeforces Round #711 (Div. 2))A [GCD Sum]模拟吧。/* *@author SunLakeWalk */#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <iomanip>#inc原创 2021-04-01 17:00:10 · 99 阅读 · 0 评论