万源娱乐平台app-防撞护板和防滑板

他补充称,特朗普总统将在4月6日至7日与中国元首会晤期间呼吁中国减少制度性贸易壁垒。在骑兵作战体系非常成熟的辽宋夏金元时期,对以重装步兵为主的南宋最为不利的就是远征,这也是南宋放弃深入北伐的主要原因。货物发送量完成7.24亿吨,同比增长15.2%。③为保证取票、入园顺利,预订时请务必填写真实姓名、手机号码等信息榆次丰润泽生态园开放时间:9:30-18:00榆次丰润泽生态园附近周边酒店宾馆与客栈:点击查询榆次丰润泽生态园交通指南:榆次丰润泽生态园地址:山西省晋中市榆次区环城东路路东大学街口与文华街口之间榆次丰润泽生态园自驾车路线:晋中-府兴路-顺城街-顺城街辅路-锦纶路-迎宾东街-环城东路-黄土农言-终点榆次丰润泽生态园乘车路线:。2017年的情人节这天,丰田低调地发布了一则消息--丰田双擎全球累计销量突破1000万辆。

我校老师用信息学方法巧解高考数学压轴题

2018年江苏高考数学卷的两道压轴题,即填空题的第14题和理科附加题的第23题,都可以用信息学的方法轻松解得。

我们先尝试填空题第14题:

已知集合A={x|x=2n-1nN+}B={x|x=2nnN+}。将AB的所有元素从小到大依次排列构成一个数列{an}。记Sn为数列{an}的前n项和,则使得Sn>12an+1成立的n的最小值为   

该题只需用信息学竞赛的穷举法解。数列{an}中从第1个数开始穷举,若满足条件则输出n。可以用数组把{an}的所有数由小到大排列好,可以边找边求和,并判断和S是否大于12*an+1,时间复杂度O(n),空间复杂度是预定义数组大小。优化可不用数组,只需两个变量SaS表示前n项和,a表示第n项的值,利用二路归并思路求as,空间复杂度O(1)

核心代码:

int s=a=i=j=n=1;  //i是奇数项数;j2的次方;n为所求数,从1开始穷举

while(s<12*a)

  {

       if(2*i-1<pow(2,j)){a=2*i-1;i++;}

       else {a=pow(2,j);j++; }

       s+=a;

       n++;

  }

cout<<n;

运行结果为27

 

高考理科数学附加题(第23题)题目为:

nN+,对12,…,n的一个排列i1i2in,如果当s<t时,有is>it,则称(isit)是排列i1i2in的逆序,排列i1i2in的所有逆序的总个数称为其逆序数。例如,对123的一个排列231,只有两个逆序(21),(31),则排列231的逆序数为2,记fn(k)12,…,n的所有排列中逆序数为k的全部排列的个数。

1)求f3(2)f4(2)的值;

2)求fn(2)(n5)的表达式(用n表示)。

这道题与信息学竞赛中一道求逆序对的题几乎一致!题目如下:

我们说(ij)是a1a2,…,aN的一个逆序对当且仅当i<jai>a j。例如24135的逆序对有3个,分别为(13),(23),(24)。现在已知NK,求1N的所有特定排列,这些排列的逆序对的数量恰好为K。输出这些特定排列的数量。

例如N=5K=3的时候,满足条件的排列有15个,它们是:

12543    13452    13524    14253    14325

15234    21453    21534    23154    23415

24135    31254    31425    32145    41235

输入格式:

输入第一行有两个整数NK。(N1000KN*(N-1)/2

输出格式:

1N的逆序对数量为K的特定排列的数量输出。为了避免高精度计算,请将结果mod 10000以后再输出!

输入样例:

5 3

输出样例:

15

题目来源https://www.luogu.org/problemnew/show/P1521(P1521 求逆序对)

分析:(1)信息学竞赛题的N100,而高考题n5,因为当N越来越大时,求出的fN(K)会非常大,用程序的变量已经无法表示,所以竞赛题限定了N的大小,而且要对fN(K) mod 10000输出,高考题只要求出表达式,不要求具体值,就不需要考虑fN(K)值的范围到底有多大;(2)信息学竞赛题中k的取值范围是0KN*(N-1)/2,而高考题只需求f3(2)f4(2)的值以及fn(2)的表达式,这只是信息学竞赛题中k=2的情况。

下面用信息学竞赛中的穷举法和递推法来解这道高考题。

高考题中第1小问求f3(2)f4(2)。求f3(2)可用穷举法,比如求f3(2)n等于3的全排列共有3!共6种,然后从每种排列中数逆序数是2的有几个即可,f3(2)=2,分别是“312”和“231”。

f4(2)也可以用穷举法,把4!共24种排列全部列出,再从每种排列中找逆序数是2的个数。由于高考考试时间有限的,要思考为什么题目要学生先求f3(2)f4(2)?求f4(2)时,要思考如何求f5(2)?这样就能总结或推导第2小问fn(2)的答案。所以f4(2)用穷举法,不利于求fn(2),需要我们改变思路以便递推出最终的数学公式。当n=4时,我们考虑4在已经有3个数的排到中插入到什么位置才能满足条件:如果把4这个数插入到123组成的排列数最后面(即第4位),因为4是最大的数,则跟3个数的逆序数是一样多,若设g(n,2)1-n个数组成的排列中逆序数为2的个数,则当把4放到最后面一位上,则逆序数的个数是g(3,2)=2(分别是“3124”和“2314”);如果把4放到倒数第二位时,因为4是肯定会大于最后一位数,肯定有一个逆序数了,所以此时的逆序数的个数是f3(1)=2(分别是“1342”和“2143”);当把4插入到倒数第三位时,因为4是肯定会大于最后两位数的,肯定有两个逆序数了,那么逆序数的个数是f3(0)=1(是“3421”);几种情况加起来,故f4(2)=2+2+1=5

那么如何求f5(2)呢?这跟求f4(2)类似,f5(2)= f4(2)+ f4(1)+ f4(0)

由此可推出fn(2)= fn-1(2)+ fn-1(1)+ fn-1(0)

因为题目只要求k2的情况,故令p(n)n个数组成的逆序数为2的个数,则fn(2)=p(n)fn-1(2)=p(n-1)fn-1(1)=n-2n-1个数中相邻两数对换即有1个逆序数,故总数为n-2个),fn-1(0)=1

 

p(n)=p(n-1)+n-1     …….    (1)

  p(n-1)=p(n-2)+n-2   …….    (2)

  p(n-2)=p(n-3)+n-3   …….    (3)

      ……

  p(4)=p(3)+2        …….  (n-4)

    (1)(2)(3)(n-4)式相加得p(n)=(n-1)+(n-2)++2 +2= n-1+n-2+.....+3+2+1-1

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

=(n-1)n/2-1

=(n2-n-2)/2

    这样求fn(2)的时间复杂度O(1)

接下来用动态规划来解更具一般性的求逆序对的“洛谷”竞赛题。由上面的分析可知:

f[n,k]1-n个数构成所有排列中逆序数为k的个数,则DP状态转移方程就是

f[n,k]=sum{f[n-1,0],f[n-1,1],f[n-1,2]......f[n-1,k]}           (n>k)          (1)

f[n,k]=sum{f[n-1,k],f[n-1,k-1],f[n-1,k-2]......f[n-1,k-n+1]}     (n<=k)        (2)

      公式打表如下(n17

可以看出

方程(1)f[n,k]=f[n,k-1]+f[n-1,k]f[n,k]里面统计的是前缀和,f[n,k]只比f[n,k-1]多了f[n-1,k]

方程(2) f[n,k]=f[n-1,k]+f[n-1,k-1]-f[n-1][k-n],求和的项数确定了,就是n-1项,f[n,k]f[n,k-1]多了f[n-1,k],但是少了f[n-1,k-n]这一项。

核心代码:

for(i=3;i<=n;i++)

{

  for(j=0;j<i*(i-1)/4;i++)                  //0到对称中心

  if(j<i) f[i][j]=(f[i][j-1]+f[i-1][j])000; 

  else f[i][j]=(f[i][j-1]+f[i-1][j]-f[i-1][j-i])000;

  for(j=i*(i-1)/4+1;j<=i*(i-1)/2;j++)         //复制对称的另一半

   f[i][j]=(f[i][i*(i-1)/2-j];

}

时间复杂度O(n2)