洛谷——P1748 H数】的更多相关文章

P1748 H数 题目背景 无 题目描述 所谓H数,是指只含有2,3,5,7这些质因数的数,如630是H数,而22不是.现在要求输出第n个H数,为了方便起见将H[1]定为1.已知n不超过10000,最后数据在int64范围之内. 输入输出格式 输入格式: 一个数n(如题目) 输出格式: 第n个H数 输入输出样例 输入样例#1: 复制 input1:30 input2:1 输出样例#1: 复制 output1:49 output2:1 说明 穷举会爆掉,要用生成法,最好加优化,不然空间复杂度比较大…
洛谷P1102 A-B数对 https://www.luogu.org/problem/show?pid=1102 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈! 好吧,题目是这样的:给出一串数以及一个数字C,要求计算出所有A-B=C的数对的个数.(不同位置的数字一样的数对算不同的数对) 输入输出格式 输入格式: 第一行包括2个非负整数N和C,中间用空格隔开. 第二行有N个整数,中间用空格隔开,作为要求处理的那串数.…
洛谷P1288 取数游戏II 先手必胜的条件需要满足如下中至少 \(1\) 条: 从初始位置向左走到第一个 \(0\) 的位置,经过边的数目为偶数(包含 \(0\) 这条边). 从初始位置向右走到第一个 \(0\) 的位置,经过边的数目为偶数(包含 \(0\) 这条边). 否则先手必败. #include<stdio.h> #include<string.h> using namespace std; const int maxn = 25; int a[maxn], n, ans…
洛谷题面传送门 神仙多项式+组合数学题,不过还是被我自己想出来了( 首先对于两棵树 \(E_1,E_2\) 而言,为它们填上 \(1\sim y\) 使其合法的方案数显然是 \(y\) 的 \(E_1\cap E_2\) 的连通块次方,又显然 \(E_1,E_2\) 的导出子图是一棵森林,因此 \(E_1\cap E_2\) 连通块个数就是 \(n-|E_1\cap E_2|\),因此我们要求的答案就是 \(\sum\limits_{E_1}\sum\limits_{E_2}y^{n-|E_1\…
题面 在做这道题前,先要会他的弱化版(实际一模一样,只是愚蠢的洛谷评测级别差了一档(睿智如姬无夜)) ----------------------------------弱化版--------------------- 弱化版 实际只是把矩阵行数改成两行而已 sol:先排序,后考虑一个序列a[1]+b[1],a[2]+b[1],a[3]+b[1],······,a[n-1]+b[1],a[n]+b[1]; 显然对于上一个序列而言 a[1]+b[1]<=a[1]+b[2], a[2]+b[1]<…
题目背景 woshiren在洛谷刷题,感觉第一题:求两数的和(A+B Problem)太无聊了,于是增加了一题:A-B Problem,难倒了一群小朋友,哈哈. 题目描述 给出N 个从小到大排好序的整数,一个差值C,要求在这N个整数中找两个数A 和B,使得A-B=C,问这样的方案有多少种? 例如:N=5,C=2,5 个整数是:2 2 4 8 10.答案是3.具体方案:第3 个数减第1 个数:第3 个数减第2 个数:第5 个数减第4 个数. 输入输出格式 输入格式: 第一行2 个正整数:N,C.…
洛谷P3166:https://www.luogu.org/problemnew/show/P3166 思路 用组合数求出所有的3个点组合(包含不合法的) 把横竖的3个点共线的去掉 把斜的3个点共线的去掉(枚举所有的矩阵把每个矩阵的对角线去掉) 每一条对角线可以取得首尾两点有(n-i)*(m-j)*2种方式可以选择 每一条对角线除了首尾两个点之外可以取到中间点有gcd(i,j)-1个 因此有对于每个条对角线有gcd(i,j)-1种要去掉(相似三角形) 代码 #include<iostream>…
题目描述 Description 所谓同构数是指这样的数,即它出现在它的平方数的右端.例如,5的平方是25 (即5×5=25),5是25右端的数,那么5就是同构数.又如,25的平方是625(即25×25=625),同理25也是同构数.找出通过键盘输入的两个正整数N和M之间同构数的个数.  输入输出格式 Input/output 输入格式: 一行,任意给定的两个正整数N,M 输出格式: 一个正整数,表示[N,M]之间同构数的个数.  输入输出样例 Sample input/output 样例测试点…
传送门 Orz神仙题,让我长了许多见识. 长式子警告 思路 y=1 由于y=1时会导致后面一些式子未定义,先抓出来. printf("%lld",opt==0?1:(opt==1?ksm(n,n-2):ksm(n,2*n-4)))即可. opt=0 这没什么好说的--统计有多少条边重合即可. opt=1 为了方便,以下令\(bas=y^{-1}\). 以下所有集合都为一棵树/一个森林的边集. 先从暴力开始推起: \[ ans=\sum_{T2} bas^{|T1\cap T2|-n}=…
题目大意:给定一个长度为 N 的序列,每个点有一个颜色.现给出 M 个操作,支持单点修改颜色和询问区间颜色数两个操作. 题解:学会了序列带修改的莫队. 莫队本身是不支持修改的.带修该莫队的本质也是对询问进行分块,不过在莫队转移时需要多维护一个时间维度,即:每个操作的相对顺序.具体来讲,将序列分成 \(O(n^{1 \over 3})\) 块,每个块的大小是 \(O(n^{2 \over 3})\),对询问的排序的优先级顺序是:询问左端点所在块,询问右端点所在块,询问的时间顺序.经过分析,带修该莫…
正解:AC自动机+dp 解题报告: 传送门! 首先看到多串匹配balabala显然想到建个AC自动机? 然后可以用一点儿数位dp的思想地想下(,,,其实并不算QAQ 幸运数可以分为两类:位数<n的和位数=n的 下面分别考虑下 对位数<n的,相当于就没有任何约束,直接dp转移下就好 然后对位数=n的,另外做一次dp,然后多设一组状态表示当前是否相等(就和数位dp差不多的那种,,, 最后加起来就欧克! 啊说得好潦草,,,算了反正就大概这个意思,看下代码趴QwQ #include<bits/s…
正解:主席树 解题报告: 先放下传送门QAQ 首先可以先思考如果只有一组询问,怎么解决 可以这么想,最开始一个数也麻油的时候能表示的最大的数是0嘛 然后先排个序,按顺序每次新加入一个数x,设加入这个数之前能表示的最大的数是y 首先显然的是如果x>y+1,y+1一定不能被表示出来,就GG了 如果x<=y+1,那么能表示出来的最大的数就一定是x+y,就更新一下y+=x 从上面这个式子我们可以得到实际上每加入一个数,当可以继续下去的时候其实就是y=∑x 然后现在考虑是有多组询问的鸭怎么搞呢QAQ?…
正解:数位dp 解题报告: 传送门! 这题一看就是个数位dp鸭,"不含前导零且相邻两个数字之差至少为2"这种的 然后就直接套板子鸭(板子戳总结,懒得放链接辣QAQ 然后就是套路 然后就没了,,, 昂对了这题还有一个,分块暴力做法233333 就很强,很想学 我先把数位dp的代码放上来再港分块暴力方法hhhhh #include<bits/stdc++.h> using namespace std; #define il inline #define rg register…
题目描述 给出N 个从小到大排好序的整数,一个差值C,要求在这N个整数中找两个数A 和B,使得A-B=C,问这样的方案有多少种? 例如:N=5,C=2,5 个整数是:2 2 4 8 10.答案是3.具体方案:第3 个数减第1 个数:第3 个数减第2 个数:第5 个数减第4 个数. 输入输出格式 输入格式: 第一行2 个正整数:N,C. 第二行N 个整数:已经有序.注意:可能有相同的. 输出格式: 一个整数,表示该串数中包含的所有满足A-B=C 的数对的方案数. 输入输出样例 输入样例#1: 4…
题目传送门 取数 题目描述 在一个n行m列的数阵中,你须在每一行取一个数(共n个数),并将它们相加得到一个和.对于给定的数阵,请你输出和前k小的取数方法. 输入输出格式 输入格式: 第一行,三个数n,m,k. 第2~n+1行,每行m个正整数 输出格式: 一行共k个数,代表在每一行取一个数前k小的加和 输入输出样例 输入样例#1: 复制 3 3 2 1 2 3 6 3 5 4 1 2 输出样例#1: 复制 5 6 说明 对于20%的数据,n≤8 对于100%的数据,n≤800,k≤m≤800 分析…
[CQOI2015]选数 题目描述 我们知道,从区间\([L,H]\)(\(L\)和\(H\)为整数)中选取\(N\)个整数,总共有\((H-L+1)^N\)种方案. 小\(z\)很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的\(N\)个整数都求一次最大公约数,以便进一步研究.然而他很快发现工作量太大了,于是向你寻求帮助. 你的任务很简单,小\(z\)会告诉你一个整数\(K\),你需要回答他最大公约数刚好为\(K\)的选取方案有多少个.由于方案数较大,你只需要输出其除以\(1000…
题面 传送门 前置芝士 矩阵树,基本容斥原理,生成函数,多项式\(\exp\) 题解 我也想哭了--orz rqy,orz shadowice 我们设\(T1,T2\)为两棵树,并定义一个权值函数\(w(T1,T2)=y^{n-|T1\cap T2|}\),其中\(|T1\cap T2|\)为两棵树共同拥有的边的数目 显然,\(w(T1,T2)\)就是两棵树在该情况下的方案个数,因为\(T1\cap T2\)后的图中每个连通块只能用同一种颜色,而\(n-|T1\cap T2|\)就是连通块个数…
https://www.luogu.org/problemnew/show/P2657 不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. 这道题是个显然到不能再显然的数位dp了. 来个最神奇的dp[i][j]表示i位数,开头为j的windy数的个数吧. 那么dp[i][j]的求法是很显然的,写个sum数组求和更为方便. 那么怎么统计windy数呢? 约定由布丁酱写的数位dp,求闭区间[l,r]时,使用count(r)-count(l-1),也就是count(x)表示不小于的[0,…
https://www.luogu.org/problem/show?pid=1106 题目描述 键盘输入一个高精度的正整数N,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小. 输出应包括所去掉的数字的位置和组成的新的正整数.(N不超过250位) 输入数据均不需判错. 输入输出格式 输入格式: n (高精度的正整数) k (需要删除的数字个数) 输出格式: 最后剩下的最小数. 输入输出样例 输入样例#1: 17543…
题目描述 一个数字的数字根定义为:这个数字每一位的数字加起来求和,反复这个过程直到和小于10.例如,64357的数字跟为7,因为6+4+3+5+7=25,2+5=7个区间的数字根定义为这个区间所有数字和的数字根. 给定一个序列A1,A2,A3,…,An,你需要回答一些询问.每一个询问给定个区间[L,R],求出这个区间所有连续子区间里最大的前5个不同的数字根,不够5个的用-1补全 输入输出格式 输入格式: 第一行一个整数N,表示序列的长度.第二行是N个整数Ai(0≤Ai<10^9).第三行是一个整…
题目 博弈论. 考虑先手和后手的关系.然后可以通过统计数值不是0的数的个数来得出答案. \(Code\) #include <bits/stdc++.h> using namespace std; int main() { int n, ans = 0, a[1010]; scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); if (a[i] == 0…
数的划分[传送门] 算法的话,dfs+剪枝: 据说是01年之前的NOIp提高组: 思路: 这道题是求把n无序的划分成k份的方案数,最直接的搜索方法是依次枚举x1,x2……xk的值,然后判断,显然这么搜索的话,很容易就TLE了qwq.所以我们需要剪枝,这道题用到的主要是可行性剪枝和上下界剪枝: ①因为本题不考虑分解的顺序,所以我们可以规定分成的这k个数是从小到大分的,即a[i]<=a[i+1]. ②假设我们已经把n分解为i-1个数分别为a[1],a[2]……a[i-1](其中a[1]<=a[2]…
P2723 丑数 Humble Numbers 题目背景 对于一给定的素数集合 S = {p1, p2, ..., pK},考虑一个正整数集合,该集合中任一元素的质因数全部属于S.这个正整数集合包括,p1.p1*p2.p1*p1.p1*p2*p3...(还有其 它).该集合被称为S集合的“丑数集合”.注意:我们认为1不是一个丑数. 题目描述 你的工作是对于输入的集合S去寻找“丑数集合”中的第N个“丑数”.所有答案可以用longint(32位整数)存储. 补充:丑数集合中每个数从小到大排列,每个丑…
题目链接:https://www.luogu.org/problem/P1288 首先,如果你的一边的边是 \(0\) ,那么你肯定走另一边. 那么你走另一边绝对不能让这条边有剩余,因为这条边有剩余的话队首再走回来并去掉所有的值那么你就输了. 因为大家都绝对聪明,所以会选择将走过的边全部取完. 那么现在就面临着一个问题,你一开始要么往左走,要么往右走. 所以需要记录一下往左走的边数和往右走的边数,只要有一条路的边数是奇数,则先手赢:如果两条边都是偶数,则奇数赢. 实现代码如下: #include…
题目链接:https://www.luogu.com.cn/problem/P1037 题目描述 给出一个整数 \(n(n<10^{30})\) 和 \(k\) 个变换规则 \((k \le 15)\) . 规则: 一位数可变换成另一个一位数: 规则的右部不能为零. 例如:\(n=234\).有规则(\(k=2\)): \(2\)->\(5\) \(3\)->\(6\) 上面的整数\(234\)经过变换后可能产生出的整数为(包括原数): \(234\) \(534\) \(264\) \…
题目链接:https://www.luogu.com.cn/problem/P1036 题目描述 已知 \(n\) 个整数 \(x_1,x_2,-,x_n\) ,以及 \(1\) 个整数 \(k(k<n)\) . 从 \(n\) 个整数中任选 \(k\) 个整数相加,可分别得到一系列的和. 例如当 \(n=4,k=3\) , \(4\) 个整数分别为 \(3,7,12,19\) 时,可得全部的组合与它们的和为: \(3+7+12=22\) \(3+7+19=29\) \(7+12+19=38\)…
进入正题 思路:递归 这道题有点像放苹果: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法) 转化一下就有: 把n个苹果放在k个盘子里,每个盘子都不空. 那么这样就好理解,可以先把每一个盘子都放上苹果,注意是每一个盘子,所以开始递归时从(n - k)开始,盘子数还是k: 接下来就是递归里面了 1.如果苹果为0,那么就返回1,就算上一次的方案完成,有了1个方案: 2.如果只有一个盘子了,那么肯定把剩下所有的都放进去,所有又1个…
题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流取数,取数的规则如下: (1)选择硬币左边或者右边的一条边,并且边上的数非0: (2)将这条边上的数减至任意一个非负整数(至少要有所减小): (3)将硬币移至边的另一端. 如果轮到一个玩家走,这时硬币左右两边的边上的数值都是0,那么这个玩家就输了. 如下图,描述的是Alice和Bob两人的对弈过程,…
题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个0.然后,将一枚硬币放在环上的一个节点上.两个玩家就是以这个放硬币的节点为起点开始这个游戏,两人轮流取数,取数的规则如下: (1)选择硬币左边或者右边的一条边,并且边上的数非0: (2)将这条边上的数减至任意一个非负整数(至少要有所减小): (3)将硬币移至边的另一端. 如果轮到一个玩家走,这时硬币左右两边的边上的数值都是0,那么这个玩家就输了. 如下图,描述的是Alice和Bob两人的对弈过程,…
P2723 丑数 Humble Numbers 52通过 138提交 题目提供者该用户不存在 标签USACO 难度普及/提高- 提交  讨论  题解 最新讨论 暂时没有讨论 题目背景 对于一给定的素数集合 S = {p1, p2, ..., pK},考虑一个正整数集合,该集合中任一元素的质因数全部属于S.这个正整数集合包括,p1.p1*p2.p1*p1.p1*p2*p3...(还有其它).该集合被称为S集合的"丑数集合".注意:我们认为1不是一个丑数. 题目描述 你的工作是对于输入的集…