- 博客(130)
- 资源 (5)
- 收藏
- 关注
原创 8.29-9.4 OJ做题笔记
给定n*m的网格。学生从第一行(1,1)开始进入,每来一个学生改行学生往后右移一个位置,该行最后一个位置学生进入下一行第一个,以此类推。每个学生有个标志0和1.求第i个学生进入后,至少一行有学生1和至少一列有学生1的行列个数总和。第二行到最后的情况可以由前面已求过dp[j-m]的推出,只需考察第一行的情况即可。:可以考虑多个时间步长的增量关系,不要仅限于相邻步长的增量关系。多考虑是否有可以利用的子问题。对列,使用队列模拟。.........
2022-09-01 11:02:52
471
1
原创 Codeforce8.24-8.28做题记录
给定n个独特的二维坐标点,找出距离每个点最近汉明距离的不在这些n个独特二维坐标点的整数坐标二维格点。再遍历这些点的邻接顶点,一定可以加入一些距离为2的点。事实上,对于距离相邻的点或者说挨在一起的点可以。没有找到对每个点在Log复杂度内的算法。首先距离最近汉明距离为1的点。显然每次都可以加入。迭代到所有点都加入完毕即可。.........
2022-08-24 20:58:31
656
原创 背包问题总结
一个旅行者最多能装M公斤的背包,现有n件物品,它们的重量分别是W1,W2⋯Wn,它们的价值分别是C1,C2⋯Cn.求旅行者能获得的最大价值。
2022-08-16 10:31:10
339
原创 Codeforce 8.15-8.22做题记录
不必要的重复搜索。上述做法是遍历i,然后遍历每个v。但v的取值空间是十分有限的(最大值的取值),即使是在不同的i处,相同的v搜索结果完全一致。:给定长度为n的数组a,数组p长度为n且其中每个元素可在[1,k]间取整数。:注意如何才能避免不必要的重复搜索,可以与以前那道调和级数的题做对比。=i求最后一个小于等于该值的数。超时的思路:对每个i预处理能够达到的数。:直接枚举上述最大值v,其余做法相同。...
2022-08-15 15:47:22
306
原创 Codeforce 8.1-8.14做题记录
从整体上把握找出一种“编码方法”使得那个特定的k的编码和其他c数组的编码不同。第一种操作涉及下标为p,q,p-1,q+1,第二种操作涉及下标为p,q,p-1,q+2导致不同所以编码时需要可以涉及这个下标信息。对第一种操作如果将下标与数本身相乘则变化前后涉及下标的项以及常数项会相互抵消,就不会变化。从物理的角度来看第一种操作好像是在四个比较对称的位置加减质量一样的,直观来看质心不会变化,而第二种操作质心会变化。第一种操作是非常对称的,第二种操作是非常不对称的。,初始都与数组b相同。给定数组b长度为m。....
2022-08-03 13:28:01
472
原创 CF 7月25日-7月31日做题记录
由于有对称性所以随机选一格点涂上任意一种颜色,然后随机选其邻居三个格点涂上与其自身同样的颜色。然后不断试探可知要想达成目标必须每种颜色能图满涂上2列或2行。问是否存在一种方法使得每个格点上下左右四个格点至少有三个格点与其自身颜色完全一致。(这里的上下左右假设是环状的上下左右即假设矩阵上下相连左右相连)种颜色给每个网格涂色,其中第i种颜色至多可涂。.....................
2022-07-25 10:58:29
227
原创 2022-07-18 至 2022-07-25 记录
从起点到终点走的格点数是固定的,都是n+m-1。因此n+m-1为奇数时,不可能达成目标。而n+m-1为偶数时,由于奇+奇=偶,奇-奇=偶,因此到达(n,m)点的所有路径和都为偶数。这是因为可以移动每次上下水平向右移动的步骤使得路径和变为最大值。给定n*m方阵,每个格点上有1或-1。问是否存在从起始点(1,1)到(n,m)一条和为0的路径。这种思想以前是遇到过的,见那个很妙的滑动窗口均值的题(jujuandbinarystring2800)。,每次移动改变路径和-2或2。...................
2022-07-18 13:29:59
339
原创 CF与leetcode刷题笔记7.13-7.17
题目大意:设a1⋯ana_1 \cdots a_na1⋯an是1-n的排列,给定b1=⌊1a1⌋,b2=⌊2a2⌋⋯bn=⌊nan⌋b_1 = \lfloor \frac{1}{a_1} \rfloor,b_2 = \lfloor \frac{2}{a_2 } \rfloor \cdots b_n = \lfloor \frac{n}{a_n} \rfloorb1=⌊a11⌋,b2=⌊a22⌋⋯bn=⌊ann⌋求任意一个满足条件满足条件a1⋯ana_1 \cdots a_na1
2022-07-13 21:09:32
387
原创 leetcode301周赛记录
具体地,对最后一个数字每个质因子j,设有i个质因子j,将其分配到n个位置。采用隔板法将i个质因子j分成n份,两个隔板如无质因子则认为对应的盒子中数字与前一个数字相同。共n-1个隔板,i个数字,则对每个质因子j划分种类数为Cn−1+in−1C_{n-1+i}^{n-1}Cn−1+in−1。对某一质因子j的分配方法,对另一质因子j,j^,j,都可另生成Cn−1+i,n−1C_{n-1+i^,}^{n-1}Cn−1+i,n−1种全新的方法,其中i,i^,i,是质因子j,j^,j,的次数,以此类推。上述代码求
2022-07-11 13:39:26
1515
原创 Leetcode周赛295记录
该场比赛反应出基础不牢靠的现象T3T3T3-将式子等价变形,用乘代替除()避免下取整和浮点数导致的精度误差T4-巫师的总力量和考虑以每个巫师为末尾的子数组。需要在左侧查找第一个小于的数使用单调栈(忘记了)注意该取模的地方才取模class Solution { typedef long long ll; const long long mod = (ll) (1e9 + 7); public: ll getrangesum(ll pre[],int i,int j) { ll
2022-05-23 23:32:41
288
原创 leetcode 291周赛+77双周赛记录
这两场比赛暴露出自己较多知识的漏洞。故记一下周赛T4-字符串的总引力突然没有思路了解空间划分:以某个位置字符结尾的所有子字符串引力总和class Solution {typedef long long ll;public: long long appealSum(string s) { long long ans = 0; long long dp[s.size()]; dp[0] = 1; int last[26.
2022-05-03 15:26:42
1503
原创 leetcode周赛290记录
T3 统计包含每个点的矩形数目注意数据范围。纵坐标取值空间较小故在纵坐标维度上,对每个相同的纵坐标的横坐标进行排序。而不是反过来class Solution {public: vector<int> countRectangles(vector<vector<int>>& rectangles, vector<vector<int>>& points) { vector<int>
2022-04-25 22:15:12
836
原创 Codeforces Round #783 (Div. 2) A-F
E. Half Queen Cover(待补充 构造动机不太理解)#include <iostream>#include <vector>#include <string>#include <set>#include <algorithm>#include <map>#include <queue>#include <chrono>#include <math.h>#includ
2022-04-21 21:12:51
535
1
原创 Codeforces Round #782 (Div. 2) A-E题
D题(Reverse Sort Sum)合理构建子问题-待补充思路(从后往前更简单)从前往后(复杂):分类讨论,从第一个数开始考虑。考察后面多加多少个1才能使得和等于目标值。思路较模糊 #include <iostream> #include <vector> #include <string> #include <set> #include <algorithm> #include &l
2022-04-18 23:18:45
327
原创 LC周赛289(卡常记录)
记录在线更新最大值,次大值的算法 if (tmp>mx1) { mx2=mx1; mx1=tmp; } else if (tmp>mx2) { mx2=tmp; }注意:传递引用较快,传值较慢也可将其放入成员变量中,较快class Solution { int ans = 0; ..
2022-04-17 23:42:32
368
原创 2022春季力扣杯T4-守护太空城(状压DP)
思路由于时间取值空间较小,因此考虑在时间的维度上进行状态压缩由于仅有联合屏障影响连续的2个结点,枚举每个点在每个时间所使用的联合屏障情况(使用五位二进制压缩,第i位为1当且仅当在该时间点使用联合屏障)转移的限制:与前面一个结点使用的联合屏障互不相交如果当前结点还有遭受撞击的时刻,只能单独开屏障class Solution {public: int defendSpaceCity(vector<int>& time, vector<int>&..
2022-04-17 17:28:22
340
原创 CF1654-G. Snowy Mountain(2900) GOOD
思路分析最优解性质任意两个点高度至多相差1任取一条最优滑雪路径。最后反复出现的点一定最多仅有2个。其余的路径上的点互不相同。若不然,可以将其余的重复点构成的路径加到这两个点的反复中。如果能反复,考虑在点uuu开始进行反复。开始点为点v。则最长能滑动的总路径为2hv−hu2h_v - h_u2hv−hu这是因为从点v到点u多余能量hv−huh_v - h_uhv−hu,在u点开始与其邻居进行反复,直到能量消耗为0.至此,共消耗能量2(hv−hu)2 (h _v - h_u)2(hv.
2022-04-17 11:25:07
316
原创 leetcode-商店促销活动(DP GOOD)
有时候结合题目条件,求出所有dp值,最后再筛选满足条件的部分思路分类讨论:A购买3件及以上,A未购买3件以上设dp[i][j][k]dp[i][j][k]dp[i][j][k],处理到第i件商品,A累计已经购买j件(如果j>=3,那么j=3),B当前状态为k件(k = 0,1,2)时价格的最小值A购买3件以上:从初始开始转移,只不过最后只取j=3,即dp[n][3][k],k∈0,1,2dp[n][3][k],k\in 0,1,2dp[n][3][k],k∈0,1,2.打7折的处理:转..
2022-04-16 15:18:06
1123
原创 Educational Codeforces Round 126 (Rated for Div. 2) A-F
A题:Array Balancing(迷惑性很强)迷惑性强:下界:每一对取min{∣a[i]−a[i−1]∣+∣b[i]−b[i−1]∣,∣a[i]−b[i−1]∣+∣b[i]−a[i−1]∣}min\{|a[i]-a[i-1]|+|b[i]-b[i-1]|,|a[i]-b[i-1]|+|b[i]-a[i-1]|\}min{∣a[i]−a[i−1]∣+∣b[i]−b[i−1]∣,∣a[i]−b[i−1]∣+∣b[i]−a[i−1]∣}一定可以构造出该下界:后面只需看前面i-1是否交换。或考
2022-04-10 18:37:38
554
原创 Codeforces Round #778 (Div. 1 + Div. 2, based on Technocup 2022 Final Round)
alice and cake思路自顶向下模拟当前蛋糕最大值大于a最大值,那么需要切割该最大值。(如果不切最终结果一定不是a)当前蛋糕最大值等于a最大值那么两者一定可以匹配,然后考虑子问题即可。否则报错。int main(){ int t; cin>>t; for(int i = 0;i<t;i++) { int n; cin>>n; priority_qu
2022-04-07 12:11:13
318
原创 LEETCODE周赛记录287
区间哈希+二分做法哈希魅力在于能快速判断两个字符串是否相同维护前缀哈希值,计算s的每个区间的哈希对每个s的后缀,由于从某个点开始往前全部满足公共前缀,某个点往后不满足公共前缀,故可使用二分查找最后一个满足条件的点。判断字符串是否符合条件使用区间哈希typedef long long LL;typedef unsigned long long ULL;const int N = 100010, P = 13331;class Solution {public: ULL h[N.
2022-04-03 22:50:43
404
原创 Codeforces Round #779 (Div. 2) 记录
Marin and Anti-coprime Permutation思路(规律的做法)场上很多人过,而自己完全没思路划分解空间:考虑最大公约数可以取哪些值可以多写几个排列发现规律。最终发现最大公约数只可能小于等于2.难度一下降低了!当最大公约数等于2时,只有n为偶数的时候可以满足,并且奇数与偶数配对,偶数与奇数配对。每个n!2\frac{n!}{2}2n!种。int main(){ int t; cin >> t; for(int i = 0;
2022-04-02 17:30:01
516
原创 测温(单调队列练习)
单调队列(经典问题:滑动窗口最大值)和单调栈类似的数据结构经典问题:滑动窗口最大值:给出一个可能包含重复的整数数组,和一个大小为 k 的滑动窗口, 从左到右在数组中滑动这个窗口,找到数组中每个窗口内的最大值。单调队列中的元素是严格单调的。我们在求解这个问题的时候需要维护他的单调性。队首元素即为当前位置的最大值。假设要求滑动窗口中的最大值。我们就需要确保滑动窗口中的元素从队首到队尾是递减的。每滑动一次就判断当前元素和队尾元素的关系,如果放入队尾满足单调递减,那么放入即可;如果放入不满足,就需要..
2022-04-02 12:50:35
490
原创 CCPC2020绵阳-Lottery(思维)
一定要注意取模啊!这道题当时不取模调试了2hour炸了啊!思路思维题:先将所有aia_iai排序,考察相邻的幂次差距。将第一个aia_iai往后转移一个,考虑子问题即可。两种情况:小于等于余数的个数乘以后面子问题的所有方案大于余数的只能乘后面子问题的所有方案减去1#include <bits/stdc++.h>using namespace std;#include<iostream>#include<vector>#include<..
2022-03-31 23:09:06
151
原创 F. Minimal String Xoration(后缀数组(radix sort)2800 GOOD)
后缀数组基于倍增和基数排序的思路求出字符串每个后缀的字典序列rank性质思路:对所有可能的字串进行排序,并不需要一些DP或贪心!对于本道题可以多写一些字符串以发现一些规律。设原始字符串为s0s1⋯sns_0s_1 \cdots s_ns0s1⋯sn关键步骤:设选用sis_isi作为逐个异或的字符串,则最终字符串变为s0⊕i,s1⊕i,⋯sn⊕is_{0 \oplus i},s_{1 \oplus i},\cdots s_{n \oplus i}s0⊕i,s1⊕i,⋯s..
2022-03-31 00:01:56
503
原创 CF - Star MST(组合数学 2200)
思路考察与1结点相连的边构成的生成树。要使得最小生成树权值总和等于这颗生成树的权值总和,当且仅当该生成树的所有叶节点两两间的边权值都大于等于从1结点指向这两个叶节点的边权值于是当1号结点指向这些叶节点的权值确定时,方案数也就确定了。最终变成一个组合数学问题...
2022-03-29 22:36:55
430
原创 CF 1654E - Arithmetic Operations(GOOD-2300)
思路代码#include <bits/stdc++.h>using namespace std; // #include <ext/pb_ds/assoc_container.hpp>// using namespace __gnu_pbds; // struct splitmix64 {// size_t operator()(size_t x) const {// static const size_t fixed = chrono..
2022-03-28 12:59:43
452
原创 leetcode周赛286-找到指定长度的回文数(没有找到很好的解法)
这道题当时老是想着固定最外面的两个数,里边的呈周期状态。边界条件很多,上下取整考虑不周,写出了很臃肿的代码#include<iostream>#include<algorithm>#include<map>#include<stdio.h>#include<string.h>#include<unordered_map>#include<vector>#include<queue>#inc..
2022-03-27 17:22:36
108
原创 CF两题的感想
Make equal with mod(GOOD)思路分析构造题为什么没有找到突破口这道题属于典型的构造题。需要构造x1,x2,⋯xnx_1,x_2,\cdots x_nx1,x2,⋯xn,尽可能使得最终目的达到。毕竟有输入数据,构造出来的数据很有可能就是输入数据的函数即f(a1,⋯an)f(a_1,\cdots a_n)f(a1,⋯an)。和下一道Integer Move类似,可以利用一些特殊值作为突破口,再讨论不是特殊值剩下的情况,顺理成章。但归根揭底还是对模运算的认识不足。Sol
2022-03-25 10:48:41
122
原创 Codeforce Educational Codeforces Round 125 (Rated for Div. 2) D题(预处理+调和级数在下取整中的妙用)
样例13 103 4 65 5 510 3 438 35 410 15输出15 3 -1 输入25 1514 10 39 2 210 4 37 3 54 3 1611 21 14 72 11 143 3输出214 4 14 4 7 7
2022-03-23 16:03:01
1017
原创 leetcode周赛285T4-由单个字符重复的最长子字符串
我的方案(利用有序集合维护 超时)对于每一段相同字母都利用有序集合记录(即红黑树)。开始和长度并利用map记录现有长度和长度个数每次插入,查找,删除都是O(nlogn)O(nlogn)O(nlogn)?感觉复杂度也是O(logn)O(logn)O(logn)?应该是被卡常了?#include<iostream>#include<vector>#include<string>#include<set>#include<algo...
2022-03-20 21:44:44
389
原创 CSP认证201912-4区块链
70分超时做法"延时"使用循环队列模拟(和CSP脉冲神经网络类似)结点接收时仅传递vector的引用,插入时新开个vector,与原vector断开联系#include<iostream>#include<algorithm>#include<map>#include<stdio.h>#include<string.h>#include<unordered_map>#include<vector&g...
2022-03-18 20:49:03
9586
原创 CSP20206-T4 1246(向前转移DP + 矩阵快速幂优化96分)
带模矩阵快速幂模板#include<iostream>#include<algorithm>#include<map>#include<stdio.h>#include<string.h>#include<unordered_map>#include<vector>#include<queue>#include<set>#include<math.h>using na
2022-03-16 11:38:50
139
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人