P1463 [POI2001][HAOI2007] 反素数 数据很大,N越大,答案就有可能更新,无明显规律,打表. 能想到的暴力打法打了一晚上还没打完 必须用小表打大表。有一个结论:将数分解质因数,如果较小的素数的指数比较大的素数的指数小,那么交换两个指数可以使原来的因数个数不变而答案更小。 所以我
N-Particle Arts 题意 有n个粒子,第i个粒子有\(a_i\)的能量。粒子之间不停的碰撞,当两个分别具有能量a,b的两个粒子相撞之后这两个粒子会消失,同时产生两个能量分别为a&b,a|b,的粒子。当这些粒子的状态稳定之后求它的能量的方差是多少。(稳定是指方差不再改变) 数据范围 \(1 <= n <= 1
+00:02 +00:16 +01:08 +02:07 VP 情况 4/8 ABCE ,赛时排名可以到823,什么时候我可以上个青 B 本想写个map的二分的,发现自己不会,写了个普普通通的二分 C 高精度模拟,一发过了,用个vector将每个数位存起来,从个位开始判断,如果 A_i 的数能加上小于10的正整数大于等于S_j+
arc145_d Non Arithmetic Progression Set long long 、祖宗、懂? CF1250N Wires 离散化后解决后输出方案时记得还原回离散化前的值! P2481 [SDOI2010]代码拍卖会 \(f(x)=10x+1\bmod p\) 一直递归可能不是环,而是 \(\rho\) 形的,所以环长不等于总长度。 然后还要判余数,和 \(n\) 根本走
E. Gardener and Tree 将度为1的顶点加入队列,做拓扑排序,记录点的遍历层次,答案为 n-前k层的点 // AC one more times ////////////////////////////////////////INCLUDE////////////////////////////////////////// #include <iostream> #include <algorithm> #include <cst
递归的写法 第一种写法—朴素DFS求解 时间复杂度O(2^n) int fib(long long x) { if(x==1) return 1; if (x==2) return 1; return fib(x-1)+ fib(x-2); } 递归写法的劣势在于计算到第40个之后速度就会肉眼可见的十分慢 线性递推解法(动态规划)—时间复杂度(O(n)) #inclu
API:Application Program Interface应用程序接口 JDK给我们提供的一些已经写好的类,可以直接调方法来解决问题 类的方法在宏观上都可以称为接口 接口:1.interface 2.有返回值API服务 短信接口(聚合数据) api文档,介绍api,别人通过文档才能调用 ,文档生成9:20 时间相关api(
时间复杂度为 \(O\)\((\)\(n\) \(log\) \(n\)\()\),是一种稳定的排序。 思想 归并排序是一种基于分治思想的排序算法,总的来说有三个步骤: 分解:将 \(n\) 个元素分为长度为 \(\frac{n}{2}\) 的子序列。 解决:运用合并排序法对两个子序列递归的排序。 合并:合并两个已经排好序的子序
题目叙述 有点长,大概就是一个扩展CRT的模板。 题解 相当于求 \(b_ix\equiv a_i\pmod {p_i}\) 的解了。 考虑先用扩展 CRT 求 \(x\mod p_i\) 是多少。 然后合并即可。 写的时候注意扩展欧几里得要边取模边做。 另外如果想写得简单一些,可以考虑直接套上去,不先把 \(x\mod p_i\) 取值
题目链接 题目 给定两个整数 l 和 r ,对于所有满足1 ≤ l ≤ x ≤ r ≤ 10^9 的 x ,把 x 的所有约数全部写下来。对于每个写下来的数,只保留最高位的那个数码。求1~9每个数码出现的次数。 思路 显然数论分块 然后统计一下每一块内1到9出现的情况乘上 \(n/l\) 即可 Code // Problem:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define N 100005 #define ll long long using namespace std; inline int read() { int x = 0, f = 1; char c = getchar(); while (c < '0
比赛链接: https://ac.nowcoder.com/acm/contest/33187 G.Link with Monotonic Subsequence 题意: 构造一个排列,让 \(max(lis(p), lds(p))\) 最小。 思路: 根据 \(Dilworth\) 定理,最小上升子序列长度为 \(\lceil \sqrt{n} \rceil\),所以构造每组长度都是 <= $ \lceil \sqrt{n} \rceil$
什么是Serializable? 这是java的一个接口,这个接口是用来完成序列化和反序列化操作的。 那么问题来了,什么是序列化和反序列化呢? 任何类型只要实现了Serializable接口,就可以被保存到文件中,或者作为数据流通过网络发送到别的地方。也可以用管道来传输到系统的其他程序中。 这样说可
F. K-th Power 传送门: 牛客:https://ac.nowcoder.com/acm/contest/34866/F cf:https://codeforces.com/group/5zHJ4CTyoU/contest/392060/problem/F 题意:求区间[l,r]中,不含有\(p^k\)因子的数字的个数。其中p是质数。 可以用容斥+莫比乌斯解决。 问题转换成求[1,r]和[1,l-1]含有\(p^
题解 题目传送门 1.分析题目 1.矩阵乘法 如果想要\(AC\)这道题,就需要学习矩阵乘法。顾名思义,矩阵乘法就是矩阵乘矩阵的运算。 矩阵乘法的运算法则如下: 现有一个\(N \times P\)的矩阵\(A\)和一个\(P \times M\)的矩阵\(B\),令矩阵\(C=A\times B\),则\(C_{i,j}=\sum\limits_{k=1}^{P}
原因 Js精度为 16位(十进制) 而后端用作id的Long类型通常其位数会高于16位 在后端将数据封装时候,由于精度限制而四舍五入导致精度损失,进而导致在update数据时会出现无效情况但是不报错! 解决办法 将后端相应json数据给页面时,先由Long统一转为String,在处理(configClass中配置消息转化
观察几个数据,有一种思路:类似于二分,判断每一位应该填1还是0; 1 #include <bits/stdc++.h> 2 //#define loveGsy 3 using namespace std; 4 int n; 5 unsigned long long k, bk; 6 bool flag; 7 8 int main() { 9 #ifdef loveGsy 10 freopen("a.in", "r", std
链接 \(Equipment Upgrade\) 令 \(f_i\) 为升到 \(i\) 级所需期望费用,易得: \(f_i = f_{i-1} + c_{i-1} + \frac{1-p_{i-1}}{\sum\limits_{j=1}^{i-1}w_j}\sum\limits_{j=0}^{i-1}(f_i-f_j)w_{i-j-1}\), 再化化得 \(p_{i-1}f_i=f_{i-1}+c_{i-1}-\frac{1-p_{i-1}}{\sum\limits_{
这题要推一下式子,注意涉及到取模的式子都要尽量展成减去下取整的形式。 注意,这里求和符号是求到n,因此分块里面 l 的范围就是l<=n,然后对于n大于k的情况需要特判一下。 1 #include "bits/stdc++.h" 2 using namespace std; 3 typedef long long LL; 4 LL n,k; 5 int m
思路 看到这道题,我首先想到求到数组 \(a\) 的和 \(s1\),和数组 \(b\) 的和 \(s2\)。 如果 \(s1 > s2\), 那就不可能让两个数组完全相同。 但是样例就已经把这种方法否定了。 但是我们不难发现: 若 \(a\) 数组中的这个值小于 \(b\) 数组中的这个值,则增加 \(a\) 数组中的数字。如果
思路:将Long类型转成字符串 代码实现: import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.context.annotation.Bean; import org.sp
目录简介计算Hash前缀Hash递推快速计算子串Hash用Hash匹配字符串综合:P2852 [USACO06DEC]Milk Patterns G 简介 Hash,将一个字符串映射到一个数字上。 计算Hash 计算Hash的方法有很多种,比如说在密码学中常用的 \(\texttt{MD5}\) 和 \(\texttt{SHA256}\) 等。 但是我们一般使用一个简
title: 杭电多校补题 author: Sun-Wind date: July 25, 2022 1002 思路 由于数据量较小,可以考虑二进制枚举+bfs 刚开始是可以任意走的 我们可以做一个放大的操作(*2倍),这样可以避免double的影响 不仅如此,放大以后只能向上下左右四个方向走,可以证明斜着走的情况并不存在(因为墙壁坐
public static String getDiffDateStr(Date startTime,Date endTime){ long diff = endTime.getTime() - startTime.getTime(); long diffSeconds = diff / 1000 % 60; long diffMinutes = diff / (60 * 1000) % 60; long diffHours = dif
二叉搜索树,也叫二叉排序树,满足以下性质: 对于任意节点,(如果有)左子节点小于当前节点,右子节点大于当前节点 算法思路 也是递归吗?递归地去判断左右子节点与当前节点的大小 官方题解中更巧妙的办法是:中序遍历,基于以下性质 二叉搜索树的中序遍历一定是升序序列 只需要在中序遍历的过程