ICode9

精准搜索请尝试: 精确搜索
  • 51Nod 1006 最长公共子序列Lcs2021-07-26 01:33:18

    题目链接:51Nod 1006 最长公共子序列Lcs 题目大意: 题解: 最长公共子序列模板题,设\(dp[i][j]\)为字符串\(A[1...i]\)与字符串\(B[1...j]\)的最长公共子序列长度,则状态转移方程为: \[dp[i][j] = max\{dp[i-1][j-1] + (A[i] == B[j]), dp[i-1][j], dp[i][j-1]\} \]用\(pre\)数组记录上

  • 51Nod 1183 编辑距离2021-07-26 01:32:25

    题目链接:51Nod 1183 编辑距离 题目大意: 题解: 设\(dp[i][j]\)为字符串\(A\)的前\(i\)个字符变成字符串\(B\)的前\(j\)个字符需要的最小操作数。 若字符串\(A\)的第\(i\)个字符与字符串\(B\)的第\(j\)个字符相等,则问题变成将字符串\(A\)的前\(i-1\)个字符变成字符串\(B\)的前\(j-1\)

  • 51Nod 2649 完全背包2021-07-26 01:00:18

    题目链接:51Nod 2649 完全背包 题目大意: 题解: 完全背包模板题。 #include <iostream> using namespace std; int dp[50010], v[110], c[110], n, V; int main() { cin >> n >> V; for (int i = 1; i <= n; ++i) { cin >> v[i] >> c[i]; }

  • 51nod“省选”模测第二场 C 小朋友的笑话(线段树 set)2021-06-05 10:04:20

    题意 题目链接 Sol 直接拿set维护\(li\)连续段。因为set内的区间互不相交,而且每个线段会被至多加入删除一次,所以复杂度是对的。 #include<bits/stdc++.h> #define Pair pair<int, int> #define MP make_pair #define fi first #define se second using namespace std; const int

  • 51nod“省选”模测第二场 B 异或约数和(数论分块)2021-06-05 10:03:59

    题意 题目链接 Sol 这题是来搞笑的吧。。 考虑一个数的贡献是\(O(\frac{N}{i})\) 直接数论分块。 #include<bits/stdc++.h> #define Pair pair<int, int> #define MP(x, y) make_pair(x, y) #define fi first #define se second #define int long long #define LL long long #d

  • 51nod 1244 莫比乌斯函数之和(杜教筛)2021-06-05 10:03:25

    基准时间限制:3 秒 空间限制:131072 KB 分值: 320 难度:7级算法题  收藏  关注 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出。梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号。具体定义如下: 如果一个数包含平方因子,那么miu(n) = 0。例如:miu(4), mi

  • 树的遍历(天梯赛+51nod)2021-05-02 22:03:51

    3039 叶子节点的路径 给出一棵n个节点的树,节点编号为1-n(根节点编号为1)。对于每一个叶子节点,输出从根到叶子的路径。(按照路径的字典序)。   输入 第一行:1个数n(2 < n <= 1000),表示树的节点数量。 后面n-1行:每行2个数x y,表示节点x是节点y的父节点(1 <= x, y <= n)。 输出 输

  • 51nod 1122 机器人走方格 V4(矩阵乘法)2021-05-01 22:01:30

    http://www.51nod.com/Challenge/Problem.html#problemId=1122 如果整体考虑4个机器人会感觉没有头绪,但是如果我们只单独考虑每一个每一个机器人的最终位置,即分别枚举4个机器人的终点(共4!种可能),这样4个机器人到对应终点处的方案数相乘就是答案。 如何求一个机器人从位置i走n步走到

  • 51Nod - 2014 小朋友的笑话 (动态开点 线段合并)2021-04-10 21:02:22

    题目链接:传送门 题目思路:对于每一个笑话,用动态开点线段树来维护区间是否被覆盖(笑话是否已经被这些人听过),先假定范围内全部没听过(置1),然后再将该范围包含的被覆盖的区间置0; 代码: #include<bits/stdc++.h> #pragma GCC optimize(2) using namespace std; typedef long long LL; typ

  • 51Nod 2128 前缀异或2021-04-06 09:04:30

    前缀异或,\([1 \sim l-1]\)异或两次为\(0\),而\(0\)与任何数异或值都不变。 const int N=1e5+10; int a[N]; int n,m; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; a[i]^=a[i-1]; } cin>>m; while(m--)

  • 51nod 3045 Lcm与Gcd构造2021-03-16 20:58:32

    题意 给出2个数a,b的 Gcd(最大公约数n) 和 Lcm(最小公倍数m) ,求所有符合条件的a,b中,a + b的最小值。 思路 代码 #include <bits/stdc++.h> #define ll long long #define fi first #define se second #define pb push_back #define me memset const int N = 1e6 + 10; const int m

  • 51nod 1678 lyk与gcd2021-03-15 15:59:52

    题目链接 这天,lyk又和gcd杠上了。 它拥有一个n个数的数列,它想实现两种操作。 1:将 a i a_i ai​ 改为

  • 51Nod 1486 大大走格子2021-01-22 07:32:27

    Description 有一个h行w列的棋盘,里面有一些格子是不能走的,现在要求从左上角走到右下角的方案数。(只能向右和向下走) Solution 记$f_i$为第一个走到的坏格为第$i$个的方案数 于是有 $$f_n=\binom{x+y}{x} - \sum _{i=1}^{n-1} f_i\binom{x+y-x'-y'}{x-x'} $$ $O(n^2)$转移即可 #in

  • 【51Nod】1530 稳定方块 题解2020-11-13 11:33:30

    原题链接:点这里 很明显,瓦西亚会取当前能够拆的方块中编号最大的一个,皮台亚会取当前能够拆的方块中编号最小的一个。 证明很简单,以瓦西亚为例,若瓦西亚不取最大的一个,就算后面全取最大的也抵不过当前与最优解的差距。 那么,我们可以维护一个\(set\),存放当前所有能够拆的方块的编号。

  • 51nod 2500 后面第一个大于 主要方法单调栈,也讲了单调栈,要看栈的基本操作再见了2020-07-01 22:40:22

    题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=2500 对准备看这个的同学们说一句忠告: 1、如果你们想看这道题的枚举办法,再见~。    我们这里没有讲这个 2、如果你连栈是啥都不知道,再见~    我们这里也没有讲这个 3、如果你知道单调栈,不知道关系的话,欢迎加入

  • 51Nod 1350 斐波那契表示2020-06-26 12:07:50

    Problem 每一个正整数都可以表示为若干个斐波那契数的和,一个整数可能存在多种不同的表示方法,例如:14 = 13 + 1 = 8 + 5 + 1,其中13 + 1是最短的表示(只用了2个斐波那契数)。定义F(n) = n的最短表示中的数字个数,F(14) = 2,F(100) = 3(100 = 3 + 8 + 89),F(16) = 2(16 = 8 + 8 = 13 + 3)。定义

  • 51Nod 1486 大大走格子2020-06-26 11:52:26

    Problem 有一个h行w列的棋盘,里面有一些格子是不能走的,现在要求从左上角走到右下角的方案数。(只能向右和向下走) Solution 黑点里加入右下的点,每个点求一个ans[i],代表走到这个点的方案数。 ans[i]初始为C(n+m-2,m-1),对于所有在它左上的点,都减去那个点的ans[j]乘i、j之间的方案数。 (

  • 51nod 1600 Simple KMP2020-06-08 19:58:26

    题意 考虑转化下\(f(S)\): 我们考虑\(S\)的\(fail\)树上的每一个点\(x\),如果\(x\)到\(0\)的路径上有\(cnt\)个点(除去\(x\)和\(0\)),那么就会对\(f(S)\)产生\(cnt\)的贡献,于是现在\(f(S)\)变为了每个点会对很多点产生\(1\)的贡献,最后求和。 我们知道每个点代表一个前缀,那么我们就可以

  • 51nod 1355 斐波那契的最小公倍数2020-06-05 19:58:47

    题意 我们知道一个结论:\(\gcd(f_x,f_y)=f_{\gcd(x,y)}\)。 证明见这里。 于是我们考虑将\(lcm\)向\(\gcd\)方向化,我们知道\(lcm\)是给指数取\(\max\),\(\gcd\)是给指数取\(\min\),因此考虑\(\min-\max\)容斥: \(lcm(S)=\prod\limits_{p}p^{\max(S)}=\prod\limits_p p^{\sum\limits_{T

  • 小白进阶之路-51Nod 26522020-05-28 21:53:46

    题目:     错误思路:   刚开始尝试使用Java大数打一下表,得到了一个错误规律,让我在WA了两天之后看着题解还是不明白。   对比正确题解才知道在35之后我的规律错误了,给了我死刑,ok,换思路吧。。。   正确思路:   二分,判断中间值 mid 是否满足 mid 的阶乘后的零的个数满足条件,满

  • 51nod 1847 奇怪的数学题(min25)2020-05-25 22:58:12

    51nod 1847 奇怪的数学题(min25) http://www.51nod.com/Challenge/Problem.html#problemId=1847 设\(f(n)\)为\(n>1\)的次小约数(\(f(1)=0\)),很显然\(f(n)={n\over {\rm minp} (n)}\),其中\({\rm minp}(n)\)表示n的最小质因数。 原式就变成 \[\sum_i^n\sum_j^n f(\gcd(i,j))^k \]先

  • 51nod 1575 Gcd and Lcm2020-05-24 16:52:44

    Link 设\(f(i)=\sum\limits_{j=1}^i\sum\limits_{k=1}^i\operatorname{lcm}(\gcd(i,j),\gcd(i,k))\),那么\(ans=\sum\limits_{i=1}^nf(i)\)。 根据直觉\(f(n)\)肯定是积性函数。 \[\begin{aligned} f(n)&=\sum\limits_{i=1}^n\sum\limits_{j=1}^n\operatorname{lcm}

  • 51nod 1010 只包含因子2 3 5的数2020-05-15 20:52:34

    题目链接:http://class.51nod.com/Challenge/Problem.html#problemId=1010 一、题目描述 K的因子中只包含2 3 5。满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15。 所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数。 例如:n = 13,S中 >= 13的最小的数是15,所以输出

  • 51nod 2989 组合数2020-05-10 11:01:18

    题目链接:http://class.51nod.com/Challenge/Problem.html#problemId=2989 一、题目描述 组合数C(m,n),表示从M个数中选择N个,有多少种不同的方法。 组合数的计算公式如下: 给出m,n输出C(m,n)最后9位数,去掉前缀的0。 输入 一行,两个正整数N和M(N<=1000000,M<=1000000)。   输出 一行,输

  • 51nod 2652 阶乘0的数量 V22020-05-05 09:04:09

    题目网址:http://class.51nod.com/Challenge/Problem.html#problemId=2652 一、题目描述 给出一个数k,求最小的n,使得n的阶乘后面0的数量>=k。 例如k=1,5的阶乘 = 1*2*3*4*5 = 120,120后面有1个0。并且4的阶乘后面没有0,所以5是最小的结果。 输入 一个数k(1 <= k <= 10^9) 输出 输出最

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有