- 博客(10)
- 收藏
- 关注
原创 UVA-1390 互联
题目大意:输入n个点m条边的无向图G,每次随机添加一条非自环的边,求使G连通的期望加边次数。添加每条边的概率是相等的,加完之后可能出现重边,即在两个点之间有多条边连接。n<=30,m<=1000。既然提到连通,那么一定有连通块,求连通块的最快办法就是dfs。首先来一个dfs,可以求出有多少连通块,以及每个连通块的点个数。然后我们可以想办法来计算。设dp(S)为图的连通状态为S时...
2020-02-04 17:12:58
219
原创 直线上的点——扩展欧几里得算法
问题:求直线ax+by+c=0上有多少个整数点(x,y)满足x∈[x1,x2],y∈[y1,y2]。分析:为了解决这个问题,我们需要学习扩展欧几里得算法。我们知道欧几里得算法是求gcd(a,b)的,而扩展欧几里得算法则是求ax+by=gcd(a,b)时x和y的一组解。不多说,直接把代码贴上:、void gcd(int a,int b,int&d,int&x,int&...
2020-01-19 16:03:16
301
原创 UVA-1282 Fibonacci单词
题目大意:定义F(n)如下(下面的0、1表示01串“0”、“1”,加法表示连接):求F(n)(n≤100)中非空01串p(|p|<105)出现的次数。既然p是“串”,那么我们就用“串”的格式来保存它。定义count_p(s)为在字符串s中p出现的次数,则我们可以用递推。递推公式是:f(n)=f(n−1)+f(n−2)+f(n)=f(n-1)+f(n-2)+f(n)=f(n−1)+f(n...
2020-01-11 17:58:37
251
原创 UVA-12212 记住密码
题意:求出在A和B之间有多少个数,翻转之后还在A和B之间。翻转:123翻转后是321,1203翻转后是3021,120翻转后是21。数据范围:A ≤ B<264首先我们可以看到,这么大的数据范围,需要用unsigned long long了,而且直接遍历A和B之间的数再判断是不行的。不过我们可以用笨办法找找规律。我们首先尝试遍历A和B之间的所有数,找到一个输出一个,观察找到的规律。不难发...
2020-01-10 21:37:01
250
原创 UVA-10479 很拽的序列
题目大意:给出n,求“很拽的序列”H 的第n个数。“很拽的序列”定义:1. H(1)=0。2. 如果把H中的每个整数x变成x个0后跟x+1,在前面附加上0仍然是H。H序列的前16项:0,1,0,2,1,1,0,3,0,2,1,1,0,0,0,4现在我们把定义分割再合并,出来的序列完全一样:1.h(0)=0。2.把h(i)中的每个整数x变成x个0后跟x+1,就等于h(i+1)。3....
2020-01-04 21:20:16
255
原创 UVA-10837 一个研究课题
题目大意:给出phi(n),输出最小的n。phi(n)的定义:比n小、与n互素的数的个数。phi(n)的公式:phi(n)=
2020-01-04 21:01:32
164
原创 UVA-1650 数字串
题目大意:给出一个排列,可以计算出一个特征,即从第二个数开始,这个数与前面的数相比是增加还是减少。若增加用I表示,减少用D表示,则排列{3,1,2,7,4,6,5}的特征为DIIDID。给出这个特征(长度为n-1),统计有多少个长度为n排列的特征是这个特征。注意:输入中会有?这个符号,它表示既可以是I又可以是D。以I?D为例,第一个可以任意,第2个要比第一个大,第三个任意,第四个又比第三个小...
2020-01-04 20:38:02
420
原创 UVA-11105 H-半素数
题目大意:给出一个数h(1<=h<=106+1),输出h及以下有多少个H-半素数。H-半素数的定义:能写成两个H素数的乘积的H数。H素数的定义:本身不是1,且不能写成两个不是1的数的乘积的H数。H数的定义:可以表示为4n+1的数,n为任意整数。一看到“素数”,就会想到用筛法。106+1范围的数,用筛法可以很快筛出来。筛的过程要注意:可以套用筛素数,但是要把第一个for中的i+...
2019-12-26 21:24:22
579
原创 lambda是什么
lambda其实是函数对象。如果你学C++用的书是《C++ Primer(第5版)》(白书,书皮上有水弄出来的数字11),那么在10.3.2节中,会看到两个调用lambda的函数: stable_sort(words.begin(),words.end(), [](const string &l,const string &r) {retur...
2019-04-03 20:44:58
1057
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人