- 博客(201)
- 收藏
- 关注
原创 Python+Vuecil笔记
Vue.component('dweb-msg',{ {# 这是自定义标签名 #}{# 内部结构和组件一样 #}data(){return {msg: '开发完毕 '},template:"<h1>当前开发状态:{{ msg }}</h1>",})new Vue({})
2024-04-07 21:28:59
749
原创 归并排序(acwing,算法基础课)
就是通过递归,一直把一个数组一分为二,直到分到2个数的组合,然后看前一个和后一个,这时这两个小数组是有序的,把他们按大小,分别放进新数组里,就实现了排序,这样,这两个小数组组成的大数组也排好序了,以此类推。
2024-04-04 15:26:51
364
原创 CF1898D Absolute Beauty(贪心)
通过举例可以发现,a,b,谁大谁小无所谓,可以全部转为a < b的形式。可以交换一次(也可以不交换)数组b中的两个数,使绝对美丽值最大。交换b的两个数后,可以给最后结果增加的情况。找最小的b和最大的a算出增加的结果加上即可。有两个长度为 n 的数组 a 和 b,所以只有两个区间不相交时,才能改变结果。主要看思路,代码写的很乱。
2023-12-10 13:45:50
276
原创 CF1898C Colorful Grid(构造)
问一共走 k 条边,能不能从 (1, 1),走到(n, m),要求该路径上,每条边的颜色都是红蓝交替的,可以走重复的边。n 行 m 列 的一个矩阵,每行有m - 1条边,每列有 n - 1 条边。若余2,则先把这两步在开头时消耗掉,剩下的,绕着最后一圈转。能被整除,就让它,绕着最后一圈转。
2023-12-10 13:05:46
249
原创 CF1898B Milena and Admirer(贪心)
复述一遍思路:当前面的数比后面的数大时,就需要拆分这个数,拆成尽可能少的个数,每个数还要尽可能大,这些数取决于后一个数,当前数 除以后一个数,如果能整除,那就分为那么多个数,且是最大的,若不能,则会多分出一个数,要使它们尽可能大(最小值最大),就是要让那个余数最大,但余数肯定大不过除数,就把这个数平均分为这么多个数,多出来的就平均分配进分出来的每一个数里面,实现最大化最小值的操作。
2023-12-10 12:43:10
261
原创 CF1899B 250 Thousand Tons of TNT
用k辆货车按顺序装这些货物,条件是每辆车上的货物个数都一样,也即是说。求任意两辆车货物总重量的最大的差值。这题直接是暴力枚举,细节见代码。
2023-11-18 09:06:44
492
原创 CF1899C Yarik and Array(DP,贪心)
好久没打CF,生疏了,第二题暴力,思路对了,但很多细节没写好,比如最大值答案用了0x3f3f3f3f,事实上在long long int 的情况下0x3f3f3f3f是不够大的,连续改大了两次才写对。这题先写了一遍暴力,错了,然后才想的优化。暴力版int main()int T;cin >> T;int n;i
2023-11-18 08:25:20
299
4
原创 789. 数的范围
我觉得二分的整体思路是很好理解的,难的地方就在于写法上的细节,比如要不要+1,要不要等于。数据较大,且找左右端点,利用二分。找哪边,哪边就+1,另一边就=
2023-11-17 00:36:38
171
原创 以结构体为键值时的map报错
也不知道为什么,总之好像只要直接用一个结构体的变量作为键值而不是手写的。然后我查了一下原因,必须得加个排序才行。这个样子的,就会报一堆奇怪的错误。
2023-10-07 23:27:10
167
原创 CF1729C Jumping on Tiles(思维题)
也可以理解成,距离一定,在指定的距离内,经过尽可能多的站点,所以要尽量多经过顺路的站点。权值最小是|a[1] - a[n]|,要在这个权值下尽可能多的跳字符,那么。如果a[1] < a[n],那么在中间就跳递增的字母。如果a[1] > a[n],那么在中间就跳递减的字母。
2022-09-23 13:21:40
375
原创 CF1703F Yet Another Problem About Pairs Satisfying an Inequality(思维,二分)
的数处理出来,然后,看对于每个下标,有多少个大于它的值即可,可以把所有符合要求的值进行排序,然后通过二分快速求解。,在所有被处理过的数中,只要找到大于。一定在 i的后面,因为实在符合。的数里面找,所以只要是大于。
2022-09-23 09:48:36
471
原创 CF1391C Cyclic Permutations(思维,找规律)
通过找规律发现,只有当一个排列中的一个数的两边都有1个比他大的数时才可能有环,比如说312,1432,如果没有,就不可能有环,比如1234。n = 5, 共有120种,120 - 104 = 16 =n = 6, 共有720种,720 - 688 = 32 =我们又知道,一个数所有的排列有n!n = 4, 共有24种,24 - 16 = 8 =n = 3, 共有6种, 6 - 2 = 4 =n = 5, 有104种,n = 6, 有688种,n = 4, 有16种,n = 3, 有2种,
2022-09-22 16:08:11
266
原创 CF1374C Move Brackets
想要把序列操作成合法序列,那么就在右括号的数量一超过左括号,就把它移到最右边去就好了,然后计算一下移了几次。一个符合要求的括号序列,一定是无论什么时候,左括号的数量都小于等于右括号的数量。
2022-09-20 20:23:59
161
原创 L2-031 深入虎穴 (25 分)
L2-031 深入虎穴 (25 分)原题连接题意找最深层的叶子节点思路根据题意,第i行的点的父节点是i,那么就可以根据这种方案建图。每行的数都是i的子节点。坑点需要手动找一遍没有出现过的点做头结点代码#include <bits/stdc++.h>using namespace std;const int N = 1e5 + 10;vector<int> g[N];int res[N];void dfs(int u, int cnt)//当前在那个点,当
2022-04-20 14:46:20
361
原创 L2-026 小字辈 (25 分)
L2-026 小字辈 (25 分)原题连接题意找最底层的叶子节点思路根据题意,输入一个数组a[i],第i个数的父亲是a[i],祖宗节点的父亲是-1,那么就可以根据这种方案建图。i为父节点,a[i]为子节点。坑点暂无代码#include<bits/stdc++.h>using namespace std;const int N = 100005;int a[N];int res[N];int n;vector<int> g[N];void dfs(in
2022-04-20 14:28:54
155
原创 方格分割【dfs】
题面思路dfs分割路径因为要分割出两个一模一样的图形来,所以路径肯定会经过(3, 3)这个点,且两边路径也一定对称。所以就从(3, 3)开始dfs,把当前它走过的点标记为走过,再把另一边对称边也标记为走过,这样就可以事项同时两边走了。一旦走到边界答案就+1最后答案需要除以4,因为对称的两部分会有重复。代码#include <bits/stdc++.h>using namespace std;const int N = 10;int g[N][N];int ans = 0
2022-04-19 21:16:44
245
原创 154. 滑动窗口
原题链接思路见注释代码#include<bits/stdc++.h>using namespace std;const int N = 1e6 + 10;int n, k;int a[N];int q[N];int main(){ cin >> n >> k; for (int i = 1; i <= n; i ++ ) cin >> a[i]; //求最小值 int hh = 0, tt
2022-04-08 19:23:03
202
原创 递增三元组
原题链接题面思路因为没有规定i,j,k,所以可以对三个数组进行排序枚举b,然后在a数组中找到比b[j],小的最后一个数的编号i,再找到比b[j]大的第一个数的编号k,再用(i - 1) * (n - k + 1)算出有几种方案,然后求总和即可。注意开longlong代码#include<bits/stdc++.h>#define int long longusing namespace std;const int N = 1e5 + 10;int a[N], b[N],
2022-04-08 18:01:42
203
原创 四平方和【二分】
原题链接题面思路因为如果要用三重循环,看数据范围肯定会超时 (其实不会)那么就考虑到用双重循环,把两个数的平方先存下来,存在结构体里,然后再枚举两重循环,两个数,看能否和另外两个数凑成n,那就二分出第一个那个数,看是否存在,找左端点,所以是r = mid.代码#include<bits/stdc++.h>#define int long longusing namespace std;const int N = 2e7 + 10;struct name{ int s;
2022-04-08 17:21:36
252
原创 P1182 数列分段 Section II
原题链接题面思路通过读题,可知题目是最大化最小值,容易想到二分,我觉得难点就在于想到二分什么,这道题是直接二分最大值,看那个最大值情况下,分段是否能符合要求,最终得到一个正好m段的值。代码#include<bits/stdc++.h> #define int long longusing namespace std;const int N = 1e5 + 10;int a[N];int n, m;bool check(int x){ int la = 0; int
2022-04-07 14:28:52
209
原创 信息学奥赛一本通T1433-愤怒的牛【二分】
原题链接题面题目题目描述农夫 John 建造了一座很长的畜栏,它包括N(2≤N≤100,000)个隔间,这些小隔间依次编号为x1,…,xN(0≤xi≤1,000,000,000). 但是,John的C(2≤C≤N)头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们就要发生争斗。为了不让牛互相伤害。John决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是什么呢输入第一行:空格分隔的两个整数N和C;第二行—第N+1行:i+1行指出了xi的位置。输出一
2022-04-06 21:20:26
376
原创 题目 2117: 信息学奥赛一本通T1310-车厢重组
原题链接题面题目题目描述在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多少步就能将车厢排序。输入有两行数据,第一行是车厢总数N(不大于10000),第二行是N个不同的数表示初始的车厢顺序。
2022-04-06 14:58:32
213
原创 题目 1463: 蓝桥杯基础练习VIP-Sine之舞【递归】
原题链接题面题目题目描述最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。不妨设An=sin(1–sin(2+sin(3–sin(4+…sin(n))…)Sn=(…(A1+n)A2+n-1)A3+…+2)An+1FJ想让奶牛们计算Sn的值,请你帮助FJ打印出Sn的完整表达式,以方便奶牛们做题。输入仅有一个数:N<201。输出请输出相应的表达式Sn,以一个换
2022-04-06 14:48:21
169
原创 JAM计数法2
题目链接题意每个字母代表一个数字,且这个数字的每一位需要是递增的(各不相同),然后给出第一个数,要求出接下来五个数字,要求是比上一个大的最小的数字,不足五个的则有几个输出几个。思路给数字的最后一位后面设定一个界限,即给定范围内的字母再+1,然后每次从最低位开始看,能变大就变大,且后面所有的字符都变成当前这个字母变大后+1递增的,这样可以使这个数字最小。比如:bdfij,找到f可以+1变成g之后,当前数字就是bdgij,可是这样就不是最小的,使ij变成g+1递增的就是hi,那么正确的答案就是b
2022-04-06 14:16:46
167
原创 题目 1626: 蓝桥杯算法训练VIP-幂方分解
原题链接题面题目题目描述任何一个正整数都可以用2的幂次方表示。例如:137=27+23+20137=2^7+2^3+2^0137=27+23+20同时约定方次用括号来表示,即ab 可表示为a(b)。由此可知,137可表示为:2(7)+2(3)+2(0)进一步:7=22+2+207= 2^2+2+2^07=22+2+20 (212^121用2表示)3=2+203=2+2^03=2+20所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)又如:13
2022-04-06 14:13:20
130
原创 题目 2217: 蓝桥杯算法训练-递归求二项式系数值
原题链接题面题目题目描述输入一个满足题目要求的输入范例。输出与样例输入对应的输出。样例输入3 10样例输出120思路类似斐波那契数列,定义n, k,然后每次进行(k,n−1),(k−1,n−1)(k, n - 1),(k - 1, n - 1)(k,n−1),(k−1,n−1),边界条件是k==0∣∣k==nk == 0 || k == nk==0∣∣k==n一旦遇到边界,结果+1.代码#include<bits/stdc++.h>using namespa
2022-04-06 13:45:21
153
1
原创 题目 1004: [递归]母牛的故事
原题链接题目题目描述有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。输出对于每个测试实例,输出在第n年的时候母牛的数量。每个输出占一行。样例输入2450样例输出246思路每个年份奶牛的数量取决于去年奶牛的数量以及三年前奶牛的数量,因为三
2022-04-06 13:30:29
405
原创 JAM计数法【dp】
原题链接题面题意每个字母代表一个数字,且这个数字的每一位需要是递增的(各不相同),然后给出第一个数,要求出接下来五个数字,要求是比上一个大的最小的数字,不足五个的则有几个输出几个。思路给数字的最后一位后面设定一个界限,即给定范围内的字母再+1,然后每次从最低位开始看,能变大就变大,且后面所有的字符都变成当前这个字母变大后+1递增的,这样可以使这个数字最小。比如:bdfij,找到f可以+1变成g之后,当前数字就是bdgij,可是这样就不是最小的,使ij变成g+1递增的就是hi,那么正确的答案就是
2022-03-28 19:11:52
549
原创 Usaco2007 Nov Milking Time dp
题目链接思路利用的是最长上升子序列的思路,先把每个时间段按开始时间排序,然后dp,以每个时间段作为结尾时的最大价值。fif_ifi 表示以第i个时间段结尾的最大的价值代码#include<bits/stdc++.h>using namespace std;struct name{ int l, r; int x;};const int N = 1005;vector<name> v;bool cmp(name a, name b){ return a.
2022-03-10 23:07:09
120
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人