ICode9

精准搜索请尝试: 精确搜索
  • 「ARC096C」Everything on It2021-07-03 13:01:25

    Solution 容斥,钦定 \(i\) 个数 \(\leq 1\) 次。 \[Ans=\sum_{i=0}^n (-1)^i\binom{n}{i}F(i) \] 其中 \(F(i)\) 表示有 \(i\) 个数的出现次数 \(\leq 1\) 次,剩余 \(n-i\) 个数随意的方案数。 方便起见,不妨设这 \(i\) 个数为 \(1,2,\cdots,i\)。可以把所有子集族中的子集分成两类:

  • 「ARC096C」Everything on It(容斥)2021-07-03 12:03:43

    容斥,钦定 \(i\) 个数 \(\leq 1\) 次。 \[Ans=\sum_{i=0}^n (-1)^i\binom{n}{i}F(i) \]其中 \(F(i)\) 表示有 \(i\) 个数的出现次数 \(\leq 1\) 次,剩余 \(n-i\) 个数随意的方案数。 方便起见,不妨设这 \(i\) 个数为 \(1,2,\cdots,i\)。可以把所有子集族中的子集分成两类: 含有 \(1,

  • 卡特兰数递归与递推2021-07-03 00:01:56

    1/500 卡特兰数简单来说就是对于一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?下面给出一道较小数据例题并对其分析. 题目 解法一: 递归 递归的思路考虑的是当前状态可以变为哪种状态,并找到递归终点再次进行回溯,下面我们分析数字的三种状态 在队列中在栈中出栈

  • 452 用最少数量的箭引爆气球(求解区间相交的个数)2021-07-02 12:05:52

    1. 问题描述: 在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。 一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处

  • sort和uniq2021-06-30 09:00:09

    通常sort和uniq一起使用,sort在前,uniq在后。 uniq -c是把个数统计在一行的最前面;uniq -u是去重但不打印重复个数。 但uniq的去重是相邻且相同的缩为一个 # cat data1 1 2 2 2 2 3 3 1 1 1 # cat data1 |uniq -c 1 1 4 2 2 3 3 1 和sort一起,先排序,那么相

  • 10452021-06-29 21:32:58

    理解题目意思很重要,化繁为简的能力很重要。         题目意思中暗含Customer表中的product_key来自于Product表中的product_key。 注意:Customer表中同一个customer_id,product_key可以重复。Product表中的product_key也可以重复。因为题目没有说他们是主键。 这里需要用到数

  • 最小的K个数(C++)2021-06-29 20:58:24

    1、快速排序的改进 其实和快速排序思想相同,只不过当哨兵被换到索引K时,排序结束,返回哨兵前的K个数。 时间复杂度:相对于快速排序只需要递归一半的数组,时间复杂度小于快排,期望时间复杂度为O(n),最坏时间复杂度O(n^2) 空间复杂度:O(1),没有额外空间 但是需要改变原始数组 class Solution

  • 算法---LeetCode 887. 鸡蛋掉落2021-06-28 23:33:41

    1. 题目 原题链接 给你 k 枚相同的鸡蛋,并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。 已知存在楼层 f ,满足 0 <= f <= n ,任何从 高于 f 的楼层落下的鸡蛋都会碎,从 f 楼层或比它低的楼层落下的鸡蛋都不会破。 每次操作,你可以取一枚没有碎的鸡蛋并把它从任一楼层 x 扔

  • 算法学习Day1-Leecode485-【数据结构】【数组】2021-06-27 22:29:28

            研一下学期才开始刷题,着实有些晚了,作为一个非科班生,更要好好学习算法这些基础。希望机械专业对我的工程思维的培养,能够在算法学习中发挥作用。 485:给定一个二进制数组, 计算其中最大连续 1 的个数。 示例: 输入:[1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是

  • 整数划分问题2021-06-26 23:01:18

    将一个正整数n表示成一系列正整数之和。 n = n1+n2+n3+...+ni(其中,n1>=n2>=...>=nk>=1,k>=1) 正整数n的一个这种表示称为正整数n的一个划分。正整数n的不同的划分个数称为正整数n的划分数,记作p(n)。 例如:正整数6有如下11种不同的划分,所以p(6) = 11。 6; 5+1; 4+2,4+1+1+1; 3+3,3+2+1,3+1

  • 788. 逆序对的数量2021-06-26 18:35:20

    merge_sort(l, r)返回区间[l, r]内逆序对的个数,而区间[l, r]内的逆序对个数是左半边的逆序对个数merge_sort(l, mid)和右半边逆序对个数merge_sort(mid + 1, r)之和外加左右两边构成的逆序对个数。 #include <iostream> using namespace std; const int N = 100010; #define LL

  • 786. 第k个数2021-06-26 12:00:20

    快选板子 实际上是在快排板子上改了改 #include <iostream> using namespace std; const int N = 100010; int n, k; int q[N]; int quick_sort(int l, int r, int k){ if(l == r) return q[l]; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while(i < j){

  • 算法复习2021-06-25 23:31:56

    第三章 5. 汉诺塔问题 解: // 从a经过b移动n个盘子到c void hanoi(int n, int a, int b, int c) { hanoi(n-1, a, c, b); print(f"从{a}移1个到{c}"); hanoi(n-1, b, a, c); } 6. 整数分划问题 求一个函数P(n),返回n的不同分划数。 例子:P(6)=6,因为有如下分划: 6 5+1 4+2

  • 求正负二进制数的1的个数2021-06-20 02:02:02

    class Solution { public: int NumberOf1(int n) { int ans = 0; int mask = 1; while(mask != 0){ if(mask & n) ++ans; mask <<= 1; } return ans; } }; ---这个方法很好的解决了负数在机

  • 二进制中1的个数2021-06-19 20:34:37

    描述 输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。 方法一:检查二进制每一位数字 我们通过右移操作消除第 i 位右边的数字,通过与 1 操作消除第 i 位左边的所有数字,对数字 n 重复32次这种操作就可以求得每一位的数字。 当我们要提取从右往左第3位数字时: 0110

  • 牛客题霸——最小的K个数(Javascript)2021-06-18 16:02:48

    一、文章链接 https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf?tpId=188&&tqId=38570&rp=1&ru=/activity/oj&qru=/ta/job-code-high-week/question-ranking 二、具体代码 function GetLeastNumbers_Solution(input, k) { if(k > input.le

  • 以0,1,2,3,4,5,6,7,8,9组成一个数组,列出所有不重复的3个数的排列2021-06-18 12:30:50

    以0,1,2,3,4,5,6,7,8,9组成一个数组,列出所有不重复的3个数的排列 如数组0,1,2,3 则排列为012,013,023,123这4个 /** * 计算结果 * * @param array $arr [0, 1, 2, 3] * @param int $num 一维数组的长度-1 * @param array $tmp 临时存储数据 * @param bool $first 是否

  • 不同的子序列2021-06-18 10:03:45

    思路 这道题目如果不是子序列,而是要求连续序列的,那就可以考虑用KMP。 1. 确定dp数组(dp table)以及下标的含义 dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。 2. 确定递推公式 这一类问题,基本是要分析两种情况 s[i - 1] 与 t[j - 1]相等s[i - 1] 与

  • CF451E Devu and Flowers2021-06-17 22:35:08

    Link Desciption 求一个可重集 \(S\) 的 \(m\) 子集的个数。\(S\) 的不同元素个数为 \(n\),\(n\leq 20\)。每种元素的个数 \(a_i\leq 10^{12}\) 。答案对 \(10^9+7\) 取模。 Solution 如果每种元素都有无数种的话,那么直接用插板法可得方案数为 \(\binom{m+n-1}{n-1}\)。但是问题是

  • 不超过 x 的素数个数2021-06-16 23:34:20

    \(\pi(x)\) 表示不超过 \(x\) 的素数个数。容易看出可以在 \(O(N)\) 时间复杂度,\(O(N)\) 空间复杂度离线预处理求出小于 \(N\) 的素数全体。但是如果 \(N=10^{14}\) 或者更大,这种做法必然是不现实的。因此下面给出高效的求解方法... 理论基础: 参考潘承洞《数论基础》以及论文包.z

  • 小可的果冻2021-06-16 18:33:38

    题目描述 小可与达达是一对好兄弟,妈妈从小给他们灌输“孔融让梨”的思想,恰好今天妈妈买了两袋果冻,分别给了小可和达达,但两袋果冻的数量不同。小可作为哥哥,想把个数多的一袋果冻让给弟弟。 现在请你写个程序模拟一下这个过程。如果小可那袋果冻的数量大于达达那袋里的果冻数量,则

  • AtCoder Beginner Contest 205(补题)2021-06-15 19:04:48

    D - Kth Excluded 题意: 给n个数,q次询问,每次询问第k大的数(数轴上去掉这n个数后,第k大的数) 思路: 对于这n个数,处理出来,当前这个数前面有多少个数没有被去掉(有多少数在数轴上),然后询问第k个数的时候,就找这个数在那个范围内,找到位置后,就从当前位置往右数k位,就是要找的数。 例如: 样

  • LeetCode 剑指 Offer 15. 二进制中1的个数2021-06-15 12:29:44

    请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 (~n + 1) & n即可得到n的最后一位1 用这个1异或n 即可得到去掉最后一个1的n 重复上述过程直到n去掉了所有的1 public cl

  • 533,剑指 Offer-最小的k个数2021-06-15 07:06:57

    Optimists are right. Pessimists are right. It’s up to you to choose which you will be.  乐观者是对的,悲观者也没错,你自己决定你想成为哪种人。 问题描述 输入整数数组arr,找出其中最小的k个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。   示

  • C语言:3个数排序2021-06-15 06:32:24

    #include <stdio.h> int main() { int a,b,c,t; /*定义4个基本整型变量a、b、c、t*/ printf("Please input a,b,c:\n"); /*双引号内的普通字符原样输出并换行*/ scanf("%d,%d,%d",&a,&b,&c); /*输入任意3个数*/ if(a>b) /*如果a大于b,借助中间变量t

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

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

ICode9版权所有