NOIP 2015 提高组 初赛

NOIP 2015 提高组 初赛

疑难点 学习 感悟。

一、

3.

示例如下(来自自个的理解):

101.101 十进制 转十进制1*10^2+0*10^1+1*10^0+1*10^-1+0*10^-2+1*10^-3

 

101.101 二进制 转十进制1*2^2+0*2^1+1*2^0+1*2^-1+0*2^-2+1*2^-3

101.101 八进制 转十进制1*8^2+0*8^1+1*8^0+1*8^-1+0*8^-2+1*8^-3

 

101.101 十六进制 转十进制1*16^2+0*16^1+1*16^0+1*16^-1+0*16^-2+1*16^-3

题解如下:

0.1 二进制转十进制0*2^0+1*2^-1=0.5

A选项

0.8十六进制转十进制0*16^0+8*16^-1=0.5

 

4.

 

示例如下(来自自个的理解):

101.101 十进制 转十进制1*10^2+0*10^1+1*10^0+1*10^-1+0*10^-2+1*10^-3

101.101 二进制 转十进制1*2^2+0*2^1+1*2^0+1*2^-1+0*2^-2+1*2^-3

101.101 八进制 转十进制1*8^2+0*8^1+1*8^0+1*8^-1+0*8^-2+1*8^-3

101.101 十六进制 转十进制1*16^2+0*16^1+1*16^0+1*16^-1+0*16^-2+1*16^-3

题解如下:

D选项

1762 八进制转十进制1*8^3+7*8^2+6*8^1+2*8^0=1010

3F2十六进制转十进制3*16^2+15*16^1+2*16^0=1010

 

7.

(来自《算法竞赛入门经典》P155)

用递归定义 二叉树T 的先序遍历、中序遍历、后序遍历:

先序遍历 PreOrder(T)=T的根节点+PreOrder(T的左子树)+PreOrder(T的右子树)

中序遍历 InOrder(T)=InOrder(T的左子树)+T的根节点+InOrder(T的右子树)

后序遍历 PostOrder(T)=PostOrder(T的左子树)+PostOrder(T的右子树)+T的根节点

 

8.

(来自《啊哈!算法》P184)

满二叉树的严格定义是一棵深度为h且有2^h-1个结点的二叉树。如下图所示:

 

完全二叉树严格定义:若设二叉树的高度为h,除第h层外,其他各层(1-h-1)的结点数都达到最大个数,

第h层从右向左连续缺若干节点,则这个二叉树就是完全二叉树。

如下图所示:

 

9.

(来自《算法竞赛入门经典》P355-P356)

最小生成树:

在无向图中,连通且不含圈的图称为树(Tree)。给定无向图G=(V,E),连接G中所有点,且边集是E的子集的书称为G的生成树(Spanning Tree),而权值最小的生成树称为最小生成树(Minimal Spanning Tree,MST)。

 

10.

T(n)=T(n-1)+n

推导:

T(n)=T(n-2)+n-1+n

T(n)=T(n-3)+n-2+n-1+n

T(n)=T(n-4)+n-3+n-2+n-1+n

......

T(n)=T(1)+2+......+n-3+n-2+n-1+n

T(n)=T(0)+1+2+......+n-3+n-2+n-1+n

 

T(n)=1+1+2+......+n-3+n-2+n-1+n

T(n)=1+(1+n)*n/2

T(n)=(n^2+n+2)/2

故T(n)=O(n^2)

 

类似的一题,(来自《大话数据结构》P422)

T(n)<=2T(n/2)+n,T(1)=0

推导:

T(n)<=2*(2T(n/2/2)+n/2)+n=2*2T(n/2/2)+2n

T(n)<=2*2*(2T(n/2/2/2)+n/2/2)+2n=2*2*2T(n/2/2/2)+3n

T(n)<=2*2*2*(2T(n/2/2/2/2)+n/2/2/2)+3n=2*2*2*2T(n/2/2/2/2)+4n

......

T(n)<=2^tT(n/2^t)+tn

 

n/2^t=1

n=2^t

logn=tlog2

t=logn/log2

 

带入t值

T(n)<=2^tT(n/2^t)+tn=n*T(1)+nlogn/log2=nlogn/log2

T(n)<=O(nlogn)

 

二、

5.

(来自《啊哈!算法》P238)

二分图的定义是:如果一个图的所有顶点可以被分为X和Y两个集合,

并且所有边的两个顶点恰好一个属于集合X,另一个属于集合Y,

即每个集合内的顶点没有边相连,那么此图就是二分图。例子如下图所示:

 

(来自《数据结构(C语言版)》严蔚敏 吴伟民 P158)

n表示图中顶点数目,有n(n-1)/2条边的无向图称为完全图。

 

(来自《数据结构(C语言版)》严蔚敏 吴伟民 P159)

在无向图G中,如果从顶点v到顶点u有路径,则称v和u是连通的。如果对于图中任意两个顶点u、v,u和v都是连通的,则称G是连通图。示例如下:

 

(来自《啊哈!算法》P180)

树其实就是不包含回路的连通无向图。

示例如下:

左为树,右为图

 

三、

1.答案1075

容斥原理

2015-2015/4-2015/5-2015/6+2015/20+2015/12+2015/30-2015/60=1075

容斥原理不懂的,建议学习此文https://blog.csdn.net/mrcrack/article/details/80562324第16讲内容:第6章 容斥原理及应用
2019-2-15 23:00

1.基本思路,2015扣除能被4、5、6整除的数。

能被4整除的数有2015/4=503个;

能被5整除的数有2015/5=403个;

能被6整除的数有2015/6=335个;

能同时被4、5整除的数有2015/20=100个;

能同时被4、6整除的数有2015/12=167个;

能同时被5、6整除的数有2015/30=67个;

能同时被4、5、6整除的数有2015/60=33个;

 

能被4、5、6整除的数503+403+335-(100+167+67)+33=940个;

不能被4、5、6整除的数2015-940=1075个;

 

该题就算思路知晓,运算也容易出错。

 

 

能被4整除的数有2015/4=503个;

4       8       12      16      20      24      28      32      36      40
44      48      52      56      60      64      68      72      76      80
84      88      92      96      100     104     108     112     116     120
124     128     132     136     140     144     148     152     156     160
164     168     172     176     180     184     188     192     196     200
204     208     212     216     220     224     228     232     236     240
244     248     252     256     260     264     268     272     276     280
284     288     292     296     300     304     308     312     316     320
324     328     332     336     340     344     348     352     356     360
364     368     372     376     380     384     388     392     396     400
404     408     412     416     420     424     428     432     436     440
444     448     452     456     460     464     468     472     476     480
484     488     492     496     500     504     508     512     516     520
524     528     532     536     540     544     548     552     556     560
564     568     572     576     580     584     588     592     596     600
604     608     612     616     620     624     628     632     636     640
644     648     652     656     660     664     668     672     676     680
684     688     692     696     700     704     708     712     716     720
724     728     732     736     740     744     748     752     756     760
764     768     772     776     780     784     788     792     796     800
804     808     812     816     820     824     828     832     836     840
844     848     852     856     860     864     868     872     876     880
884     888     892     896     900     904     908     912     916     920
924     928     932     936     940     944     948     952     956     960
964     968     972     976     980     984     988     992     996     1000
1004    1008    1012    1016    1020    1024    1028    1032    1036    1040
1044    1048    1052    1056    1060    1064    1068    1072    1076    1080
1084    1088    1092    1096    1100    1104    1108    1112    1116    1120
1124    1128    1132    1136    1140    1144    1148    1152    1156    1160
1164    1168    1172    1176    1180    1184    1188    1192    1196    1200
1204    1208    1212    1216    1220    1224    1228    1232    1236    1240
1244    1248    1252    1256    1260    1264    1268    1272    1276    1280
1284    1288    1292    1296    1300    1304    1308    1312    1316    1320
1324    1328    1332    1336    1340    1344    1348    1352    1356    1360
1364    1368    1372    1376    1380    1384    1388    1392    1396    1400
1404    1408    1412    1416    1420    1424    1428    1432    1436    1440
1444    1448    1452    1456    1460    1464    1468    1472    1476    1480
1484    1488    1492    1496    1500    1504    1508    1512    1516    1520
1524    1528    1532    1536    1540    1544    1548    1552    1556    1560
1564    1568    1572    1576    1580    1584    1588    1592    1596    1600
1604    1608    1612    1616    1620    1624    1628    1632    1636    1640
1644    1648    1652    1656    1660    1664    1668    1672    1676    1680
1684    1688    1692    1696    1700    1704    1708    1712    1716    1720
1724    1728    1732    1736    1740    1744    1748    1752    1756    1760
1764    1768    1772    1776    1780    1784    1788    1792    1796    1800
1804    1808    1812    1816    1820    1824    1828    1832    1836    1840
1844    1848    1852    1856    1860    1864    1868    1872    1876    1880
1884    1888    1892    1896    1900    1904    1908    1912    1916    1920
1924    1928    1932    1936    1940    1944    1948    1952    1956    1960
1964    1968    1972    1976    1980    1984    1988    1992    1996    2000
2004    2008    2012

能被5整除的数有2015/5=403个;

5       10      15      20      25      30      35      40      45      50
55      60      65      70      75      80      85      90      95      100
105     110     115     120     125     130     135     140     145     150
155     160     165     170     175     180     185     190     195     200
205     210     215     220     225     230     235     240     245     250
255     260     265     270     275     280     285     290     295     300
305     310     315     320     325     330     335     340     345     350
355     360     365     370     375     380     385     390     395     400
405     410     415     420     425     430     435     440     445     450
455     460     465     470     475     480     485     490     495     500
505     510     515     520     525     530     535     540     545     550
555     560     565     570     575     580     585     590     595     600
605     610     615     620     625     630     635     640     645     650
655     660     665     670     675     680     685     690     695     700
705     710     715     720     725     730     735     740     745     750
755     760     765     770     775     780     785     790     795     800
805     810     815     820     825     830     835     840     845     850
855     860     865     870     875     880     885     890     895     900
905     910     915     920     925     930     935     940     945     950
955     960     965     970     975     980     985     990     995     1000
1005    1010    1015    1020    1025    1030    1035    1040    1045    1050
1055    1060    1065    1070    1075    1080    1085    1090    1095    1100
1105    1110    1115    1120    1125    1130    1135    1140    1145    1150
1155    1160    1165    1170    1175    1180    1185    1190    1195    1200
1205    1210    1215    1220    1225    1230    1235    1240    1245    1250
1255    1260    1265    1270    1275    1280    1285    1290    1295    1300
1305    1310    1315    1320    1325    1330    1335    1340    1345    1350
1355    1360    1365    1370    1375    1380    1385    1390    1395    1400
1405    1410    1415    1420    1425    1430    1435    1440    1445    1450
1455    1460    1465    1470    1475    1480    1485    1490    1495    1500
1505    1510    1515    1520    1525    1530    1535    1540    1545    1550
1555    1560    1565    1570    1575    1580    1585    1590    1595    1600
1605    1610    1615    1620    1625    1630    1635    1640    1645    1650
1655    1660    1665    1670    1675    1680    1685    1690    1695    1700
1705    1710    1715    1720    1725    1730    1735    1740    1745    1750
1755    1760    1765    1770    1775    1780    1785    1790    1795    1800
1805    1810    1815    1820    1825    1830    1835    1840    1845    1850
1855    1860    1865    1870    1875    1880    1885    1890    1895    1900
1905    1910    1915    1920    1925    1930    1935    1940    1945    1950
1955    1960    1965    1970    1975    1980    1985    1990    1995    2000
2005    2010    2015

能被6整除的数有2015/6=335个;

6       12      18      24      30      36      42      48      54      60
66      72      78      84      90      96      102     108     114     120
126     132     138     144     150     156     162     168     174     180
186     192     198     204     210     216     222     228     234     240
246     252     258     264     270     276     282     288     294     300
306     312     318     324     330     336     342     348     354     360
366     372     378     384     390     396     402     408     414     420
426     432     438     444     450     456     462     468     474     480
486     492     498     504     510     516     522     528     534     540
546     552     558     564     570     576     582     588     594     600
606     612     618     624     630     636     642     648     654     660
666     672     678     684     690     696     702     708     714     720
726     732     738     744     750     756     762     768     774     780
786     792     798     804     810     816     822     828     834     840
846     852     858     864     870     876     882     888     894     900
906     912     918     924     930     936     942     948     954     960
966     972     978     984     990     996     1002    1008    1014    1020
1026    1032    1038    1044    1050    1056    1062    1068    1074    1080
1086    1092    1098    1104    1110    1116    1122    1128    1134    1140
1146    1152    1158    1164    1170    1176    1182    1188    1194    1200
1206    1212    1218    1224    1230    1236    1242    1248    1254    1260
1266    1272    1278    1284    1290    1296    1302    1308    1314    1320
1326    1332    1338    1344    1350    1356    1362    1368    1374    1380
1386    1392    1398    1404    1410    1416    1422    1428    1434    1440
1446    1452    1458    1464    1470    1476    1482    1488    1494    1500
1506    1512    1518    1524    1530    1536    1542    1548    1554    1560
1566    1572    1578    1584    1590    1596    1602    1608    1614    1620
1626    1632    1638    1644    1650    1656    1662    1668    1674    1680
1686    1692    1698    1704    1710    1716    1722    1728    1734    1740
1746    1752    1758    1764    1770    1776    1782    1788    1794    1800
1806    1812    1818    1824    1830    1836    1842    1848    1854    1860
1866    1872    1878    1884    1890    1896    1902    1908    1914    1920
1926    1932    1938    1944    1950    1956    1962    1968    1974    1980
1986    1992    1998    2004    2010

能同时被4、5整除的数有2015/20=100个;

20      40      60      80      100     120     140     160     180     200
220     240     260     280     300     320     340     360     380     400
420     440     460     480     500     520     540     560     580     600
620     640     660     680     700     720     740     760     780     800
820     840     860     880     900     920     940     960     980     1000
1020    1040    1060    1080    1100    1120    1140    1160    1180    1200
1220    1240    1260    1280    1300    1320    1340    1360    1380    1400
1420    1440    1460    1480    1500    1520    1540    1560    1580    1600
1620    1640    1660    1680    1700    1720    1740    1760    1780    1800
1820    1840    1860    1880    1900    1920    1940    1960    1980    2000

 

能同时被4、6整除的数有2015/12=167个;

12      24      36      48      60      72      84      96      108     120
132     144     156     168     180     192     204     216     228     240
252     264     276     288     300     312     324     336     348     360
372     384     396     408     420     432     444     456     468     480
492     504     516     528     540     552     564     576     588     600
612     624     636     648     660     672     684     696     708     720
732     744     756     768     780     792     804     816     828     840
852     864     876     888     900     912     924     936     948     960
972     984     996     1008    1020    1032    1044    1056    1068    1080
1092    1104    1116    1128    1140    1152    1164    1176    1188    1200
1212    1224    1236    1248    1260    1272    1284    1296    1308    1320
1332    1344    1356    1368    1380    1392    1404    1416    1428    1440
1452    1464    1476    1488    1500    1512    1524    1536    1548    1560
1572    1584    1596    1608    1620    1632    1644    1656    1668    1680
1692    1704    1716    1728    1740    1752    1764    1776    1788    1800
1812    1824    1836    1848    1860    1872    1884    1896    1908    1920
1932    1944    1956    1968    1980    1992    2004

 

能同时被5、6整除的数有2015/30=67个;

30      60      90      120     150     180     210     240     270     300
330     360     390     420     450     480     510     540     570     600
630     660     690     720     750     780     810     840     870     900
930     960     990     1020    1050    1080    1110    1140    1170    1200
1230    1260    1290    1320    1350    1380    1410    1440    1470    1500
1530    1560    1590    1620    1650    1680    1710    1740    1770    1800
1830    1860    1890    1920    1950    1980    2010

 

能同时被4、5、6整除的数有2015/60=33个;

 

60      120     180     240     300     360     420     480     540     600
660     720     780     840     900     960     1020    1080    1140    1200
1260    1320    1380    1440    1500    1560    1620    1680    1740    1800
1860    1920    1980

 

 

2.

(思路来自《数据结构(C语言版)》严蔚敏 吴伟民)

递推公式得出如下

(1)0个结点f(0)=1

(2)1个结点f(1)=1

(3)2个结点,固定一个为根节点,两种情形,一个左子树,一个右子树。f(2)=f(1)*f(0)+f(0)*f(1)=2

(4)3个结点,f(3)=f(2)*f(0)+f(0)*f(2)+f(1)*f(1)=2*1+1*2+1*1=5

(5)4个结点,f(4)=f(3)*f(0)+f(0)*f(3)+f(2)*f(1)+f(1)*f(2)=5*1+1*5+2*1+1*2=14

(6)5个结点,f(5)=f(4)*f(0)+f(0)*f(4)+f(3)*f(1)+f(1)*f(3)+f(2)*f(2)=14*1+1*14+5*1+1*5+2*2=42

 

四、

2.

(来自《算法竞赛入门经典》P66)

函数的形参和在函数内声明的变量都是该函数的局部变量。无法访问其他函数的局部变量。

局部变量的存储空间是临时分配的,函数执行完毕时,局部变量的空间将被释放,其中的值无法保留到下次使用。

题中a的变化没有影响到p1,原因如上所示,故c1值不变。

题中*a影响的是p2指向的内存块,即c2里的值,故(*a)++对应的c2值要改变。

 

4.今日(2016.10.27)有重大突破,困扰已久的递归问题找到一种速度极快的解法。

以往的做法是自顶向下逐层递归,对于手算而言,运算量是天文级别的,第一次做就算能对,也不能保证第二次能对。

今日是自底向上,找规律,发现很快就能找到规律,在短时间内,只要运算不出现低级错误,很快就能解决问题。此法是偶然想到,但却解决了困扰已久的递归程序写结果问题。

 

此题做法如下,n=0,n=1,n=2,n=3,n=4,n=5求出相应结果。在求解的过程中能发现规律。

(1)n=0

fun(0,1,3)=0

(2)n=1

fun(1,1,3)=1 附带产物 fun(0,1,2)=0 fun(0,2,3)=0

(3)n=2

fun(2,1,3)=3 附带产物 fun(2,1,3)=3 fun(1,1,2)=1 fun(0,1,3)=0 fun(0,3,3)=0 fun(1,2,3)=1 fun(0,2,1)=0 fun(0,1,3)=0

(3)n=3

fun(3,1,3)=7 附带产物 fun(2,1,2)=3 fun(1,1,3)=1 fun(1,3,3)=1 fun(0,3,1)=0 fun(0,1,3)=0

fun(2,2,2)=3 fun(1,2,1)=1 fun(0,2,3)=0 fun(0,3,3)=0 fun(1,1,2)=1

(4)n=4

大胆猜想

fun(3,fromPos,toPos)=7

fun(2,fromPos,toPos)=3

fun(1,fromPos,toPos)=1

fun(0,fromPos,toPos)=0

很快写出

fun(4,1,3)=15

(5)n=5

继续猜

fun(4,fromPos,toPos)=15

 

fun(3,fromPos,toPos)=7

fun(2,fromPos,toPos)=3

fun(1,fromPos,toPos)=1

fun(0,fromPos,toPos)=0

很快写出

fun(5,1,3)=31

 

很高兴想到上述办法,困扰了有半年了,此类题目是最耗时,且准确率不高。

 

五、

 

1.读完题目,没明白题意,硬读程序,没读懂,但发现程序先处理lmax,再处理rmax,对两种处理可以看见的代码进行对比,发现具有对称性,先解决第二空rmax[i]=x[i],再解决第三空rmax[i]=rmax[i+1]+x[i],之后解决第四空rmax[i]=rmax[i+1],最后解决第一空rmax[n-1]=x[n-1],根据对称性,解决四空,还是很轻松,再读一遍程序,看懂不少,但细节上还有问题。

第五空4分,重读题目,发现输出是最大和,马上想到第五空应填lmax[i]+rmax[i],但对至少间隔1个数,有疑问,

将程序从ans=x[0]+x[2];开始重读一遍,启发很大,ans=x[0]+x[2];等价于ans=lmax[0]+rmax[2];马上将第五空进行修改lmax[i-1]+rmax[i+1],代入i=1进行检验lmax[0]+rmax[2],代入i=n-2进行检验lmax[n-3]+rmax[n-1],发现两个边界都挺合理,至此该题程序填空完毕。

但程序还有些细节问题,从解题角度而言,该题结束。

 

 

2.有迪杰斯特拉算法(参见《啊哈!算法》P155)基础,就算学习日期离考试比较久远,此题还是会比较简单。


第五空2分,其余3分,故第五空最简单,直接抄下行代码,改个不等号即可。dist[i]>dist[v]+w[i][j];

第一空,处赋值位置,扫描程序,多处出现v==-1,但没有v=-1的赋值,故该空v=-1;

第四空,程序中提到int used[MAXV];//记录结点是否已扩展(0:未扩展;1:已扩展)。

结点v进行扩展。

程序中始终找不到used[v]=1;故该空used[v]=1;

第二空,第三空,依据:每次从未扩展的结点中选取dist值最小的结点v进行扩展。

在所有没用过的结点中,选中最小距离的结点,

第二空dist[i]<dist[v]

第三空v=i;

 

 

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值