随笔分类 - 正常dp
摘要:A(费马小定理) 当$n<100$的时候,用最后一行直接暴力 否则考虑费马小定理:$10^{p-1}\equiv 1\ (mod p)$,即步长为$p-1$时的和可以直接使用,利用$p-1$行计算即可 #include<bits/stdc++.h> #define rep(i,s,t) for(in
阅读全文
摘要:A(预处理) 容易发现对于一段被0隔开的长度为$n$的连续的1,可以消去的0的个数为$\lceil\frac{n}{2}\rceil$,预处理这个答案 同时因为每次查询一个区间视为环形,需要将两个端点拼起来,预处理每个位置向左向右最远延伸到1的位置即可 #include<bits/stdc++.h>
阅读全文
摘要:一坨*这个人 全队都犯病了,没啥好说的 A(签到 模拟) 签到题 #include<bits/stdc++.h> #define rep(i,s,t) for(int i=(s),i##end=(t);i<=i##end;++i) #define dwn(i,s,t) for(int i=(s),i
阅读全文
摘要:hdu1 04 Ball(bitset) 把所有边升序排序后,枚举中间大小的边$e$ 考虑对每个点$i$记录所有$dis(i,j)\le e$的$j$构成的集合$S_i$ 在枚举到边$(u,v,w)$时,以该边为中位数的三角形答案为$S_i \cap \bar{S_j}$ 利用bitset容易维护
阅读全文
摘要:A 先构造出$1-8,16$这$9$个数,共需要$17$步 之后按照每四位一个单位构造数$x$,若$x$的末四位$\le 8$可以直接加,否则需要在之前$+1$然后减去一个$<8$的数 这样每一个$4$位最多用两步即可解决,一共最多$17+16\times2+1=50$步 (注意一直进位使得整个数多
阅读全文
摘要:A 签到题,注意$x=0$的特例,求逆元即可 #include<bits/stdc++.h> #define inf 2139062143 #define ll long long #define db double #define ld long double #define ull unsign
阅读全文
摘要:A LCT 咕 B 单位根反演 弃了 C 大胆猜测当$n>k+1$时无解 #include<bits/stdc++.h> #define inf 2139062143 #define ll long long #define db double #define ld long double #def
阅读全文
摘要:A 圆方树 咕 B 显然开盒子的顺序应按照$w$升序,而$hint$若选择使用应该在一开始就使用 在使用$hint$的情况下,因为知道$01$的总数,每种情况应当在最后一段连续的$0/1$前终止 即$100\cdots 0$此类情况,在$0$处截止,其花费为$sum_i$即到$0$处$w$的前缀和
阅读全文
摘要:A 记$b_i=|a_i-a_{i+1}|\(对于一段区间\)[l,r]$,若这一段内的数构成等差数列,则需$max{a_l,\dots ,a_r}-min{a_l,\dots ,a_r}=gcd(b_l,\dots ,b_{r-1})\cdot (r-l)$ 当无法构成等差数列时,显然有$max-
阅读全文
摘要:T1 Mobitel 题目大意: 一个全是正整数的矩阵,求从左上角到右下角的简单路径有多少条路径上数的乘积$>=K$ 思路: 由于整数分块,我们设$f(i,j,k)$表示走到$(i,j)$,$k=K/$(路径上数的乘积),的方案数 然后转移还是正常转移,需要注意把$k--$,因为只能求$>k-1$
阅读全文
摘要:再次爆炸.模拟赛 T1 defile 题目大意: 假你本回合拥有 M 个随从且均可以攻击,其中第 i 个随从的攻击力为 A2[i],生命值为 B2[i] 对手拥有N个随从,其中第i个随从的攻击力为 A1[i],生命值为B1[i] 每次可以选择一个属于你的攻击力不为0 且未攻击过的随从攻击对手的某个未
阅读全文
摘要:T1 bzoj 1951 古代猪文 题目大意: 给正整数n G 求(G^sigma{C(n,n/i),i|n})%P 思路: 数论题大合集.jpg 设res=sigma{C(n,n/i),i|n 由于res可能很大 由费马小定理可得 我们只需要求res%(P-1) 快速求C需要lucas 因为P-1
阅读全文
摘要:非常简单的一次模拟赛 但是由于水平太菜AK失败 T1 loj 507 接竹竿 题目大意: 一些纸牌 每个纸牌有花色分数 按顺序放入每个牌 放入每张牌之前 若牌中已有与这张牌花色相同的牌 可以选择将这张牌和任意一张花色相同的牌之间的所有牌全部取出,并得到与取出的所有牌点数和相同的分数 求最大得分 思路
阅读全文
摘要:题目大意: 一个序列看做一个环 选两段数使它们和最大 思路: 定义一个dp数组i j 0/1 表示前i个取了连续的j段 0/1表示取不取第i个 但是因为看做一个环 首尾相接的情况可以看做是选三段,其中第一个和最后一个必须取 然后dp就好了 1 #include<iostream> 2 #includ
阅读全文
摘要:题目大意: 从矩阵的左上角走到右下角,求走过的最小方差路径的方差*(n-m+1)^2 思路: 可以知道方差可以表示为平方和的平均数-平均数的平方 化简公式得到平方的和*(n+m-1)-路径上的权值和的平方 三维dp i j k表示走到i j位置 路径上经过的权值和为k的最小平方和 然后正常的转移 1
阅读全文
摘要:题目大意: 准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数 他的不吉利数A1A2...Am(0<=Ai<=9)有M位,不出现是指X1X2...Xn中没有恰好一段等于A1A2...Am A1和X1可以为0 思路: dp i j 为第i个号码匹配到第j个不吉利
阅读全文
摘要:第一次160太不像话了 第二题蛇皮错误并查集f[x]=find(f[x])写错了 改完之后250 mmp T1: 环形消灭虫子 思路: 首先可以想到枚举起点然后dp消灭虫子 复杂度n2 然后我想到了一个蛇皮优化 因为取到的点是不可能连在一起的 所以我们的枚举有很多是重复的 只需要枚举相邻的任意两个点
阅读全文
摘要:题目大意: 一个数列,取出一些数使得它们的总和最大且没有k个连续 思路: 首先我们可以找到一个nk的dp dp方程:dp[i]=dp[j-1]+sum[i]-sum[j] (sum[j]尽量小) 然后我们可以使用单调队列(单减)优化掉k即简化掉求最小值的一步 1 #include<iostream>
阅读全文
摘要:题目大意: 有n个点,一个人要从最左边的点走到最右边的点再走回来,除了起点每个点都只能走一次,求最短路径长度 思路: 首先可以看做是两个人一起走且路径无任何重合 设dp(i,j) 表示两个人走了前i个点,一个人在点i,另一个在点j 特殊的状态为j=i-1时,此时j可以一步跳到i+1,特殊考虑 1 #
阅读全文

浙公网安备 33010602011771号