首页 > TAG信息列表 > 个数

P8539 「Wdoi-2」来自地上的支援 题解

思路 根据题意,如果每次询问选中的为第 \(x\) 个数,那么前 \(x-1\) 次操作一定不会选中第 \(x\) 个数。(感觉在说废话。) 同样,因为第 \(x\) 个数必须被选中 \(k\) 次,根据题意,不难发现这 \(k\) 次选中一定是从第 \(x\) 次操作到 \(x+k-1\) 次操作被选中。因为如果某个数在某次操作时没

SDUT 2022 Autumn Team Contest 7th

1.J题:给你T组数据,每一组数据给你一个区间,让你求这个区间的范围,区间的起始时间和终止时间可能被包含或重复     思路:思路的话,就是直接把给定的两个区间的之间的数包括端点存到vector去重,然后直接输出个数即可,或者直接存到set里直接系统去重也可 #include <iostream> #include

摩尔斯电码记忆规律

莫尔斯电码或莫尔斯电码是一种特殊的字符编码方式,它使用一系列信号对字母、数字和标点符号进行加密:长(破折号)和短(点)。 编码表 点和划音译为“嘀”、“嗒”,以下使用音译代表。 数字的记忆规律 0-9的摩尔斯电码均为5位; 1-5的摩尔斯电码,前面的点的个数就代表第几个数字,比如,1的摩尔斯

题解 洛谷 P1641 【[SCOI2010]生成字符串】

\(P1641 [SCOI2010]\)生成字符串 前置知识     组合数、坐标轴。 题目描述     以\(n\)个\(1\)和\(m\)个\(0\)组成字符串,求出满足条件「在任意的前\(k\)个字符中,\(1\)的个数不能少于\(0\)的个数」的字符串数量。 解题思路     考虑到题目要求的条件「\(1\)的个数不少

抽屉原理(鸽巢原理)

已知n+ 1个正整数,它们全都小于或等于2n,证明当中一定有两个数是互质的 取n个盒子,在第一个盒子我们放1和2,在第二个盒子我们放3和4,第三个盒子是放5和6,依此类推直到第n个盒子放2n-1和2n这两个数。 如果我们在n个盒子里随意抽出n+1个数。我们马上看到一定有一个盒子是被抽空的。 因此在

[arguments的使用] 利用函数求任意个数的最大值

[arguments的使用] 利用函数求任意个数的最大值

Taxi (曼儿哈顿->切比雪夫+二分) (2022杭电3)

题意: 多组样例,对于每组样例,先给出一个n和m,n代表点的个数,m代表询问的个数,接下来n行,每行3个数(xi,yi,wi),分别代表第i个点的坐标和权值,对于每组询问,首先给出一个坐标,让我们求出这个点到n个点中的值的最大值,这个点到第i个点的值定义为两点曼哈顿距离和i点权值的较小值。 题解: 曼儿

20220906总结

20220906三道模拟题 第一道没有什么技术含量,也没有什么算法,只要注意不出一些小失误就可以了。 第二题看到数据范围之后开始犯难,感觉想到的几种写法都无法拿到满分,其中有想到二分的正解思路,但因为没想明白如何打开区间所以最终沉没了。 正解就是二分第k个数的值,看小于它的数的个数

1151:素数个数

编程求2-n中有多少个素数。 #include <iostream>using namespace std;int main(){    int n,s=0,sum=0;    cin>>n;    for(int i=2;i<=n;++i)    {        s=0;        for(int j=2;j<=i-1;++j)        {            if(i%j==0)     

递推

公式一 等差数列求和: ((1+n)*n/2) 公式二 题目描述 设有一个N×M方格的棋盘( l≤ N≤100,1≤M≤100)。求出该棋盘中包含有多少个正方形、多少个长方形(不包括正方形)。 例如:当 N=2, M=3时: 正方形的个数有8个:即边长为1的正方形有6个;边长为2的正方形有2个。 长方形的个数有10个:即2×1的长

算法提高课 第四章 数据结构之树状数组

一、介绍 功能 快速求前缀和 O(logn) 修改某一个数 O(logn) 原理 c[x]:以x结尾的长度lowbit(x)的所有数的和 父节点找所有子节点(求和操作):c[x] = a[x] + c[x-1] + ... + c[lowbit(x-1)],x为偶数时,每一次去掉最后一个1;x为奇数时,没有子节点 子节点找父节点(修改操作):p = x + low

卡特兰数

卡特兰数,一个特殊的数列。通项公式为: \[Cat_n=\frac {C_{2n}^n}{n+1} \]从\(0\)开始的前几项为:\(1,1,2,5,14,42,132,\cdots\),所以有的题可以直接打个表看看(比如这个) 然后是它是怎么推出来的,最主要的就是从\((0,0)\)到\((n,n)\)不穿过直线\(y=x\)的路径计数(不想上图了,可以手画一个)

树状数组

前言: 设有一个包含n个数的数组a[ ] = { 9,2,5,6,3,12...... },现要求前i个数的和值,即前缀和sum[ i ] = a[ 1 ]+a[ 2 ]+a[ 3 ]+...+a[ i ](i = 1,2,3...n),可以怎样求? 首先想到的肯定是累加前i个数,但若对a[ i ]进行修改,则sum[ i ],sum[ i +1 ]...sum[ n ]都需要修改,最多需要修改n次,如

神奇结论在哪里

求证: \[\sum_{i=0}^n\binom{2k}k\binom{2n-2k}{n-k}=4^n \] 首先,我们将 \(4^n\) 视为 \(2^{2n}\),赋予其组合意义为长为 \(2n\) 的 \(0/1\) 串个数。 LHS 中组合数的结构指引我们将整个串分成两个部分,根据 \(\binom{2k}k\) 自然地想到第一部分可以是 \(0/1\) 个数相同的长度为 \(2

【总结】排列组合

概念 排列的定义:给定个数的元素中,取出指定个数的元素,进行排序。若一共有 \(n\) 个数,取出 \(m\) 个数,其排列数记为 \(A_n^m = \frac{n!}{(n - m)!}\)。 组合的定义:给定个数的元素中,取出指定个数的元素,不考虑排序。若一共有 \(n\) 个数,取出 \(m\) 个数,其组合数记为 \(C_n^m = \frac

CF1722G 题解

题目 构造一个长度为 \(n\) 的数列,数列中每个数各不相同且都不超过 \(2^{31}\),使得奇数项和偶数项的异或和相等。 思路 我提供一种比较神奇的构造方法。 首先,两个数相等可以转化成两个数异或和为 \(0\),那么这题就变成了,构造一个异或和为 \(0\) 的数列。 考虑将 \(n\) 个数分成若干

判断组合数奇偶

结论 先说结论 对于组合数\(C^k_n\),若n&k==k,则其为奇数,否则,其为偶数。 证明 \(C^k_n=\frac{n!}{k!(n-k)!}\) 我们用a表示n!中因子2的个数 b表示k!中因子2的个数 c表示(n-k)!中因子2的个数 显然有\(a\ge b+c\)(因为\(C^k_n\)一定为整数),如果a==b+c,那么\(C^k_n\)一定为奇数,若a>b+c\(,C^

求一个图的最打的半联通子集=求一个图的最长链方案和个数

拓扑图最长路 等于 背包问题求方案数 因为要求点不同 存在多条边同一情况 需要边判重(set) 拓扑求方案数 #include <iostream> #include <cstring> #include <algorithm> #include <unordered_set> using namespace std; typedef long long LL; const int N = 1e5+10,M=2e6+10;

191. 位1的个数

  labuladong 题解思路 难度简单506收藏分享切换为英文接收动态反馈 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。   提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将

leetcode222-完全二叉树的节点个数

完全二叉树的节点个数 递归 class Solution { public int countNodes(TreeNode root) { if(root == null) return 0; return countNodes(root.left)+countNodes(root.right)+1; } }

atcoder

\(ARC143\) A 给定三个整数,一次可以将两个数或三个数减一,问最少几步能减完。 设一开始三个数为 \(A,B,C(A\leq B\leq C)\),如果 \(A+B<C\),那么说明一定是无法满足条件的,因为 \(C\) 至多被减掉 \((A+B)\),此时 \(C-A-B>0\)。 如果 \(A+B=C\),那么很显然答案就是 \(C\)。 如果 \(A+

题解:【WC2005】双面棋盘

【WC2005】双面棋盘 题目链接 这天做双面棋盘这道题,发现题解里面大多都是 LCT ,对于线段树套并查集的写法思路讲评很少而且不大清晰,因此有了这一篇题解。 维护联通块的数量,很容易联想到使用并查集,考虑暴力,用并查集记录每个点的连通性,最后统计块数即可。但是如果每次进行格子翻转的

LeetCode/变为棋盘

一个 n x n 的二维网络 board 仅由 0 和 1 组成 。每次移动,你能任意交换两列或是两行的位置 返回将这个矩阵变为  “棋盘”  所需的最小移动次数 ,如果不存在可行的变换,输出 -1 1. 数学方法 移动使满足条件的题目,首先得判断棋盘是否满足条件 容易从棋盘得知,需要满足以

Codeforces Round #638 (Div. 2) B. Phoenix and Beauty(构造/思维)

https://codeforces.com/contest/1348/problem/B 如果一个数组的所有长度为k的子数组的和相同,那么这个数组就是美丽的。数组的子数组是任何连续元素的序列。 Phoenix目前有一个长度为n的数组a。他想在数组中插入一些整数,可能是零个,这样数组就变得漂亮了。 插入的整数必须介于1和

1 的个数

https://www.acwing.com/problem/content/1535/ ` 思路: 暴力肯定是不可能的,枚举每一个的情况,分类讨论。 #include <iostream> #include <vector> using namespace std; typedef long long LL; int n; LL calc(int n){ vector<int> nums; while (n){ nums.push