NOIP2012提高组初赛试题与答案
NOIP2012提高组day1

CCF全国信息学奥林匹克联赛(NOIP2012)复赛提高组 day1(请选手务必仔细阅读本页内容)注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。
3、全国统一评测时采用的机器配置为:CPU Intel Core2 Quad Q8200 2.33GHz, 内存2G,上述时限以此配置为准。
4、特别提醒:评测在NOI Linux下进行。
1.Vigenère密码(vigenere.cpp/c/pas)【问题描述】16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法——Vigenère密码。
Vigenère密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。
在密码学中,我们称需要加密的信息为明文,用M表示;称加密后的信息为密文,用C表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为k。
在Vigenère密码中,密钥k是一个字母串,k=k1k2…k n。
当明文M=m1m2…m n时,得到的密文C=c1c2…c n,其中c i=m i®k i,运算®的规则如下表所示:®【输入】输入文件名为vigenere.in。
输入共2行。
第一行为一个字符串,表示密钥k,长度不超过100,其中仅包含大小写字母。
第二行为一个字符串,表示经加密后的密文,长度不超过1000,其中仅包含大小写字母。
【输出】输出文件名为vigenere.out。
输出共1行,一个字符串,表示输入密钥和密文所对应的明文。
对于100%的数据,输入的密钥的长度不超过100,输入的密文的长度不超过1000,且都仅包含英文字母。
2.国王游戏(game.cpp/c/pas)【问题描述】恰逢H国国庆,国王邀请n位大臣来玩一个有奖游戏。
NOIP提高组初赛历年试题及答案求解题篇(完整资料).doc

【最新整理,下载后即可编辑】NOIP提高组初赛历年试题及答案求解题篇问题求解题(每次2题,每题5分,共计10分。
每题全部答对得5分,没有部分分)注:答案在文末提高组的问题求解题的知识点大多涉及计数问题、鸽巢原理、容斥问题、逻辑推理、递推问题、排列组合问题等。
NOIP2011-1.平面图可以画在平面上,且它的边仅在顶点上才能相交的简单无向图。
4个顶点的平面图至少有6条边,如图所示。
那么,5个顶点的平面图至多有_________条边。
NOIP2011-2.定义一种字符串操作,一次可以将其中一个元素移到任意位置。
举例说明,对于字符串“BCA”可以将A移到B 之前,变字符串“ABC”。
如果要将字符串“DACHEBGIF”变成“ABCDEFGHI”最少需要_________次操作。
NOIP2012-1. 本题中,我们约定布尔表达式只能包含p,q, r三个布尔变量,以及“与”(∧)、“或”(∨)、“非”(¬)三种布尔运算。
如果无论p, q,r如何取值,两个布尔表达式的值总是相同,则称它们等价。
例如,(p∨q)∨r和p∨(q∨r)等价,p∨¬p 和q∨¬q 也等价;而p∨q 和p∧q不等价。
那么,两两不等价的布尔表达式最多有_________个。
NOIP2012-2. 对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。
例如,图1有5个不同的独立集(1个双点集合、3个单点集合、1个空集),图2有14个不同的独立集。
那么,图3有_________个不同的独立集。
NOIP2013-1. 某系统自称使用了一种防窃听的方式验证用户密码。
密码是n个数s1,s2,…,sn,均为0或1。
该系统每次随机生成n个数a1,a2,…,an,均为0或1,请用户回答(s1a1+s2a2+…+snan)除以2的余数。
如果多次的回答总是正确,即认为掌握密码。
该系统认为,即使问答的过程被泄露,也无助于破解密码——因为用户并没有直接发送密码。
[NOIP2012提高组]国王游戏
![[NOIP2012提高组]国王游戏](https://img.taocdn.com/s3/m/e1700bfff9c75fbfc77da26925c52cc58bd6902f.png)
[NOIP2012提⾼组]国王游戏题⽬:洛⾕P1080、Vijos P1779、codevs1198。
题⽬⼤意:国王和每个⼤⾂左、右⼿各写了⼀个数。
规定每个⼤⾂得到的⾦币数为他前⾯所有⼈左⼿的数字的乘积除以他⾃⼰右⼿的数(向下取整),现在国王要改变⼤⾂的排列顺序,使得获得奖赏最多的⼤⾂,所获奖赏尽可能的少(国王永远站在最前⾯)。
解题思路:(贪⼼)⾸先,交换相邻两个⼤⾂只会对这两个⼤⾂造成影响,并不会对其他⼤⾂造成影响。
我们考虑⼤⾂i和i+1,设他们左⼿数字分别为A[i]和A[i+1],右⼿分别为B[i]和B[i+1],前i-1个⼤⾂和国王左⼿的数的乘积为S,且A[i]B[i]<=A[i+1]B[i+1]。
原来两个⼤⾂能得到的⾦币数分别为S/B[i],S*A[i]/B[i+1]。
如果交换,则第⼀个⼤⾂现在能得到S*A[i+1]/B[i],第⼆个能得到S/B[i+1]。
由于A[i]B[i]<=A[i+1]B[i+1],所以S*A[i]*B[i]<=S*A[i+1]*B[i+1],所以S*A[i]/B[i+1]<=S*A[i+1]/B[i]。
由此可得⼤⾂以A[i]B[i]从⼩到⼤排序,答案越⼩。
⽽S*A[i+1]/B[i]>=S/B[i],S*A[i]/B[i+1]>=S/B[i+1],故最⼤的答案为后⾯那个⼤⾂的,也保证了答案的正确性。
然后⾼精度⼀下就好了。
C++ Code:#include<cstdio>#include<cstring>#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;struct BigInteger {static const int BASE=100000000;static const int WIDTH=8;vector<long long>s;BigInteger(long long num=0){*this=num;}BigInteger operator = (long long num){s.clear();do{s.push_back(num%BASE);num/=BASE;} while(num>0);return *this;}BigInteger operator = (const string& str){s.clear();int x,len=(str.length()-1)/WIDTH+1;for(int i=0;i<len;i++){int end=str.length()-i*WIDTH;int start=max(0,end-WIDTH);sscanf(str.substr(start,end-start).c_str(),"%d",&x);s.push_back(x);}return *this;}BigInteger operator + (const BigInteger& b)const{BigInteger c;c.s.clear();for(int i=0,g=0;;i++){if(g==0&&i>=s.size()&&i>=b.s.size())break;int x=g;if(i<s.size())x+=s[i];if(i<b.s.size())x+=b.s[i];c.s.push_back(x%BASE);g=x/BASE;}return c;}bool operator < (const BigInteger& b)const{if(s.size()!=b.s.size())return s.size()<b.s.size();for(int i=s.size()-1;i>=0;i--)if(s[i]!=b.s[i])return s[i]<b.s[i];return false;}bool operator > (const BigInteger& b)const{return b<*this;}bool operator <= (const BigInteger& b)const{return !(b<*this);}bool operator >= (const BigInteger& b)const{return !(*this<b);}bool operator != (const BigInteger& b)const{return b<*this||*this<b;}bool operator == (const BigInteger& b)const{return !(b<*this)&&!(*this<b);}void cheng(int a){vector<long long>c;for(int i=0;i<s.size();++i){if(c.size()<=i)c.push_back(s[i]*a);elsec[i]+=s[i]*a;if(c[i]/BASE)if(c.size()<=i+1)c.push_back(c[i]/BASE);elsec[i+1]=c[i]/BASE;c[i]%=BASE;}s=c;}void chu(int a){vector<long long>c(s);if(s.back()/a)c[s.size()-1]=s.back()/a,s[s.size()-1]%=a;elsec.pop_back();for(int i=s.size()-2;i>=0;--i){long long num=s[i+1]*BASE+s[i];c[i]=num/a;num%=a;s[i]=num;}s=c;}};ostream& operator << (ostream &out,const BigInteger& x){out<<x.s.back();for(int i=x.s.size()-2;i>=0;i--){char buf[20];sprintf(buf,"%08d",x.s[i]);for(int j=0;j<strlen(buf);j++)out<<buf[j];}return out;}istream& operator >> (istream &in,BigInteger& x){string s;if(!(in>>s))return in;x=s;return in;}struct DC{int a,b;bool operator < (const DC&rhs)const{return a*b<rhs.a*rhs.b;} }p[1005];int n;BigInteger sum,Div,ans;int main(){ios::sync_with_stdio(false);cin>>n;for(int i=0;i<=n;++i)cin>>p[i].a>>p[i].b;sort(p+1,p+n+1);sum=ans=p[0].a;for(int i=1;i<=n;++i){Div=sum;Div.chu(p[i].b);if(ans<Div)ans=Div;sum.cheng(p[i].a);}cout<<ans<<endl;return 0;}。
NOIP2012信息学奥林匹克竞赛初赛-模拟卷

2012年全国青少年信息学奥林匹克联赛初赛模拟试题一.单项选择题(共10题,每题1.5分,共计15分,每题有且仅有一个正确答案。
)1、以下说法正确的是()A、第一个提出“goto语句有害论”的计算机科学家是Donald E.KnuthB、被誉为“迄今最伟大的计算机程序员、算法学家”的是Edsger Wybe DijkstraC、世界上第一位程序员是V on NoumaD、被誉为“计算机语言之母”的是Grace Hopper2、关于CPU的说法正确的是()A、计算机的运算速度取决于给定的时间内,它的处理器所能处理的数据量。
B、64位计算机指的是CPU每秒钟可处理的数据为2^64位。
C、双核CPU,是指在一个主板上放入两个CPU并行进行工作。
D、我国自主产权的CPU龙芯3A集成了两个处理器核心3、ASCII码表中的大写字母后有6个其它字符,接着便是小写字母。
现已知:A字母的ASCII码为(41)16{表示16进制数41 },那么f应为( )10A、46B、78C、102D、1084、Pascal的创始人是()。
(A)Donald E.Knuth (B)Steve Jobs (C)Charles Bachman D (D)Niklaus Wirth5、若二叉树的先序遍历序列为ABDECF,中序遍历序列DBEAFC,则其后序遍历序列为()A. DEBAFCB. DEFBCAC. DEBCFAD. DEBFCA6、已知后缀表达式abc+*d-,则它的中缀表达式和前缀表达式分别是:A) (a+b)*c-d -+*abcd B)a+b*c-d -+a*bcdC)a*(b+c)-d -*a+ bcd D)a*(b+c)-d -a b*+cd7、由权值为9,2,5,7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为()A.23B.37C.44D.468、排序算法是稳定的意思是:关键码相同的记录排序前后相对位置不发生改变,下列哪种排序算法是不稳定的:A) 冒泡排序 B) 插入排序 C) 归并排序 D) 快速排序9、下图给出了一个加权有向图,从顶点V1出发,以下哪个是活动中的关键路径()A. V1,V5,V3,V2B. V1,V4,V3,V2C. V1,V4, V2D. V1,V4,V5,V3,V210、以下有关全国信息学奥林匹克竞赛说法有误的是()A、 NOI评测只检查按照要求输出的结果,而不涉及过程和算法。
2012noip提高组初赛试题

三、问题求解(共 2 题,每题 5 分,共计 10 分) 1. 2. 256 5536
四、阅读程序写结果(共 4 题,每题 8 分,其中第 3 题的 2 个小题各 4 分,共计 32 分) 1. 2. 3. 4. 41 16 (1)7 (2)2004 55 (4 分) (4 分)
五、完善程序(第 1 题第 2 空 3 分,其余每空 2.5 分,共计 28 分)以下各程序填空可能还有一些等价的 写法,各省赛区可请本省专家审定和上机验证,可以不上报 CCF NOI 科学委员会检查。 Pascal 语言 1 ① ② ③ ④ ⑤ 2 ① ② ③ ④ ⑤ ⑥ next := (k mod c) + 1 s[n] := q[tail] q[head] q[head] q[tail] next(head) false used[data[i]] := false used[data[i]] = false j n break return (k % c) + 1 s[n] = q[tail] C++语言 C 语言 0 used[data[i]] = 0
其中,Pascal 语言和 C++语言中的 false 可以用 0 代替;第 2 题第 1 空中的圆括号可以省略。
第十八届全国青少年信息学奥林匹克联赛初赛 提高组参考答案
一、单项选择题(共 10 题,每题 1.5 分,共计 15 分) 1 A 2 B 3 B 4 A 5 D 6 A 7 A 8 D 9 A 10 B
二ቤተ መጻሕፍቲ ባይዱ不定项选择题(共 10 题,每题 1.5 分,共计 15 分,多选或少选均不得分) 1 A 6 CD 2 AD 7 AB 3 AD 8 A 4 BD 9 CD 5 ABC 10 BD
NOIP提高组初赛历年试题及答案完善题篇

for (i = m; i>= 1; i--){
used[data[i]] = false;
for (j =data[i]+1; j <= n; j++) if (!used[j]){
used[j] =true;
data[i] = j;
flag = true;
break;
}
if (flag)
{
for (k = i+1;k <= m; k++)
solve(left, j –1, deep + 1);
if(j<right)
solve(j+ 1, right, deep + 1);
}
int main()
{
inti;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
maxDeep=0;
solve(1,n,1);
cout<<maxDeep<<' '<<num<<endl;
}
void push()
for (j = 1; j<=n; j++) if (!used[j]){
data[k] = j;
used[j] =true;
break;
}
break;
}
}
}
}
NOIP2012-2.新壳栈 小 Z 设计了一种新的数据结构“新壳栈”。首先,它和传统的栈一样支持压入、弹 出操作。此外,其栈顶的前 c 个元素是它的壳,支持翻转操作。其中,c> 2 是 一个固定的正整数,表示壳的厚度。小 Z 还希望,每次操作,无论是压入、弹 出还是翻转,都仅用与 c 无关的常数时间完成。聪明的你能帮助她编程实现“新 壳栈”吗? 程序期望的实现效果如以下两表所示。其中,输入的第一行是正整数 c,之后每 行输入都是一条指令。另外,如遇弹出操作时栈为空,或翻转操作时栈中元素不 足 c 个,应当输出相应的错误信息。
NOIP2012初赛第3题解析

NOIP2012初赛试题解析(第3题问题求解)上传:朱全民浏览:144 时间:10-15/news/view/id/2931. 本题中,我们约定布尔表达式只能包含p,q,r三个布尔变量,以及“与“(^)、”或“(v)、”非“(~)三种布尔运算。
如果无论p,q,r如何取值,两个布尔表达式的值总是相同,则称它们等价。
例如,(pVq)Vr和pV(qVr)等价,pV~p和~qVq也等价,而pVq和p^q不等价。
那么,两两不等价的布尔表达式最多有_______个。
解答:对于p、q、r三个变量,每个变量可取0,1两种取值,共有8种组合。
对于每种组合,代入表达式只有0和1两种答案。
因此两两不等价的表达式只有2^8=256种。
2. 对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。
例如图1有5个不同的独立集(1个双点集合,3个单点集合,1个空集),图2有14个不同的独立集,那么,图3有_____________个不同的独立集。
解答:设m(i)为以i个为根结点的树的独立集总个数f(i)为选i的总个数g(i)表示不选i的总个数,显然有m(i)=f(i)+g(i)对于二叉树,如果根节点选,则儿子节点不能选,有f(i)=g(left_child[i])*g(right_child[i])如果根节点不选,则解与根节点无关,直接为左右儿子的解相乘,有g(i)=m(left_child[i])*m(right_child[i])具体用动态规划求解如下(计算的时候是从下往上算,这里设树的节点总数为根节点编号),显然该题就是求m(17),m(17)=f(17)+g(17)=1936+3600=5536f(17)=g(8)*g(8)=44*44=1936g(17)=m(8)*m(8)=60*60=3600m(8) =f(8)+g(8)=16+44=60f(8)=g(1)*g(6)=1*16=16g(8)=m(1)*m(6)=2*22=44m(6)=f(6)+g(6)=6+16=22f(6)=g(1)*g(4)=1*6=6g(6)=m(1)*m(4)=2*8=16m(4)=f(4)+g(4)=2+6=8f(4)=g(1)*g(2)=1*2=2g(4)=m(1)*m(2)=2*3=6m(2)=f(2)+g(2)=3f(2)=g(1)=1g(2)=m(1)=2m(1)=2f(1)=1g(1)=1长沙市雅礼中学朱全民2012年10月15日。
初赛模拟试题(二)[1]
![初赛模拟试题(二)[1]](https://img.taocdn.com/s3/m/6381f6de0508763231121243.png)
NOIP2012初赛模拟试题(二)(普及 Pascal语言二小时完成)●●全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效●●一.单项选择题(共10题,每题1.5分,共计15分。
每题有且仅有一个正确答案。
)1、下列说法正确的是( )。
A. CPU的主频越高,其运算速度越快B.存储器具有记忆能力,其中信息任何时候都不会丢失C.两个显示器屏幕尺寸相同,则它们的分辨率必定相同D.计算机系统可以分为硬件系统和系统软件两大部分2、有一个数值2341,它与十六进制数4E1相等,那么该数值是( )。
A.五进制数B.六进制数C.七进制数D.八进制数3、在计算递归函数时,如不使用递归过程,则一般情况下必须借助于( )数据结构。
A.栈B.树C.双向队列D.广义表4、表达式a*(c-b)/(d+e)的前缀表达式是()。
A.acbde*-/+ B.*-/+achde C.-cb*a/+de D./*a-cb+de5、在一个具有N个顶点的无向图中,要连通全部的顶点至多需要边的数目是( )。
A.N B.N-l C.N*(N-1)/2 D.N*(N-1)6. 二进制数00100100和00010100的和是( )。
A.00101000 B.001010100 C.01000100 D.001110007、一个队列开始为空,数列1,2,3……按顺序进队,经过操作序列“进、进、出、进、进、出、进、进、进、出、进、出”后,队列中的倒数第2个元素是()A.5 B.6 C.7 D.88、表达式28 div 4 mod (-3)+trunc(3.675)的值是( )。
A.5 B.4 C.3 D.29、在一棵度为3的树中,度为3的结点个数为2,度为2的结点个数为1,则度为0的结点个数为( )。
A.4 B.5 C.6 D.710、存储400个24*24点阵汉字的字模所需的存储容量为( )。
A.255KB B.75KB C.37.5KB D.28.125KB11、存储一幅分辨率为1024*768像素的256色图片需要的存储容量为( )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
s3[tmpLen+1] = '\0'; if (right[x] >= 0) check(right[x]); } void dfs(int x, int th) { if (th == n) {
s3[0] = '\0'; check(0); if (strcmp(s2, s3) == 0) {
文件交互的一种软件。
A. 资源管理器
B. 浏览器
C. 电子邮件
D. 编译器
3. 目前个人电脑的( )市场占有率最靠前的厂商包括 Intel、AMD 等公司。
A. 显示器
B. CPU
C. 内存
D. 鼠标
4. 无论是 TCP/IP 模型还是 OSI 模型,都可以视为网络的分层模型,每个网络协议都会被
归入某一层中。如果用现实生活中的例子来比喻这些“层”,以下最恰当的是( )。
ans = 0; calc(0, 1); printf("%d\n", ans); } return; } if (left[x] == -1 && right[x] == -1) { left[x] = th; father[th] = x; dfs(th, th+1); father[th] = -1; left[x] = -1; } if (right[x] == -1) { right[x] = th; father[th] = x; dfs(th, th+1); father[th] = -1; right[x] = -1; } if (father[x] >= 0) dfs(father[x], th); } int main() {
1. #include <stdio.h>
int n, i, temp, sum, a[100];
int main() {
scanf("%d", &n); for (i = 1; i <= n; i++)
scanf("%d", &a[i]); for (i = 1; i <= n - 1; i++)
CCF NOIP2012 初赛 提高组 C 6
int n, i, ans;
int gcd(int a, int b) {
if (a % b == 0) return b;
else return gcd(b, a%b);
} int main() {
scanf("%d", &n); ans = 0; for (i = 1; i <= n; i++)
h++; data[h] = 1; while (h > 1 && data[h] == data[h-1])
merge(); } printf("%d\n", ans); }
(1) 输入:8 输出:_________(4 分) (2) 输入:2012 输出:_________(4 分)
4. #include <stdio.h> #include <string.h>
A. 128KB
B. 1MB
C. 1GB
D. 4GB
9. 以下不属于目前 3G(第三代移动通信技术)标准的是( )。
A. GSM
B. TD-SCDMA
C. CDMA2000
D. WCDMA
10. 仿生学的问世开辟了独特的科学技术发展道路。人们研究生物体的结构、功能和工作原
理,并将这些原理移植于新兴的工程技术之中。以下关于仿生学的叙述,错误的是( )。
7. 逻辑异或(⊕)是一种二元运算,其真值表如下所示。
a
b
a⊕b
False False True True
False True False True
False True True False
以下关于逻辑异或的性质,正确的有( )。
A. 交换律:a ⊕ b = b ⊕ a
CCF NOIP2012 初赛 提高组 C 4
B. 结合律:(a ⊕ b) ⊕ c = a ⊕ (b ⊕ c) C. 关于逻辑与的分配律:a ⊕ (b ∧ c) = (a ⊕ b) ∧ (a ⊕ c) D. 关于逻辑或的分配律:a ⊕ (b ∨ c) = (a ⊕ b) ∨ (a ⊕ c)
8. 十进制下的无限循环小数(不包括循环节内的数字均为 0 或均为 9 的平凡情况),在二 进制下有可能是( )。
A. 中国公司的经理与斯里兰卡公司的经理交互商业文件
第4层
中国公司经理
斯里兰卡公司经理
↑↓
↑↓
第3层
中国公司经理秘书
斯里兰卡公司经理秘书
↑↓
↑↓
第2层
中国公司翻译
斯里兰卡公司翻译
↑↓
↑↓
第1层
中国邮递员
←→
斯里兰卡邮递员
CCF NOIP2012 初赛 提高组 C 1
B. 军队发布命令 第4层
司令
↓
A. 电子管
B. 晶体管
C. 集成电路
D. 超大规模集成电路
7. 在程序运行过程中,如果递归调用的层数过多,会因为( )引发错误。
A. 系统分配的栈空间溢出
B. 系统分配的堆空间溢出
CCF NOIP2012 初赛 提高组 C 2
C. 系统分配的队列空间溢出
D. 系统分配的链表空间溢出
8. 地址总线的位数决定了 CPU 可直接寻址的内存空间大小,例如地址总线为 16 位,其最 大的可寻址空间为 64KB。如果地址总线是 32 位,则理论上最大可寻址的内存空间为 ( )。
第1层
英国驻瑞典大使
←→
瑞典驻英国大使
D. 体育比赛中,每一级比赛的优胜者晋级上一级比赛
第4层
奥运会
↑
第3层
全运会
↑
第2层
省运会
↑
第1层
市运会
5. 如果不在快速排序中引入随机化,有可能导致的后果是( )。
A. 数组访问越界
B. 陷入死循环
C. 排序结果错误
D. 排序时间退化为平方级
6. 1946 年诞生于美国宾夕法尼亚大学的 ENIAC 属于( )计算机。
第十八届全国青少年信息学奥林匹克联赛初赛
提高组 C 语言试题 竞赛时间:2012 年 10 月 13 日 14:30~16:30
选手注意:
试题纸共有 15 页,答题纸共有 2 页,满分 100 分。请在答题纸上作答,写在试题纸上 的一律无效。
不得使用任何电子设备(如计算器、手机、电子词典等)或查阅任何书籍资料。
A. 无限循环小数(不包括循环节内的数字均为 0 或均为 1 的平凡情况)
B. 无限不循环小数
C. 有限小数
D. 整数
9. 以下( )属于互联网上的 E-mail 服务协议。
A. HTTP
B. FTP
C. POP3
D. SMTP
10. 以下关于计算复杂度的说法中,正确的有( )。 A. 如果一个问题不存在多项式时间的算法,那它一定是 NP 类问题 B. 如果一个问题不存在多项式时间的算法,那它一定不是 P 类问题 C. 如果一个问题不存在多项式空间的算法,那它一定是 NP 类问题 D. 如果一个问题不存在多项式空间的算法,那它一定不是 P 类问题
data[h-1] = data[h-1] + data[h]; h--; ans++; } int main() { scanf("%d", &n);
CCF NOIP2012 初赛 提高组 C 7
h = 1; data[h] = 1; ans = 0; for (i = 2; i <= n; i++) {
int left[20], right[20], father[20]; char s1[20], s2[20], s3[20]; int n, ans, tmpLen;
void calc(int x, int dep) {
ans = ans + dep*(s1[x] - 'A' + 1); if (left[x] >= 0) calc(left[x], dep+1); if (right[x] >= 0) calc(right[x], dep+1); } void check(int x) { if (left[x] >= 0) check(left[x]); tmpLen = strlen(s3); s3[tmpLen] = s1[x];
} sum = 0; for (i = 2; i <= n - 1; i++)
sum += a[i]; printf("%d\n", sum / (n - 2)); return 0; }
输入: 8 40 70 50 70 20 40 10 30 输出:_________
2. #include <stdio.h>
2. 对于一棵二叉树,独立集是指两两互不相邻的节点构成的集合。例如,图 1 有 5 个不同 的独立集(1 个双点集合、3 个单点集合、1 个空集),图 2 有 14 个不同的独立集。那 么,图 3 有_________个不同的独立集。
图1
图2
CCF NOIP2012 初赛 提高组 C 5
图3
四、阅读程序写结果(共 4 题,每题 8 分,其中第 3 题的 2 个小题各 4 分,共 计 32 分)
if (a[i] > a[i + 1]) { temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp;