洛谷3962 [TJOI2013]数字根】的更多相关文章

题目描述 一个数字的数字根定义为:这个数字每一位的数字加起来求和,反复这个过程直到和小于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).第三行是一个整…
P3962 [TJOI2013]数字根 题意 数字根:这个数字每一位的数字加起来求和,反复这个过程直到和小于10. 给出序列\(a\),询问区间\([l,r]\)连续的子区间里最大前5个不同的数字根,不够5个-1补全. 一个区间的数字根指区间和的数字根. \(a_i\le 10^9,n\le 10^5\) 开始写了个线段树发现是个假做法给我气死了... 数字根结论:对自然数\(x\),若\(x=0\),数字根为\(0\),否则为\((x-1)\bmod 9+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…
题面链接 洛谷 sol 我们先不考虑\(0\),发现数字根\(=\)它\(mod 9\). 我们前缀和一波,把区间和变成两数相减. 对于每个\(v\in\{0-8\}\),(这里面的\(mod 9=0\)的相当于数字根为9),我们维护每个数\(a\)往后第一个可以和它组成\((b-a) mod 9=v\)的位置,称为\(OJBK\)位置. 那么对于一段区间,求出每个\(v\in\{0-8\}\)的最小\(OJBK\)位置,若它在区间里面,那么这段区间就可以组成这个\(v\). 至于\(0\)我们…
题面 在做这道题前,先要会他的弱化版(实际一模一样,只是愚蠢的洛谷评测级别差了一档(睿智如姬无夜)) ----------------------------------弱化版--------------------- 弱化版 实际只是把矩阵行数改成两行而已 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.…
洛谷题面传送门 神仙多项式+组合数学题,不过还是被我自己想出来了( 首先对于两棵树 \(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\…
题面 我先对数字根打了个表,然后得到了一个结论:\(a\)的数字根=\((a-1)mod 9+1\) 我在询问大佬后,大佬给出了一个简单的证明: \(\because 10^n\equiv 1(mod 9)\) \(\therefore a_{n}*10^n+a_{n-1}*10^{n-1}+...+a_{1}\equiv a_{n}+a_{n-1}+...+a_{1}(mod 9)\) 这样的话一个区间\([l,r]\)的数字根就可以转化为\((pre_{r}-pre_{l-1}-1)mod…
洛谷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>…
P3966 [TJOI2013]单词 题目链接:https://www.luogu.org/problemnew/show/P3966 题目描述 小张最近在忙毕设,所以一直在读论文.一篇论文是由许多单词组成但小张发现一个单词会在论文中出现很多次,他想知道每个单词分别在论文中出现了多少次. 输入输出格式 输入格式: 第一行一个整数N,表示有N个单词.接下来N行每行一个单词,每个单词都由小写字母(a-z)组成.(N≤200) 输出格式: 输出N个整数,第i行的数表示第i个单词在文章中出现了多少次.…
题目描述 有一个取数的游戏.初始时,给出一个环,环上的每条边上都有一个非负整数.这些整数中至少有一个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不是一个丑数. 题目描述 你的工作是对于输入的集…
题目描述 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,表示有N个单词.接下来N行每行一个单词,每个单词都由小写字母(a-z)组成.(N≤200) 输出格式: 输出N个整数,第i行的数表示第i个单词在文章中出现了多少次. 输入输出样例 输入样例#1: 复制 3 a aa aaa 输出样例#1: 复制 6 3 1 说明 数据范围 30%的数据, 单词总长度不…
题目描述 波浪数是在一对数字之间交替转换的数,如 121212112121211212121 ,双重波浪数则是指在两种进制下都是波浪数的数,如十进制数 191919191919191919 是一个十进制下的波浪数,它对应的十一进制数 121212121212121212 也是一个波浪数,所以十进制数 191919191919191919 是一个双重波浪数. 类似的可以定义三重波浪数,三重波浪数在三种不同的进制中都是波浪数,甚至还有四重波浪数,如十进制 300=606300=606300=606…
题目大意:给定一个长度为 N 的序列,每个点有一个颜色.现给出 M 个操作,支持单点修改颜色和询问区间颜色数两个操作. 题解:学会了序列带修改的莫队. 莫队本身是不支持修改的.带修该莫队的本质也是对询问进行分块,不过在莫队转移时需要多维护一个时间维度,即:每个操作的相对顺序.具体来讲,将序列分成 \(O(n^{1 \over 3})\) 块,每个块的大小是 \(O(n^{2 \over 3})\),对询问的排序的优先级顺序是:询问左端点所在块,询问右端点所在块,询问的时间顺序.经过分析,带修该莫…
P3965 [TJOI2013]循环格 题目背景 一个循环格就是一个矩阵,其中所有元素为箭头,指向相邻四个格子. 每个元素有一个坐标(行,列),其中左上角元素坐标为\((0,0)\).给定一个起始位\((r,c)\),你可以沿着箭头方向在格子间行走. 即:如果\((r,c)\)是一个左箭头,那么走到\((r,c-1)\);如果是一个右箭头,走到\((r,c+1)\);如果是上箭头,走到\((r-1,c)\);如果是下箭头,走到\((r+1,c)\). 每一行和每一列都是循环的,即如果走出边界,你…
题目链接:https://www.luogu.org/problemnew/show/P1123 转载于:>>>>>> 题目描述 一个N×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻8个格子中的一个即认为这两个数字相邻),求取出数字和最大是多少. 输入格式: 输入第1行有一个正整数T,表示了有T组数据. 对于每一组数据,第1行有两个正整数N和M,表示了数字矩阵为N行M列. 接下来N行,每行M个非负整…
正解: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?…
题目描述 一个N×M的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻8个格子中的一个即认为这两个数字相邻),求取出数字和最大是多少. 输入输出格式 输入格式: 输入第1行有一个正整数T,表示了有T组数据. 对于每一组数据,第1行有两个正整数N和M,表示了数字矩阵为N行M列. 接下来N行,每行M个非负整数,描述了这个数字矩阵. 输出格式: 输出包含T行,每行一个非负整数,输出所求得的答案. 输入输出样例 输入样例#1: 3 4 4…
正解:数位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,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小. 输出应包括所去掉的数字的位置和组成的新的整数.(N不超过250位) 输入数据均不需判错. 输入输出格式 输入格式: n (高精度的正整数) k (需要删除的数字个数) 输出格式: 最后剩下的最小数. 输入输出样例 输入样例#1: 175438 4 输出样例#1: 13分析:贪心思想,我们每次删数肯定是要找前面的大数给删掉,并且这…
题目大意:问长度为$n$的$Sam$数有几个,$Sam$数的定义为没有前导零,相邻两个数字之差绝对值小于等于$2$的数 题解:发现转移方程一定,可以矩阵快速幂. 卡点:没有特判$n=1$的情况 C++ Code: #include <cstdio> const int mod = 1e9 + 7; inline int abs(int a) {return a < 0 ? -a : a;} inline void up(int &a, int b) {a += b - mod;…
3172: [Tjoi2013]单词 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 4293  Solved: 2083 [Submit][Status][Discuss] Description 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. Input 第一个一个整数N,表示有多少个单词,接下来N行每行一个单词.每个单词由小写字母组成,N<=200,单词长度不超过10^…
题目传送门 取数 题目描述 在一个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 分析…