• 2024-10-05hash hacker
    一.单哈希https://oi-wiki.org/string/hash/二.双哈希首先构造两个字符串\(A,B\)满足其在\((b_1,p_1)\)下哈希值相同,这样由\(A,B\)组成的字符串在\((b_1,p_1)\)下哈希值相同再使用一次卡单哈希的构造方法即可。#include<stdio.h>#include<assert.h>#include<std
  • 2024-10-05补题报告5
    背景2024-10-5做\(CSP-J\)复赛模拟,作补题报告。成绩\(T1\)\(AC\)\(T2\)\(40\)\(T3\)\(0\)\(T4\)\(0\)\(T1\)牛奶(\(milk\))经典\(T1\)赛时\(A\).概述要采购牛奶,有\(n\)种,每种有各自的\(a_i\)和\(b_i\),需要\(m\)盒,求最小花销思路题目描述中说,作为一只学
  • 2024-10-05冲刺CSP联训模拟2
    A.挤压拆位算贡献,一个数二进制表示平方为\(\sum_{i,j}s_i*s_j*2^{i+j}\),单独算每一项的贡献,枚举\(i,j\),只有当这两位都为1时结果才是1,所以我们要找异或后这两位都是1的方案数,这里需要\(dp\)用\(f_{i,j,k}\)表示前\(i\)个数异或出来的\(j,k\)两位是1/0的方案数,对于
  • 2024-10-05分层图
    分层图前言在一次模拟赛中,我遇到了[USACO15JAN]GrassCownoisseurG这道题,当时不知如何下手,和边上的同学偷偷讨论,听别人说是分层图,建两份图然后连一层反向边即可,当时对这个图论建模大为惊叹(不亚于我在学网络流时学到拆点拆边),故专门写一篇博客记录之。算法思想分层图是图论
  • 2024-10-04CSP-S 模拟赛 32
    CSP-S模拟赛32rnk25,\(0+0+9+0=9\)。T1[CF1578K]KingdomofIslands还没改出来。T2[CF1578L]Labyrinth警钟嚼烂:改代码改干净。首先考虑如果从\(a\)走到\(b\),人最胖是多少。毫无疑问,这是一个最大生成树问题。在这个基础上考虑原问题,我们发现由于人会越来越胖,一定有边
  • 2024-10-04题解:P8973 『GROI-R1』 继续深潜,为了同一个梦想
    换根dp模板题。\(f_i\)是在以\(i\)为根的子树中,以\(i\)为链的一个端点且\(i\)在点集中的合法点集个数。\(ans_i\)表示包含\(i\)的合法点集个数。当\(x\)为树根时:\[ans_x={f_x\choose2}-\sum_{s\inson}{2f_s+1\choose2}+f_x\]简单解释一下,\({f_x\ch
  • 2024-10-042024初秋集训——提高组 #30
    B.硬币问题题目描述有\(N\)种硬币,每种都有无限个。求\([1,m]\)中有多少种面额是不能被凑出来的。思路我们可以先求出不使用\(w_1\)凑出来的数,由于之后可以再添加若干个\(w_1\)。所以对于\(\bmodw_1\)同余的数只需看较小的数。这明显就是一个最短路。对于每种余数求
  • 2024-10-04补题报告4
    背景CSP-J模拟赛考得最好的一次得分\(T1\):\(AC\)\(T2\):\(AC\)\(T3\):\(0\)\(T4\):\(20\)总分:\(220\)致敬传奇\(180\)分以上就请吃饭的
  • 2024-10-04【刷题笔记】2024.10.4 test
    2024.10.4test虹色的北斗七星思路题目要求\[maxn-minn-len\]的最大值,其中\(maxn\)为区间的最大值,\(minn\)为区间的最小值,\(len\)为区间的长度注意性质,最优的状态一定是区间的左右端点为最大值和最小值时。因为,如果区间左右端点不为最大值或最小值,那么区间长度就可以继续
  • 2024-10-04扶苏的问题
    利用Splay进行序列操作时,将数组坐标整体平移1,给0留出空间,并在操作过程中始终保持0号节点的特性用#define语句和struct的构造函数简化编程复杂度对名字空间(namespace)有了更深刻的理解Splay的常数较大,难以通过1e6规模的数据在建树时,根据Splay的特性,直接建出一条只有右儿子的
  • 2024-10-04[DMY]2024 CSP-S 模拟赛 Day 9
    T2调了1h没调出来,丢了一坨没分的shi扔了。我想放一下作为开头:include<bits/stdc++.h>#defineintlonglongusingnamespacestd;inlineintread(){intw=1,s=0;charch=getchar();while(!isdigit(ch)){if(ch'-')w=-1;ch=getchar();}while(isdigit(ch)){s=s10+(ch-
  • 2024-10-03多重背包
    intw[maxn],v[maxn];//w[i]代表第i种物品价值v[i]代表体积intf[maxn][maxm];//前i种物品用了j的体积所能得到的最大价值intcnt=0;//总共拆成了多少个物品for(inti=1;i<=n;++i){intw,u,v;//价值,个数,体积cin>>w>>v>>u;intk=1;//先拆
  • 2024-10-03DAY3-补题
    一题之计在于补呐补题很快乐的一点就是看不懂且听不明白但是写注释中理解到了。果然学会一道题最简单的方式是给一个纯萌新讲。说在前面今天%你赛手感非常好,可能是换了一个位置的原因(玄首先T1没有读错题是一个比较大的进步,因为DAY1和2都是因为差不多这个原因寄掉了,读对题目果
  • 2024-10-03补题报告3
    背景2024-10-3上午打的比赛(CSP-J模拟2),作赛后总结报告。IP地址(\(ip\))赛时AC。概述每个设备有一个对应的\(IP\),先给出对应的设备与\(IP\),再给出几个\(IP\),求对应的设备。思路\(map\)存储,映射我的代码代码(点左边三角展开)#include<map>#include<cstdio>#includ
  • 2024-10-02P4491
    还好有题解,公式不用自己推了#include<bits/stdc++.h>usingnamespacestd;constint_G=3,mod=1004535809,Maxn=135000,MaxNum=10000500;longlongpowM(longlonga,intt=mod-2){ longlongans=1; while(t){ if(t&1)ans=ans*a%mod; a=a*a%mod; t>>=1; }
  • 2024-10-022024初秋集训——提高组 #29
    C.卡片放置题目描述有一些卡片,写着两个数字\(A_i,B_i\)。你要将这些这些卡片排列,其对于你的分数为\(\max(A_i,B_i)\cdoti\),对于对手的分数为\(\min(A_i,B_i)\cdot(N-i+1)\)。求令你的分数减对方分数的最大的方案数。思路我们来拆式子,这里令\(A_i\geB_i\):\[\begin{arr
  • 2024-10-02补题报告2
    背景2024-10-2上午打的比赛(CSP-J模拟2),作赛后总结报告。下棋(\(chess\))赛时AC。概述高星\(x\)中星\(y\)低星\(z\)\(3\timesz=y\)\(3\timesy=x\)阵容强度:\(18\timesx+3\timesy+z\)求转换完后强度的顺序思路1.将能转的低星英雄转高星2.结构体排序输出
  • 2024-10-02DAY2-补题
    我补题AK了,但你出言不逊是非常好的一套题,让我的大脑旋转啊。不太想开一个文章单独屑,所以扔到随笔里面。敲字速度有待加强。说在前面题目难度单调递减,分数单调递减。果然屑死了。T1再次读题失误,正确的来说是代码敲得非常抽象。T2DP但没骗到分非常不好,T3场上想出正解了,但推一
  • 2024-10-02Solution - Atcoder ARC157E XXYX Binary Tree
    考虑这个不存在\(\texttt{YY}\)的限制,与\(\texttt{XX}\)个数为变量的限制相比较,看起来\(\texttt{Y}\)就更特殊,于是考虑从\(\texttt{Y}\)的视角来分析问题。同时考虑到因为有\(A+B+C=n-1\),所以\(\texttt{XX}\)其实也不是很重要,因为只需要让\(\texttt{XY}\)和
  • 2024-10-02Solution - Atcoder ARC157D YY Garden
    考虑到因为有横轴数轴两部分的限制,不妨先固定下来一部分的限制再处理另一部分。对于这题来说横轴竖轴本质是相同的,于是不妨考虑固定横轴。如果知道了横轴的分割,那么对于竖轴上就可以根据分割情况知道合法的分割了。即考虑记\(f_i\)为考虑了竖轴的前\(i\)列,第\(i\)列为最
  • 2024-10-02Wooden Game
    在题目营造的幻象之下,拨开迷雾,探寻背后的本质既然执行逻辑没问题,就一定是算法逻辑出了漏洞点击查看代码#include<bits/stdc++.h>usingnamespacestd;vector<int>a[30];intmaxn;voidadd(intn){ if(!n) { return; } intp=31-__builtin_clz(n); maxn=max(max
  • 2024-10-01题解 P2726 【[SHOI2005]树的双中心】
    首先,我们会有一个很简单的想法,枚举断边,产生两棵子树,然后在两棵树内分别求带权重心,计算贡献,这样的话复杂度是\(O(n^2)\)的。那么我们要好好利用$h\leq100$的性质。考虑\(sze[u]\)为带权重量,\(g[u]\)为以\(u\)为根的树,所有点都到\(u\)的代价。所以\(g[u]=\sum\l
  • 2024-10-012024初秋集训——提高组 #28
    B.车轮战题目描述你将进行\(N\)场决斗。一开始你的战斗力为\(s\),咒术强度为\(x\)。每次决斗之前你可以选择:令\(s\leftarrows+x\)。令\(x\leftarrowx+1\)。每次决斗,如果你的\(s\gef_i\),则你赢得决斗。求最多能赢多少场决斗。思路我们可以发现,你最多会进行\(80
  • 2024-10-01ABC225F String Cards
    题意给你\(n\)个串\(s_i\),你需要选出\(k\)个串并按照某个顺序拼接起来形成的字符串字典序最小。\(n,k,|s|\le50\)。分析由于顺序不固定,所以我们无法直接DP。而状压的复杂度也太高了,怎么办呢?考虑钦定一个顺序,使得按照这个顺序排列字符串一定最优。一个经典的错误想法
  • 2024-10-012024初秋集训——提高组 #21
    B.网格游走题目描述你在一个\(r\timesc\)的网格图的\((1,1)\)处。每个格子上都有一个箭头和计时器,一开始,箭头等概率地指向右/下方,计时器上等概率地显示\([0,p]\)中的一个实数。当计时器归零时,箭头指向的方向会翻转,即向右变成向下,向下变成向右,并且计时器会重置为\(p\)。