纪中
文章平均质量分 53
。十二。
这个作者很懒,什么都没留下…
展开
-
(纪中)1315. 封锁阳光大学【二分图/黑白染色】
解题思路采用二分图黑白染色的方法,每次要新加进一个点,就把他和他相连的点大上不同的标记(黑白染色),表示他们属于不同集合, 把黑白两方中个数少的累加进答案就好了。代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#in..原创 2021-09-03 19:47:39 · 115 阅读 · 0 评论 -
(纪中)1314. 稳定的数字【高精除】
解题思路首先不难想到是要把这个数质因数分解。然后如果有大于 9 的质数就代表无法搞出来。接着我们考虑是否要把一些质数合成成大一点的,使得数位数更少。然后就会发现枚举2∼9作为因数就好了,如果能除多次就一直除(为了减少数位),每多得到一个因数就放进数组中,最后从小到大输出。PS:因为他说原来的数至少是二位数,那如果给出的数是 0,答案就是 10 ,给出的是 1,答案就是 11 ,如果是 2∼9,答案就是 12 ∼ 19 。最后:要高精除代码#include<iostream>..原创 2021-09-03 19:42:04 · 185 阅读 · 0 评论 -
(纪中)1313. 老曹骑士【BFS】
解题思路可以直接 bfsbfsbfs。状态就是 fx,y,s,zf_{x,y,s,z}fx,y,s,z 表示当前走到 (x,y)( x , y )(x,y) 的位置,你是从第 s ss 个要走的点出发的,然后当前要走的点你走的状态时 zzz。(第 iii位表示第 iii个你要走的点走或没走)然后就正常跑 bfs,如果当前的状态 (x,y)( x , y )(x,y)就是第 s 个要走的点而且z=2k−1z=2^k-1z=2k−1(即所有要走的点都走到了),那就可以作为结束的状态了。代..原创 2021-09-03 19:36:15 · 103 阅读 · 0 评论 -
(纪中)1312. 老曹的忧郁【数学】
解题思路题目大意:三个同字母小圆若能组成为一个等边三角形,该字母为不和谐的。我们可以以最后一行的第一个圆的圆心作为原点,规定向右、向上为x、y轴的正方向,圆的半径为单位距离,建立笛卡尔(平面直角)坐标系,然后三重循环枚举同字母的点,判断两两之间的距离是否相等。关键在于怎样求距离,可以先求出每个点的坐标,那么,第x行第y个圆的圆心,在坐标系中哪个点呢?如上图,我们很容易看出A点的横坐标是n+2y−x−2n+2y-x-2n+2y−x−2,竖坐标是n−xn-xn−x,股定理可以得出两点间长度是3–...原创 2021-08-27 00:18:23 · 102 阅读 · 0 评论 -
(纪中)1328. Party【SPFA】
解题思路考虑要计算来回,就从起点分别两遍SPFA,一遍原图,一遍反图(把所有边反向)。计算两遍的和就好了代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#define ll..原创 2021-08-24 14:53:13 · 100 阅读 · 0 评论 -
(纪中)1327. Mobile Service【DP】
解题思路在第一反应下,我们不难想出以下状态:f[i][x][y][z]f [ i ] [ x ] [ y ] [ z ]f[i][x][y][z] 表 示 完 成 了 前 i 个 请 求 , 三 个 员 工 分 别 位 于 x,y,zx , y , zx,y,z位 置 的 最 小 花 费 f[i][x][y][z]f[i][x][y][z]f[i][x][y][z] 表示完成了前i个请求,三个员工分别位于 x,y,zx,y,zx,y,z 位置的最小花费f[i][x][y][z]f[i][x][y][..原创 2021-08-24 14:50:17 · 89 阅读 · 0 评论 -
(纪中)1326. Window【单调队列】
解题思路滑动窗口之单调队列经典例题。。(应该用线段树/RMQ等也能过)代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#define ll long long#def...原创 2021-08-24 14:47:02 · 80 阅读 · 0 评论 -
(纪中)1325. YL杯超级篮球赛【带权中位数】
解题思路因为他求的点与点的距离并不是勾股定理,所以,这道题就变得简单了许多,点与点的距离,只跟横坐标与纵坐标的差距有关系,所以我们就可以将点的横坐标和纵坐标分开来讨论。考虑如果w的值为1的话,那就很好做了,就是都选中位数嘛。对于w>1的情况;你可以想象成复制了w个这样的点,在复制成w个之后再分别找中位数就是答案了;代码#include<iostream>#include<cstdio>#include<algorithm>#include<..原创 2021-08-24 14:44:22 · 116 阅读 · 0 评论 -
(纪中)1299. 洗盘子【DP】
解题思路我们可以设吃掉第i盘菜的最少时间为fif_ifi首先我们要明确,这个最少时间的总数一定不超过nnn(一个一个吃都最大为n),设jjj为一次吃jjj盘菜,那么我们显然可知j最大为sqrt(n)sqrt(n)sqrt(n)那么我们构思一个O(nsqrt(n))的算法:用pi,jpi,jpi,j表示从第i盘菜往前数,得到jjj个菜种的最远离第iii盘菜的菜的位置,然后由于每次都需要更新这个p值(因为加了第i盘菜嘛)所以我们把pi,jpi,jpi,j简化为pjpjpj得方程:fi=minf...原创 2021-08-23 16:26:06 · 142 阅读 · 0 评论 -
(纪中)1298. 牛棚【DP】
解题思路对于奶牛的分布,要求在第1和第s个牛棚上,都有一只奶牛,其次题目给出一个w=(s−1)/(n−1)w=(s-1)/(n-1)w=(s−1)/(n−1),使相邻的两个奶牛的距离最小是w最大是w+1,又因为首尾都有奶牛,所以在n奶牛形成的n−1n-1n−1个空隙中v=(s−1)mod(n−1)v=(s-1)mod(n-1)v=(s−1)mod(n−1)个的长度是X+1X+1X+1,其余都是X。先求出w=(s−1)/(n−1)w=(s-1)/(n-1)w=(s−1)/(n−1),v=(s−1)m...原创 2021-08-23 16:10:23 · 88 阅读 · 1 评论 -
(纪中)1297. 滑雪【SPFA】
解题思路打个SPFA模板,维护到每个点的时间的最小值,多记录一下到某个点的速度。代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#define ll long long...原创 2021-08-23 16:04:08 · 84 阅读 · 0 评论 -
( 纪中)1296. 城墙【暴力】
解题思路把原序列和目标序列排个序,求对应每项相差的和。代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#define ll long longusing namesp...原创 2021-08-23 15:57:12 · 77 阅读 · 0 评论 -
(纪中)3463. 军训【单调队列】【DP】【二分】
解题思路题目中要求最小值的最大值,这种求最大最小双最值得问题可以很容易想到用二分答案来做.那对于判断ansansans的checkcheckcheck是否能用贪心求解?显然对于某一连续段而言,加入一个学生,可以增加其女友指数,但也有可能使得欠扁值增大,并没有什么能够保证正确性和最优性的贪心,那么可以考虑DP,则可得到转移方程如下:(dp[i]表示到第i个学生时,最大的欠扁值)显然转移一次复杂度为O(n),总的时间复杂度为O(n^2),显然是会超时的.但是实际上并非所有的转移都是有效的,有的实际...原创 2021-08-21 17:05:26 · 90 阅读 · 0 评论 -
(纪中)7221. Portals【并查集】
___解题思路题意还是比较容易读懂的,主要就是关于题意转换比较难想,让我们看一下具体操作,究竟发生了些什么。如以下问题所述:存在两个节点 pipipi , 每个节点有 v1,v2,v3,v4v_1, v_2, v_3, v_4v1,v2,v3,v4 四个传送门, 两个节点的关系如下图。每个点出现两次表示每个点的度数为 2,而联通的图如果每个点的度数为 2,则一定是一个环。如果图不连通,则是若干个环。现在我们要使得图联通,也就是合并这些环,我们发现花费 w_i的代价可以将 a_i,c_.原创 2021-08-21 16:55:43 · 84 阅读 · 0 评论 -
(纪中)最近公共祖先【数学】
解题思路代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#define ll long longusing namespace std;const ll mod=...原创 2021-08-21 16:38:56 · 62 阅读 · 0 评论 -
(纪中)3410. Tree【最小生成树】
解题思路我们可以枚举平均数,然后根据 (ai−aˉ)2(a_i-\bar{a})^2(ai−aˉ)2 进行排序,跑最小生成树就可以了,边跑边记录加入了哪些边及总边权和,跑完后算出正确的平均数,更新答案。平均数每次加0.250.250.25. (不明原因)代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring&...原创 2021-08-20 21:00:26 · 83 阅读 · 0 评论 -
(纪中)3442. 期望异或【数学?】
解题思路这道题的解法还是有点颠覆了我,不符合我正常阅题逻辑。。讲解》》大新闻代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#include<set>#...原创 2021-08-20 20:55:25 · 131 阅读 · 0 评论 -
(纪中)3441. 小喵喵的新家【线段树】【差分】
解题思路本来在题中扇形面积的计算公式是这样的:S扇形=所占的份数2m\frac{所占的份数}{2m}2m所占的份数πr2πr^2πr2由于“你只需要输出 T×2m/πT×2m/πT×2m/π的值即可 ”,所以就变成了:S扇形=所占的份数r2r^2r2把整幅图看作一个半径为100000100000100000的大圆。它被分成了2m2m2m份,我们一份一份求覆盖不小于kkk次的面积。例子:其中一份如图所标,我们红色的扇形被三条毛毯所穿过,题目说被不少于k条毛毯覆盖,那我们就从半径最...原创 2021-08-20 20:47:03 · 69 阅读 · 0 评论 -
(纪中)3440. 答题卡【模拟】
解题思路nmmp,XXoj,气死了,非说我输出了我并未输出的东西。。换了个写法就过了。。。A完后内心:我要热爱生活,热爱生命,不能因为一道题放弃超大模拟,你值得拥有!!关于字符串:stringstringstring类型加字符要直接加a[i].s1=a[i].s1+w;a[i].s1=a[i].s1+w;a[i].s1=a[i].s1+w;不能写成:a[i].s1[++cnt]=w;a[i].s1[++cnt]=w;a[i].s1[++cnt]=w;getlinegetlinege...原创 2021-08-20 20:30:38 · 113 阅读 · 0 评论 -
(纪中)7240. Just Green Enough
解题思路代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#include<set>#define ll long long#define ldb lon...原创 2021-08-19 20:37:25 · 74 阅读 · 0 评论 -
(纪中)7239. Year of the Cow【数学】
解题思路代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#include<set>#define ll long long#define ldb long...原创 2021-08-19 20:34:36 · 138 阅读 · 0 评论 -
(纪中)7238. Comfortable Cows
解题思路就纯模拟,动态的考虑,每加进一个点,给它相邻的四个点的标记加1,一旦一个奶牛所在的点的标记等于3,就给那个点相邻的没牛的最后一个点放牛。加点的时候判断该位置是否已经有牛。若已经有牛,则说明之前的操作必须使该位置有牛才最优,因此此时可以将答案减去 1。PS:存图的时候下标可能会超出边界,就考虑极限,让每个坐标的值加 10001000.不要忘记加上的点自身也可能会是舒适的奶牛,所以不要忘记递归该点。代码#include<iostream>#include&...原创 2021-08-19 20:31:19 · 217 阅读 · 0 评论 -
(纪中)4769. graph【二分图线段树分治】
解题思路这道题就是二分图线段树分治的板子,把总时长看成总操作数m,每条边对应的时间区间就是他加入的第i个操作到他删掉的第j个操作,如果没有删掉的操作就是i~m。剩下的就和二分图线段树分治板子题一模一样了:link代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath&...原创 2021-08-18 16:32:16 · 108 阅读 · 0 评论 -
(纪中)7236. Modern Art 3【区间DP】
解题思路写过的题也没做出来:blog代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#include<set>#define ll long long#...原创 2021-08-16 21:27:32 · 73 阅读 · 0 评论 -
(纪中)7232. No Time to Dry【树状数组】
解题思路代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#include<set>#define ll long long#define ldb long...原创 2021-08-16 21:19:38 · 84 阅读 · 0 评论 -
(纪中)7218. Maze Tac Toe【DFS】【状压】
解题思路将3×33×33×3的棋盘共999个格子的状态通过状态压缩的方式用一个数字表示,0表示没有棋子,1表示放置了一个′M′'M'′M′,2表示放置了一个′O′'O'′O′所有状态数为39=196833^9=1968339=19683对于某个位置的状态的检查,可以预处理出3的次方幂方便直接进行调用,然后根据除法与取模获取状态考虑深搜这张图,记忆化搜索,设置vis数组标记每种状态是否已经搜索过,vis[i][j][k]表示走到位置(i,j),当前棋盘状态为k。如果走到当前位置需要执行一次行...原创 2021-08-16 09:10:06 · 163 阅读 · 0 评论 -
(纪中)7220. United Cows of Farmer John【树状数组】
解题思路我们考虑枚举每个右端点。然后前面合法的左端点有哪些呢?假设当前位置为 R,上一次出现位置为L,如果未出现当成1。则对当前位置为右端点来说,合法的左端点区间为 max(L,1)max(L,1)max(L,1)~ R−1R-1R−1树状数组维护每个区间不同数字的种类数代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<...原创 2021-08-16 09:03:35 · 93 阅读 · 0 评论 -
(纪中)7226. Acowdemia【二分】
解题思路没想到简单的二分就是正解,二分最大可以达到的 h指数,然后维护可以用O(n)O(n)O(n)解决,一共可以帮忙增加K∗LK*LK∗L此引用,判断下达到 hhh指数需要增加多少次引用,若超过了或者某篇文章需要超过KKK次引用,returnreturnreturn 000。代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include&l...原创 2021-08-16 08:58:43 · 229 阅读 · 0 评论 -
(纪中)7219. Do You Know Your ABCs?【高斯消元】
解题思路我太开心了,T1打了两个小时,结果真的A了!!!其实思路还是挺简单的,就是多方程解三个未知数。先暴搜枚举每个x_i表示什么(A,B,A+C,A+B+C……),就是题目给出的七种,因为每个x_i都不一样所以这里可以剪枝一下。然后把每个x_i作为一个方程的答案,每个方程的样子是:x∗A+y∗B+z∗C=xix* A+y* B+z* C=x_ix∗A+y∗B+z∗C=xi.我们要解的是A,B,C,已知系数x,y,z(因为系数这就是你深搜的东西,如:xi=A+Bx_i=A+Bxi=A+B...原创 2021-08-16 08:53:04 · 182 阅读 · 0 评论 -
(纪中)4766. Word
解题思路气死了,就一个超级超级暴力的题,比赛时没打!!超级超级暴力,选长度最短的一个字符串,处理出他所有长度为l的子串,枚举子串需要被替换的位置和用什么字母替换,每次得出一个答案判断他在其他字符串中是否成立。代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>...原创 2021-08-13 21:14:29 · 87 阅读 · 0 评论 -
(纪中)4765. Crisis【DP】
解题思路比赛时原本以为只能拿部分分,没想到A了。思路和之前做过的一题很像,从点0开始搜向他的儿子搜,计算出每个节点能向自己的上司提交请愿书至少需要几个人,设人数为dp[i]dp[i]dp[i]。具体做法就是把每次每个节点的儿子的dp[i]dp[i]dp[i]排序,取前(儿子总数*T%)个,得出自己的dp[i]dp[i]dp[i]代码#include<iostream>#include<cstdio>#include<algorithm>#inclu...原创 2021-08-13 21:08:21 · 125 阅读 · 0 评论 -
(纪中)4764. Brothers
解题思路直接暴力就A啦!代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#define ll long long#define ldb long doubleusin...原创 2021-08-13 21:01:51 · 80 阅读 · 0 评论 -
(纪中)4754. 矩阵
解题思路我们把所有最小矩阵扔进堆里,每次取堆顶更新即可代码暴力#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>#include<cstring>#include<cmath>#include<map>#include<queue>#define ll long long#define ld...原创 2021-08-12 22:34:58 · 105 阅读 · 0 评论 -
(纪中)4757. 树上摩托
解题思路PS:投诉出题人,竟然卡dfs。首先一个很显然的结论是,每块的大小一定是n的约数,我们考虑一下将原树看做一个有根树,一个节点可以作一个块的”根”,当且仅当该节点的 size 能被块的大小整除 预处理出每个节点的 size,枚举树的大小 k,判断 size 为 k 的倍数的节点数量是否为n/kn/kn/k就好了代码暴力#include<iostream>#include<cstdio>#include<algorithm>#include&...原创 2021-08-12 22:28:49 · 78 阅读 · 0 评论 -
(纪中)4756. 幻象【期望DP】
解题思路因为持续x秒的幻象将产生x2x^2x2的幻象值,所以设一个L数组,lil_ili表示持续到iii秒的期望,容易推出li=(li−1+1)∗ail_i=(l_i−1+1)∗ai%li=(li−1+1)∗ai,那么我们再设出一个f数组,表示到了第i秒的幻象期望值。容易推出fififi由fi−1fi−1fi−1加上新增加的幻象值,但是对于平方的这种操作会很复杂,所以不妨把lilili降级成li−1+1l_i−1+1li−1+1这样处理就好多了fi=fi−1+((li−1+1)2−(li−1..原创 2021-08-12 22:21:07 · 88 阅读 · 0 评论 -
(纪中)3056. 数字【数学】
解题思路首先我们要知道,求总合法的不能只简单的把两种情况的个数直接相加得到,因为他们有交集,要用容斥原理把它们的交集减去。(Ps:1221这个串,前后位和奇偶位都相等。)预处理:d[i][j]代表在集合中选i个数,i个数的和为j的时候一共有多少种方案数.状态转移方程:F[i,j]=∑(F[i−1,j−S[k]])(i=1F[i,j]=∑(F[i-1,j-S[k]]) (i=1F[i,j]=∑(F[i−1,j−S[k]])(i=1~n,j=0n, j=0n,j=0~maxnum∗i,k=1&nbs...原创 2021-08-10 19:26:12 · 155 阅读 · 0 评论 -
(纪中)3055. 比赛【期望】【数学】
解题思路考试的时候已经推出来了,结果没想着化简TOT,n2n^2n2拿30分…我们考虑选中A1A_1A1和B1B_1B1了,则剩下的A和B共有!(n−1)!(n-1)!(n−1)种组合方案,而总共有!n种组合方案,则A1A_1A1和B1B_1B1的组合下可以贡献的期望为(A1−B1)2∗!(n−1)!n\frac{(A_1-B_1)^2*!(n-1)}{!n}!n(A1−B1)2∗!(n−1)简化得 (A1−B1)2n\frac{(A_1-B_1)^2}{n}n(A1−B1)2...原创 2021-08-10 19:10:04 · 71 阅读 · 0 评论 -
(纪中)3054. 祖孙询问【LCA】
解题思路非常明显的LCALCALCA了吧,若LCA(x,y)LCA(x,y)LCA(x,y)等于x,则x是y的祖先,若LCA(x,y)LCA(x,y)LCA(x,y)等于y,则y是x的祖先,如果x,yx,yx,y都不等于LCA(x,y)LCA(x,y)LCA(x,y),说明他们不在一条路上,就输出0代码#include<iostream>#include<cstdio>#include<algorithm>#include<iomanip>...原创 2021-08-10 18:55:02 · 77 阅读 · 0 评论 -
(纪中)4742. 单峰【快速幂】
解题思路手推了两个就发现了规律:我们拿444举例子,因为4在数列中是最大的,所以它一定是单峰,然后我们考虑在4的两旁填数:左边没有,右边三个,ans+=C30;ans+=C_3^0;ans+=C30;左边一个,ans+=C31;ans+=C_3^1;ans+=C31;左边两个,ans+=C32;ans+=C_3^2;ans+=C32;左边三个,右边没有,ans+=C33;ans+=C_3^3;ans+=C33;这就是杨辉三角上的一行,ans=2(4−1)=C30+C31+C3...原创 2021-08-10 18:49:56 · 85 阅读 · 0 评论 -
(纪中)4257. 着色【组合数】
解题思路。。。一个一个图分析TOT首先我们发知道最多用3种颜料,且至少用2种颜料,则我们每次针对这两个情况分析。预处理:三种颜料时,对于颜料有Ck3C_k^3Ck3种选择,w=k∗(k−1)∗(k−2)/6;w=k*(k-1)*(k-2)/6;w=k∗(k−1)∗(k−2)/6;两种颜料时,对于颜料有Ck2C_k^2Ck2种选择,ww=k∗(k−1)/2ww=k*(k-1)/2ww=k∗(k−1)/2八个图:P1:kP1:kP1:k必须>=2>=2>=2当k...原创 2021-08-09 21:36:42 · 62 阅读 · 0 评论