洛谷——P2090 数字对】的更多相关文章

P2090 数字对 题目描述 对于一个数字对(a, b),我们可以通过一次操作将其变为新数字对(a+b, b)或(a, a+b). 给定一正整数n,问最少需要多少次操作可将数字对(1, 1)变为一个数字对,该数字对至少有一个数字为n. 直接爆搜会TLE 突然发现这个过程跟辗转相除法类似, 那么对于$(a,b)$->$(1,1)$ 如果还原的过程$a==b==1$还原成功,反之失败 加速这个过程的方法$(a,b)$->$(b$,$a$%$b)$需要的步数是$a/b$ #include<bi…
发现如果给定两个数(a,b),可以用类似辗转相除法在logn的时间内计算出(反向)变到(1,1)的最小步数. 然而并不知道另一个数是多少? 暴力嘛,枚举一下另一个数,反正1000000的nlogn不虚啊 #include<cstdio> #include<algorithm> using namespace std; int calc(int a,int b) { ,t; ||b!=) { if(a<b) swap(a,b); if(a==b) return 0x3f3f3f…
洛谷1118 数字三角形游戏 题目描述 有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直到只剩下一个数字位置.下面是一个例子:     3   1   2   4       4   3   6         7   9          16 最后得到16这样一个数字. 现在想要倒着玩这样一个游戏,如果知道N,知道最后得到的数字的大小sum,请你求出最初序列a[i],为1-N的一个…
题目链接 https://www.luogu.org/problemnew/show/P1553 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调:小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分:分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母:百分数的分子一定是整数,百分数只改变数字部分.整数新数也应满足整数的常见形式,即除非给定的原…
传送门 洛谷改域名了QAQ 解题思路 没什么好说的,一道红题,本不想发这篇博客 ,但还是尊重一下CCF吧QAQ,怎么说也是第一年CSP呢! 用getchar一个个读入.判断.累加,最后输出即可. 不过要注意getchar是包含在cstdio库里的. AC代码 #include<iostream> #include<cstdio> using namespace std; int ans; int main() { ;i<=;i++){ ') ans++; } cout<…
题目描述 有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直到只剩下一个数字位置.下面是一个例子: 3 1 2 4 4 3 6 7 9 16 最后得到16这样一个数字. 现在想要倒着玩这样一个游戏,如果知道N,知道最后得到的数字的大小sum,请你求出最初序列a[i],为1-N的一个排列.若答案有多种可能,则输出字典序最小的那一个. [color=red]管理员注:本题描述有误,这里字典序…
题目描述 Description 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果.  输入输出格式 Input/output 输入格式: 输入文件count.in包含n+1行: 第一行是整数n,表示自然数的个数: 第2~n+1每行一个自然数. 输出格式: 输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺…
P1553 数字反转(升级版) 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调:小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分:分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母:百分数的分子一定是整数,百分数之改变数字部分.整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零:小数新数的末尾不…
题目:https://www.luogu.org/problemnew/show/P1216 题意: 给定一个三角形.从顶走到底,问路径上的数字之和最大是多少. 走的时候可以往左下(实际上纵坐标不变)或是往右下(纵坐标+1) 思路: 用$dp[i][j]$表示从$(1,1)$走到$(i,j)$的最大值. $(i,j)$可以从$(i-1,j)$或是$(i-1,j-1)$走过来 所以$dp[i][j] = max(dp[i-1][j], dp[i-1][j-1]) + num[i][j]$ 初态为$…
题目链接:https://www.luogu.org/problemnew/show/P1118 题意: 1~n的一个排列,相邻的两项加起来得到下一行. 现在给定最后一行的数字,问最初的1~n的排列是什么. 思路: next_permutation大法好.但是要注意剪枝. 首先要发现最后一行这个数系数的规律是一个杨辉三角. 先处理出这个系数. 然后排列. 如果我们在加到前i项的时候发现他已经比结果大了,那么后面不管怎么排列都是没有用的,要跳过. 怎么跳过呢,这里还挺tricky的[要学会!] 用…
正解:数位dp 解题报告: 传送门! 打算在寒假把学长发过题解的题目都做辣然后把不会的知识点都落实辣! ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 然后这道题,开始想到的时候其实想到的是大模拟,就有点像之前考试贪心专题里的这题一样 但是仔细一看发现大模拟做得可能太复杂辣,,,讨论有点儿多,但是肯定是讨论得出来的辣想想看省选的时候大力讨论一波就有100pts岂不美哉! 但是反正今天是不会港模拟的解法dei,,,这里港的是数位dp的方法 首先很容易想到的是,数位dp套路来说,它既然是要求[l,r],那就显然是[…
P1132 数字生成游戏 题目描述 小明完成了这样一个数字生成游戏,对于一个不包含0的数字s来说,有以下3种生成新的数的规则: 将s的任意两位对换生成新的数字,例如143可以生成314,413,134: 将s的任意一位删除生成新的数字,例如143可以生成14,13,43 在s的相邻两位之间s[i],s[i + 1]之间插入一个数字x,x需要满足s[i] < x < s[i + 1].例如143可以生成1243,1343,但是不能生成1143,1543等. 现在小明想知道,在这个生成法则下,从s…
https://www.luogu.org/problemnew/show/P1118 next_permutation的第二个参数是最后一个元素的下一个元素,sort也是一样!有毒!这么低级的错误.而且应该是用do_while因为原始排列也要考虑! 使用sort跳过一些permutation的原理来源于: 1.假设解存在,那么对称位置的两个元素交换也是一种解 2.我们要求第一种解,必定是左边元素小于右边对应元素的 3.当某个排列导致当前大于sum,怎么证明发现该元素之后的任意排列都是大于sum…
给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入输出格式 输入格式: 一个整数 NN 输出格式: 一个整数,表示反转后的新数. 输入输出样例 输入样例#1: 复制 123 输出样例#1: 复制 321 输入样例#2: 复制 -380 输出样例#2: 复制 -83 说明 数据范围 -1,000,000,000≤N≤1,000,000,000−1,000,000,000≤N≤1,000…
https://www.luogu.org/problem/show?pid=1043 题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k.游戏的要求是使你所得的k最大或者最小. 例如,对于下面这圈数字(n=4,m=2): 要求最小值时,((2-1) mod 10…
https://www.luogu.org/problem/show?pid=1307#sub 题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入输出格式 输入格式: 输入文件名为reverse.in . 输入共1 行,一个整数 N. 输出格式: 输出文件名为reverse.out . 输出共1行,一个整数,表示反转后的新数. 输入输出样例 输入样例#1: 123 输出样例…
P1553 数字反转(升级版) 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调:小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分:分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母:百分数的分子一定是整数,百分数只改变数字部分.整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零:小数新数的末尾不…
题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k.游戏的要求是使你所得的k最大或者最小. 例如,对于下面这圈数字(n=4,m=2): 要求最小值时,((2-1) mod 10)×((4+3) mod 10)=1×7=7,要求最大值时,为((2+4+3) mod…
https://www.luogu.org/problem/show?pid=1179 题目描述 请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数. 比如给定范围[2, 22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出 现 1 次,在数 21 中出现 1 次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6 次. 输入输出格式 输入格式: 输入文件名为 two.in. 输入共 1 行,为两个正整数 L 和 R,之间用一个…
链接:https://www.luogu.org/problem/P1307 题目: 题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入格式 一个整数 NN 输出格式 一个整数,表示反转后的新数. 输入输出样例 输入 #1复制 123 输出 #1复制 321 输入 #2复制 -380 输出 #2复制 -83 说明/提示 数据范围 -1,000,000,000≤N≤1,000…
题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调:小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分:分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母:百分数的分子一定是整数,百分数只改变数字部分.整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零:小数新数的末尾不为0(除非小数部分除了0没有别的…
题目描述 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共n个),你要按顺序将其分为m个部分,各部分内的数字相加,相加所得的m个结果对10取模后再相乘,最终得到一个数k.游戏的要求是使你所得的k最大或者最小. 例如,对于下面这圈数字(n=4,m=2): 要求最小值时,((2−1)mod10)×((4+3)mod10)=1×7=7,要求最大值时,为((2+4+3)mod10)×(−…
题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入输出格式 输入格式: 输入文件名为reverse.in . 输入共1 行,一个整数 N. 输出格式: 输出文件名为reverse.out . 输出共1行,一个整数,表示反转后的新数. 输入输出样例 输入样例#1: 123 输出样例#1: 321 输入样例#2: -380 输出样例#2: -83 说明 数据范围 -1,000,…
题目简介 题目描述       给定一个数,请将该数各个位上数字反转得到一个新数.       这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调:小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分:分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母:百分数的分子一定是整数,百分数只改变数字部分.整数新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零:小数新数的末尾…
题目 这个题我们乍一看会有些熟悉.觉得是可以用DP来做的那个题.但是打眼一看,就会发现不对了.因为那个题是顺推而这个题则是逆推. 这样的话可怎么办呢. 我们可以在草稿纸上推一下,我们随便写个数n. 再标个a,b,c,d. 当n=4时 我们可以得到下面的式子 sum=a+3b+3c+d a+2b+c         b+2c+d a+b          b+c         c+d a            b              c           d 因此我们就可以想到杨辉三角了…
题目 这道题是一个典型的DP,可以用倒推,顺推的方法,来解这道题.当然用不同的方法他的循环次序是不一样的,所以我们一定要深刻地理解题目的大意,再采用状态转移方程与边界每次求出最优解,并记录循环一遍后就可以得出答案. 顺推代码 #include<iostream> #include<cmath> #include<algorithm> #include<cstdio> using namespace std; int n,a[10000][10000],f[1…
传送门 两个感受:码量感人……大佬nb…… 规则一:$m$条路径都不相交,那么每一个点只能经过一次,那么考虑拆点,把每一个点拆成$A_{i,j}$和$B_{i,j}$,然后两点之间连一条容量$1$,费用该点本身数值的边,表明这个点只能被选一次,然后每一个点的$B$向它能到达的点的$A$连边,表明能从这个点到另一个点,容量随意,费用$0$,然后源点向第一排所有点的$A$连边,最后一排所有点的$B$向汇点连边,都是容量随意,费用$0$,然后跑一个最大费用流即可 规则二:每一个点可以被选多次,那么不用…
题目链接:https://www.luogu.org/problemnew/show/P1553…
题目:https://www.luogu.org/problemnew/show/P4013 最大费用最大流裸题: 注意:在第二种情况中,底层所有点连向汇点的边容量应该为inf,因为可以有多条路径结束在同一个点.(为这个调了半天...) 代码如下: #include<iostream> #include<cstdio> #include<queue> #include<cstring> using namespace std; queue<int>…
https://www.luogu.org/problemnew/show/P1553 忘记给整数加上前导零去除的代码了.其实不去也可以,额外的进位用一个carry另外存起来就好. #include<bits/stdc++.h> using namespace std; #define ll long long ]; int main(){ scanf("%s",s); int n=strlen(s); ;i<n;i++){ if(s[i]=='.'){ revers…