7月17日

考试+数论+一些题目

 


 

Hnoi_pretest

 

考试时间: 240 分钟

 

题目名称

interval

digit

poly

可执行文件名

interval.exe

digit.exe

poly.exe

输入文件名

interval.in

digit.in

poly.in

输出文件名

interval.out

digit.out

poly.out

测试点时限

2 S

1 S

1 S

测试点空间限制

256MB

256MB

256 MB

测试点数目

10

20

20

每个测试点分值

10

5

5

是否有部分分

题目类型

传统

传统

传统

 

一、interval

【题目描述】:

给出一个长度为n的排列p

问有多少个区间[l,r]

可以有p中的区间[a,b]与[c,d]拼出

其中:1<=a<=b<c<=d<=n

比如说p为 1 5 2 4 6 3

[5,6]就可以由[2,2]和[5,5]拼出

 

【输入】:

第一行一个数n

第二行n个数,表示p

 

【输出】:

一个正整数表示答案

 

【样例输入】:

5

1 4 5 3 2

【样例输出】:

10

 

【说明】:

10%的数据n<=20

40%的数据n<=2000

另10%的数据 p[i]=i

100%的数据n<=300000

二、digit

【题目描述】:

    小C手上有n个数,第i个数为B[i]

    小C手上还有一个数A

    可是A中有某些位小C不清楚,比如说A为?4?,那么A就有可能为141,也有可能有142,但是不可能为042,毕竟一个数不能有前导0是一个很显然的规则

    现在小C需要你帮忙确定手上的数字A,即给每个?填上0-9之间的数字,但是不能有前导0

    确定完后,小C会让每一个B[i]都加上A,生成一个新的数字序列D

小C还有有一个收益数组P[0]到P[9]

    对于D中的每一个数字D[i],可以获得对应位在收益数组对应的元素之和,比如说D[i]=2629,那么D[i]可以获得的收益就是:P[2]+P[6]+P[2]+P[9]

    现在,小C想问你,确定了A之后,能获得的最大收益和是多少,即把D中每一个数字能获得的受益加起来最大是多少

 

【输入】:

第一行一个字符串A,表示A

第二行一个正整数n

接下来n行,有n个字符串,第i行表示B[i]

最后一行,有10个空格隔开的整数,从左至右依次表示:P[0]……P[9]

 

【输出】:

一个正整数表示最大收益和

 

【样例输入】:

    ?5?

    4

    2203

    5229

    276

    6243

    2 1 6 1 1 2 5 2 2 3

【样例输出】:

    62

 

【样例解释】:

    A为452

 

【说明】:

20%的数据:A的长度<=4,n<=10,B[i]的长度<=4

50%的数据:A的长度<=1000,n<=10,B[i]的长度<=1000

100%的数据: A的长度<=1000,n<=1000,B[i]的长度<=1000,1<=P[i]<=1000,B[i]>=1

 

【题目描述】:

    给定一个0/1多项式,x^i的系数为a[i],0<=i<=n

    求该多项式的k次方的x^m的系数的奇偶性

【输入】:

第一行一个整数T
对于每组测试数据,第一行三个整数n,k,m

接下来n+1个数来描述a[0]到a[n]

 

【输出】:

输出T行,每行0或者1表示偶或者奇

 

【样例输入】:

2

2 3 4

1 0 1

2 3 5

1 0 1

【样例输出】:

1

0

 

【说明】:

    30%的数据:n*k<=10^4

    100%的数据: n<=50,k,m<=10^18


数论:

1. 莫比乌斯函数  PASS 

2. 莫比乌斯反演  PASS

3. Miller Rabin算法

4. Pollard-rho算法

5. 积性函数

6. 埃式筛法(nlog(logn))

7. 线性筛法(n)

8. 导数,求导


 

一些题目:

1. bzoj 寿司晚宴

2. bzoj 等差子序列

 

posted @ 2017-07-17 18:15  GSHDYJZ  阅读(185)  评论(0编辑  收藏  举报