自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 2021牛客暑期多校训练营10 Diameter Counting

题目分析cjb的题解已经很详细了。下面是本人理解。算法的思想是从一个核心开始往外扩展,用fi,jf_{i,j}fi,j​表示有jjj个叶子的iii标号树的个数。然后加叶子时枚举增加的叶子kkk即可转移到fi+k,kf_{i+k,k}fi+k,k​上了。接着再引入gi,j,kg_{i,j,k}gi,j,k​表示新加入的叶子的序列方案。于是可以知道如何转移了fi+k,k=fi,j⋅gi,j,k⋅Ci+kif_{i+k,k}=f_{i,j}·g_{i,j,k}·C^{i}_{i+k}fi+k,k​=fi

2021-08-18 15:24:43 196 1

原创 2021牛客暑期多校训练营10 Browser Games

题目分析听说这题是银川真题限内存版本。然后不限内存的是建字典树,但是这里不行。于是我们就要找内存更小的算法。于是我们可以对所有的字符串先进行排序,将序列存在数组idiid_iidi​中,代表第iii个字符串排完序后变成了第idiid_iidi​个字符串。然后进行搜索。经过排序我们可以发现,部分前缀相同的字符串已经放在一起了。于是我们可以找到这些部分前缀相同的字符串,在最大的字符串的下标的后一位加一,表示此后多一个确认前缀,然后在这些部分前缀相同的字符串区间里继续寻找之间的不同,加入确认前缀。

2021-08-17 15:31:31 327

原创 2021牛客暑期多校训练营9 Incentive Model

题目分析原题老长一大篇了,tag:英语阅读,然后翻译后就这么一点。我们可以设第iii块矿挖出后AAA的股权为SiS_iSi​于是可以列式:Si=Si−1+Si−11+w(i−1)w=Si−1⋅1+wi1+(wi−1)=1+wi1+(wi−1)⋅1+(wi−1)1+(wi−2)...⋅1+w1⋅S0=(1+wi)aS_i=S_{i-1}+\frac{S_{i-1}}{1+w(i-1)}w\\=S_{i-1}·\frac{1+wi}{1+(wi-1)}\\=\frac{1+wi}{1+(wi-1)}

2021-08-15 16:24:30 131

原创 2021牛客暑期多校训练营9 Jam

题目分析当jo警即可从现实中的信号灯中可以不难知道,对于右转来说,是可以时刻保持开启的。然后对于剩下的信号灯,每秒最多可以亮两盏。那么我们可以对这些可以一起亮的路口连边,匹配出最小的花费。我们设四个路口的直行分别为a1,a2,a3,a4a1,a2,a3,a4a1,a2,a3,a4,设左转分别为b1,b2,b3,b4b1,b2,b3,b4b1,b2,b3,b4。于是我们可以连出这样的图对于黄色的边,我们可以发现它们分成了两个互不干扰的矩形。设矩形为矩形abcd矩形abcd矩形abcd,那么矩

2021-08-15 15:42:10 280

原创 2021牛客暑期多校训练营8 Tree

题目分析我们先找出满足

2021-08-12 21:00:00 225

原创 2021牛客暑期多校训练营7 xay loves Floyd

题目分析这题目听说出题人是用lowbitlowbitlowbit写的,但是我们可以在题目给的错误的FloydFloydFloyd算法的基础上进行优化。首先,我们可以先用dijkstradijkstradijkstra算法来算出正确的最短路大小。然后对题目给的错误的FloydFloydFloyd算法进行剪枝。可以发现,对于点对(u,v)(u,v)(u,v)来说,如果disu,v==infdis_{u,v}==infdisu,v​==inf,那么用题目给的算法做出来的disu,vdis_{u,v}di

2021-08-08 14:25:40 123

原创 2021牛客暑期多校训练营5 Cheating and Stealing

题目来骗,来偷袭分析这道题让我们求∑i=1∣S∣fi(S)∗(∣S∣+1)i−1mod998244353\sum_{i=1}^{|S|}f_i(S)*(|S|+1)^{i-1}mod 998244353i=1∑∣S∣​fi​(S)∗(∣S∣+1)i−1mod998244353的值。然后一看数据范围,n≤106n\le 10^6n≤106。于是我们就要在平均最多O(logO(logO(log n)n)n)的时间里把这个fi(S)f_i(S)fi​(S)给算完。那么,这个函数该怎么算呢。我们可

2021-08-04 15:45:09 210

原创 2021牛客暑期多校训练营6 Defend Your Country

题目分析对于这道题,我们可以发现,当一张图中的点数为偶数时,ansansans就是权值和

2021-08-03 20:58:45 101

原创 Hopping Rabbit

题目分析这题用扫描线。因为兔子最多一次跳ddd的距离,那么对于一个陷阱的横纵坐标来说,将它改成对于ddd同余的数对于答案来说没有区别。所以,我们可以将陷阱转移到同一个单位方格中,其中方格的单位边长为ddd。然后在这个单位方格中进行扫描线处理,只要有一个空位(即扫描到有一部分线没被陷阱覆盖),即可输出。#include<bits/stdc++.h>#define ll long longusing namespace std;ll n,d;vector<pair<

2021-08-03 18:34:06 215

原创 2021牛客暑期多校训练营4 Convolution

题目分析又是这种分析贼难代码贼短的题目分析完题目后可以得到:x⊗y=xygcd(x,y)2x\otimes y=\frac{xy}{gcd(x,y)^2}x⊗y=gcd(x,y)2xy​那么bi=∑1≤j,k≤n,jkgcd(j,k)2=iajkcb_i=\sum_{1\le j,k\le n,\frac{jk}{gcd(j,k)^2}=i}a_jk^cbi​=1≤j,k≤n,gcd(j,k)2jk​=i∑​aj​kc但是,直接枚举jjj和kkk会超时。于是可以设g=gcd(j,k),x=j

2021-07-28 20:21:18 139

原创 2021牛客暑期多校训练营3 Minimum grid

题目分析比赛时得知这是二分图匹配,然后看了看题目,你管这叫二分图匹配?不是构造吗?然后补题时发现这真的是二分图匹配既然是二分图,就要想想这图是怎么建的。然后发现,对于某个行和列最大值相同的格子,只有那些格子可以填这个最大值。把那些格子取出来,行列序号当点连边,跑完二分图匹配,少去的那些点就是可以填000的那些点。求和即可。#include<bits/stdc++.h>#define ll long longusing namespace std;ll b[4021],c[402

2021-07-28 16:57:17 84

原创 2021牛客暑期多校训练营4 Sample Game

题目大意就是喝汽水,每种汽水的中奖概率为PiP_iPi​,而中了序号大的汽水后不能中序号小的汽水,求喝到汽水的期望数。分析先看题目发现有分数和模。费马小定理(快速幂)先打好。ll fx(ll x,ll y){ ll xx=1; while(y) { if (y&1) xx=xx*x%mod; x=x*x%mod; y=y>>1; } return xx;}然后分析题目要我们求期望的平方,我们可以先单求期望。我们设现在选了xxx,之后还能选的期望

2021-07-28 15:10:41 77

原创 2021牛客暑期多校训练营4 Product

题目分析分析完题面后,发现题目要我们求的就是∑∑ai=D,0≤aiD!∏(ai+k)!\sum_{\sum{a_i}=D,0\le a_i}\frac{D!}{\prod (a_i+k)!}∑∑ai​=D,0≤ai​​∏(ai​+k)!D!​然后发现这个式子和排列组合很像。原式去掉kkk以后发现∑∑ai=D,0≤aiD!∏ai=nD\sum_{\sum{a_i}=D,0\le a_i}\frac{D!}{\prod a_i}=n^D∑∑ai​=D,0≤ai​​∏ai​D!​=nD于是我们可以

2021-07-28 14:46:25 94

原创 2021牛客暑期多校训练营3 24dian

题目分析看数据,最多就444张牌,暴搜就好了。方法很多,这里可以先把牌构造出来,然后验证。恶心的是,所有解法都必须出现分数。加个flagflagflag记录一下就好。#include<bits/stdc++.h>#define ll long longusing namespace std;int as[101000][5];double a[5];int n,m,ans,fl;bool check(double x){x-=(int)x;return x>1e-6&

2021-07-27 16:58:15 73

原创 2021牛客暑期多校训练营4 Tree Xor

题目分析从题目中可以看出,相邻节点的异或值是确定的,那么只要一个节点的值确定了,整棵树上节点的值就确定了。于是可以先确定111号节点的值,再判断剩下的合不合法。然后发现对于111号节点,它异或上一个数xxx,相当于整棵树异或上xxx。所以可以先用dfsdfsdfs求出当111号节点等于000时的所有节点值,再求出符合条件的xxx的个数。于是题目就变成了求符合(ai(a_i(ai​ xorxorxor x)x)x)∈\in∈[li,ri][l_i,r_i][li​,ri​]的xxx的个数。然后这个问

2021-07-27 14:31:27 153

原创 2021牛客暑期多校训练营4 Inverse Pair

题目及数据分析看到这题目时,第一反应是——先把图建起来。然后很快发现,光建图就1e101e101e10了。于是开始认真想。从建图的方式来看,行和列是分开来的。于是可以想到分开来求然后再合并求出最终的解。然后看题目要我们求什么,连续子矩阵的最大平均值。因为我们通过行和列分开求的方式,所以这题就变成了求子序列的最大平均值。然后百度,发现有二分的写法,于是抄下来改了改。 double l=0.0,r=200000.0; while(r-l>1e-8) { double mid=(l+r)/

2021-07-26 20:04:06 75

原创 K匹配

题目描述分析本来以为这题很难,结果是求字符串A有多少个子串包含字符串B。于是就可以记录字符串A中每个字符串B的开头位置,设共有kkk个,然后记录包含第iii~kkk个字符串B的子串个数。其中字符串匹配的部分用KMP⋅KMP·KMP⋅改。复杂度O(n)O(n)O(n)?#include<bits/stdc++.h>#define ll long longusing namespace std;char s[10010000],a[10010000],ch;ll n,m,i,j,

2020-10-28 21:02:42 297

原创 2020牛客NOIP赛前集训营-提高组(第二场)gcd

题目大意分析看到这种题,一般都不会想到暴力算,于是想到把每个f(x)f(x)f(x)打表。然后看规律,然后发现对于某个质数的正整数次幂的f(x)f(x)f(x)等于这个质数,其他都为111。然后打表 for (i=2;i<=m;i++) if (!a[i]) { for (j=i;j<=m;j*=i) a[j]=i; for (j=2;j*i<=m;j++) if (!a[j*i]) a[j*i]=1; }然后输出a[na[na[n~m]m]m

2020-10-21 18:50:19 148 1

原创 2020牛客NOIP赛前集训营-提高组(第二场)include

题目大意分析因为n∗mn*mn∗m超过了1e101e101e10,所以针对每个输入的xxx一个一个找并不现实。于是想到打表。然后由于题目里有&这个东西,于是想到数位DP。然后寻找转移式,发现当dp[i]=1dp[i]=1dp[i]=1时,dp[i−(1<<j)]=1(i>=1<<j)dp[i-(1<<j)]=1(i>=1<<j)dp[i−(1<<j)]=1(i>=1<<j)。于是能写出如下打表

2020-10-21 18:36:53 375 5

原创 夏日祭的灯笼

题目描述forever97准备举办一场夏日祭,他邀请了许多参展商,并为每位参展商各准备了一串灯笼。灯笼串可以表示为一个长度为n的字符串,其中每个字符表示一个小灯笼,共有10种小灯笼,分别用0到9表示。每家参展商都对灯笼串有一定要求,所有符合第 k 家参展商要求的灯笼串所构成的集合,被称为 S[k] 。S[k] 内的任意元素 s ,必须满足以下要求:1.若 s 的长度 n=1,则 s 仅包含一个数字 d ,d=k%10;2.若 s 的长度 n>1 且 n 为偶数,则 s(1,n/2)∈S[k+

2020-08-16 16:49:51 205

原创 Hearthstone Battlegrounds

题目描述分析榜的再一次被带歪这道题就是一道贪心,但不知为何,比赛时做的人很少,反倒是H题,一千多提交只有一个AC。有四种鱼人,分别是1、有剧毒圣盾亡语2、有剧毒圣盾3、有剧毒亡语4、有剧毒亡语是召唤一个1/1的藤蔓因为攻击是双向的,所以可以相当于自己一直向对方攻击于是可以贪心...

2020-08-10 21:43:51 304

原创 Groundhog Looking Dowdy

题目描述分析1、这道题出的数据弱,取每天的最小值,排个序,再取mmm个即可2、以上为扯淡3、对于每件衣服,我们可以对其进行排序,并记录它是从哪一天来的然后用一个滑动窗口进行维护如果窗口内有来自mmm个天的衣服,就更新一下ansansans最后输出即可#include<bits/stdc++.h>#define ll long longusing namespace std;const int MAXN=2e6+10;struct node{ int v,f

2020-08-08 20:01:40 87

原创 Groundhog and 2-Power Representation

题目描述分析从题目的备注中可以看出这道题的答案要用高精度计算和存储于是模板先打好struct BigInt{ ll a[B]; BigInt(){} BigInt(ll x) { a[0]=x; for(int i=0;i<B-1;i++) { a[i+1]=a[i]/M; a[i]%=M; } }};BigInt add(Big

2020-08-08 19:27:52 95

原创 Mask Allocation

题目描述分析因为要打印字典序最大的所以对于每一对nnn和mmm,我们可以先使n<=mn<=mn<=m,然后打印⌊\lfloor⌊mn\frac{m}{n}nm​⌋∗n\rfloor*n⌋∗n个nnn。然后再使m=m%nm=m\%nm=m%n,直到m=0m=0m=0。这像什么?辗转相除法。于是计算的函数就长这样void gcd(int n,int m)//连名字都直接用了gcd{ if(n==0) return; for(int i=0;i<(m/n)

2020-08-07 18:37:12 104

原创 2020牛客暑期多校训练营(第八场)Kabaleo Lite

题目描述分析因为每个客户都要从第一道菜开始吃所以最多可以承载的客户数就应该是b[1]b[1]b[1]接下来就要计算此时最大的收益因为第iii道菜如果要被吃,那么之前的i−1i-1i−1道菜就都要被吃所以我们可以求前缀和然后每次遍历找出最大的前缀和加到ansansans里即可直到加到第一道菜为止但是每次要遍历nnn个数,复杂度是O(n2)O(n^2)O(n2),会超时所以对于第iii位,要记录当前最大值的位置,这样可以直接跳到那里节省了时间但是交上去还是WA这是为什么呢?发现

2020-08-04 15:35:55 148

原创 2020牛客暑期多校训练营(第六场)Binary Vector

题目描述分析这题的一个难点是知道线性独立这一概念,并能推出公式。在此贴出别人的推理然后使用快速幂和乘法逆元优化即可注意,进行乘除运算时要算一次模一次代码#include <bits/stdc++.h>#define ll long longusing namespace std;const ll MAXN=2e7,mod=1e9+7;ll T,n,base[MAXN],inv[MAXN],ans[MAXN],i,x;ll ksm(ll x,ll p){ ll

2020-07-29 16:55:32 117

原创 2020牛客暑期多校训练营(第六场)Grid Coloring

题目描述分析先判断无解的情况,易得:当n=1n=1n=1,k=1k=1k=1,2(n+1)n%k≠02(n+1)n\%k≠02(n+1)n%k​=0时无解。然后开始构造答案。由于是special judge,所以可以随便构造。以下是一种方法:我们可以把每一条边从上到下,从左到右标号,然后按1∼k1 \sim k1∼k的顺序标号。接下来证明为什么可行1、对于每一行和每一列,显然不会一种颜色到底,且每种颜色的出现次数相同2、对于每个1*1的环,相对的两条纵边必然不为同色,可行3、

2020-07-29 16:38:21 113

原创 2020牛客暑期多校训练营(第六场)K-Bag

题目描述分析

2020-07-28 15:35:47 312

原创 2020牛客暑期多校训练营(第五场)Bogo Sort

题目大意今天,Tonnnny学习了一种称为Bogo Sort的新算法。 老师给了Tonnnny Bogo Sort的代码:老师说,函数shuffle 是等概率地随机排列长度为n的数组a,这个算法的期望复杂度为O(n⋅n⋅n⋅n!n!n!)。但是,Tonnnny是一个坚定的男孩——他一点也不喜欢随机! 因此,Tonnnny改进了Bogo Sort。 他选择了一个最喜欢的长度为n的排列p,然后用排列p替换随机的shuffle,因此改进的算法,Tonnnny Sort,可以解决长度为n的数组的排序问题——

2020-07-25 20:31:05 130

原创 2020牛客暑期多校训练营(第三场)Two Matchings

题目描述看到这道题本来以为是构造,然后WA了补题的时候发现这是道DP题

2020-07-23 20:59:58 125

原创 2020牛客暑期多校训练营(第四场)Basic Gcd Problem

题目描述分析看到这道题的主体是一个递推式,那么绝不可能只是简单的套公式那么就要进行优化再仔细看一看,发现gcd,c*f(n)(n为某数)。那么gcd,快速幂,素数筛先打好。ll gcd(ll x,ll y){return y==0?x:gcd(y,x%y);}//gcdll ksm(ll x,ll y)//快速幂拼音首字母{ ll ret=1; while(y) { if(y&1) ret=ret*x%mod; x=x*x%

2020-07-21 13:18:30 132

原创 2020牛客暑期多校训练营(第三场)Points Construction Problem

题目描述看到这道题,比赛时当然没做出来。。。然后在赛后补题时,知道了要用构造的方法一、判断是否有解1、点对的数量肯定是偶数,所以当m%2==1时,无解。2、n个点,最多有4n个点对,所以当m>4n时,无解。3、对于点为矩形时,设长为x,宽为y,则n=xy且2*(x+y)要尽量小。所以2*(x+y)>=m>=22sqrt(xy)>=4sqrt(n).所以m>=4sqrt(n).所以m^2>=16n.当m^2<n16时,无解二、如何构造1、当m

2020-07-19 20:32:59 227

原创 2020牛客暑期多校训练营(第三场)C Operation Love

题目描述Alice is a beauty in a robot society. So many robots want to marry her. Alice determines to marry a robot who can solve the following puzzle:Firstly, the shape of Alice’s right palm is as follow:And the shape of Alice’s left palm is symmetrical to

2020-07-19 13:34:17 158

原创 2020牛客暑期多校训练营(第二场)Greater and Greater

题目描述本来以为是魔改KMP,但交上去会WA出题人预判了我们的预判然后在补题的时候知道了bitset这一结构再加上题解过了代码#include<bits/stdc++.h>#define ll long longusing namespace std;bitset<150010> tmp,ans;struct node{ ll a,b;}a[150010],b[40010];bool cmp(node a,node b){ return a.a>

2020-07-16 15:58:19 186

原创 H - easy - Roundgod and Milk Tea

题目因为长期钻研算法, 无暇顾及个人问题,BUAA ACM/ICPC 训练小组的帅哥们大部分都是单身。某天,他们在机房商量一个绝妙的计划"一卡通大冒险"。这个计划是由wf最先提出来的,计划的内容是,把自己的联系方式写在校园一卡通的背面,然后故意将自己的卡"遗失"在某处(如水房,TD,食堂,主M。。。。)他们希望能有MM看到他们遗失卡,能主动跟他们联系,这样就有机会请MM吃饭了。他们决定将自己的一...

2020-07-11 19:47:58 116

原创 B - DFS A Knight's Journey

题目背景骑士无聊一次又一次看到相同的黑白方块,因此决定环游世界。每当骑士移动时,它在一个方向上是两个正方形,而垂直于此方向的正方形则是一个正方形。骑士的世界就是他赖以生存的棋盘。我们的骑士生活在棋盘上,棋盘的面积比普通的8 * 8棋盘小,但它仍然是矩形的。您可以帮助这个冒险的骑士制定旅行计划吗?问题找到一条路径,使骑士可以拜访每个广场一次。骑士可以在棋盘的任何正方形上开始和结束。~~ (...

2019-12-28 20:39:17 206

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除