NOIP2016初赛总结(提高组)

题目:https://www.zhihu.com/question/51865837/answer/127892121

注:我是HE的,不是JS的,照片是ZYJ神犇的

单选

第一题,水过,小学生都会。D

第二题,当时我们场好多人错了。。坑点如下:

1.和pj组的不同,是来回按键。

2.让你求第81个字符,而不是第81个按键。

所以我们可以得出输出的是是个字符一循环:ASDSAasdsa

所以第81个是A,选A

第三题,异或运算就是不同得1,相同得0,列竖式算一下不得了。

我们考场某人竟然不知道异或是什么。选B

第四题,我记得去年考的是16进制小数是0.8,今年成了8进制了。

想一想就明白了。选B。

第五题,可以想成N个人打乒乓球,决出冠军,最少打N-1场。选B。

第六题,得仔细说说啊。后缀表达式又叫做逆波兰表达式,就是按照从前到后的顺序把操作数和运算符压进一个栈,如果压进了一个运算符,就把栈顶的两个操作数弹出,并与该运算符进行运算,把运算结果放入栈。这题按照计算顺序,应该是先算a*(b+c),然后是分别算a和b+c并把乘号压进栈,b+c的逆波兰式是bc+,所以应该是abc+*,然后把d压进去,再压进去减号,表达式就变成了abc+*d-。答案为B。

第七题,答案是sum(每一个节点孩子为空的数目)。根节点的左孩子是叶子节点,答案+=2。根节点右孩子的左孩子也是空节点,答案+=2。根节点右孩子的右孩子左孩子为空,答案+=1,其右孩子是空节点,答案+=2.所以答案是7。(我是智障,一张图解决一段话不得了)

下面这张图中,黑色部分表示原二叉树,红线表示指向NULL指针,红圈表示NULL,所以一共有7个。选B。

第八题,我是这么想的,先构建一个8个顶点的最稠密无向连通图,可以根据公式((8-1)*8)/2知道这张图有28条边。再添加一个孤立的节点使得这张图成为非连通图,所以选B。

第九题,常识性问题。我们说的"32位系统"理论上最多支持4GB内存就是说的这个。所以选B。

第十题。自己模拟去。用devc++或人脑均可。选D。

第十一题。枚举。注意重复情况,设三个盘子苹果量是a,b,c,在枚举时使a<=b<=c即可。下面是那八种情况。选B。

第十二题。我这里找不到图。只要找到所有是Lucia的朋友而不是Jacob的朋友就行了(Jacob本人除外)。选A。

第十三题,自己想即可。很简单。选C。

第十四题,我不会233333333333,选C。

第十五题,Search函数的第二行判断的是当前元素是否为峰顶,所以第三行是c.return L[k]。第四行判断的是当前元素从左到右是否呈上升趋势,据题意可知,如果呈上升趋势峰顶应该在右边,所以是a.search(k+1,n)。第六行就是b了。所以选A。

不定项

第一题。常识问题。最重要的是我尽然选错了,把D也选上了。以太网不是无线的。。。答案是ABC

第二题。同理也是常识问题。光驱是连接光盘的,鼠标是连接手的,显卡是连接显示屏的。答案是A

第三题。看过书的都知道。(计数排序比较少见,可能有人也选了)答案是AB

第四题。自己想就行了。我这里没有图。答案是A

第五题。有人竟然选C,不带衣服进考场。。。此人一定是受到pj组单选第20题的迷惑了。答案是ABD

问题求解

第一题。我这个约瑟夫竟然画了个树状图,画到第6层发现可以直接求结果,然后算出来是55(竟然对了)。

正解是斐波那契数列,设f(1)=2,f(2)=3,求f(8)。f(1)=2,f(2)=3,f(3)=5,f(4)=8,f(5)=13,f(6)=21,f(7)=34,f(8)=55。

第二题。答案是3,,通用技术、化学、政治一起考,物理、历史一起考,生物、地理一起考。

阅读程序写结果

我把代码弄过来了。。。若君问吾代码从何来?吾曰:"手打。"

第一题。

输出:6,5,4,3,2,1,

#include <iostream>
using namespace std;

int main() {
    int a[6] = {1, 2, 3, 4, 5, 6};
    int pi = 0;
    int pj = 5;
    int t , i;
    while (pi < pj) {
        t = a[pi];
        a[pi] = a[pj];
        a[pj] = t;
        pi++;
        pj--;
    }
    for (i = 0; i < 6; i++)
        cout << a[i] << ",";
    cout << endl;
    return 0;
}

考点:将数组倒序存储

坑点:最后一个逗号

第二题。

输入:3

AB:ACDEbFBkBD

AR:ACDBrT

SARS:Severe Atypical Respiratory Syndrome

输出:YES,NO,YES,

#include <iostream>
using namespace std;

int main() {
    char a[100][100], b[100][100];
    string c[100];
    string tmp;
    int n, i = 0, j = 0, k = 0, total_len[100], length[100][3];
    cin >> n;
    getline(cin, tmp);
    for(i = 0; i < n; i++) {
        getline(cin, c[i]);
        total_len[i] = c[i].size();
    }
    for(i = 0; i < n; i++) {
        j = 0;
        while (c[i][j] != ‘:‘) {
            a[i][k] = c[i][j];
            k = k + 1;
            j++;
        }
        length[i][1] = k-1;
        a[i][k] = 0;
        k = 0;
        for (j = j + 1; j < total_len[i]; j++) {
            b[i][k] = c[i][j];
            k = k + 1;
        }
        length[i][2] = k - 1;
        b[i][k] = 0;
        k = 0;
    }
    for(i = 0; i < n; i++) {
        if(length[i][1] >= length[i][2])
            cout << "NO,";
        else {
            k=0;
            for (j = 0; j < length[i][j]; j++) {
                if(a[i][k] == b[i][j])
                    k = k + 1;
                if(k > length[i][1])
                    break;
            }
            if (j == length[i][2])
                cout << "NO,";
            else
                cout << "YES,";
        }
    }
    cout << endl;
    return 0;
}

考点:匹配不连续的字串

坑点:同第一题

第三题。

输出:5

#include <iostream>
using namespace std;

int lps(string seq, int i, int j) {
    int len1, len2;
    if (i == j)
        return 1;
    if (i > j)
        return 0;
    if (seq[i] == seq[j])
        return lps(seq, i + 1, j - 1) + 2;
    len1 = lps(seq, i, j - 1);
    len2 = lps(seq, i + 1, j);
    if (len1 > len2)
        return len1;
    return len2;
}

int main() {
    string seq = "acmerandacm";
    int n = seq.size();
    cout << lps(seq, 0, n - 1) << endl;
    return 0;
}

考点:不知道 最长回文字串(模拟即可)

坑点:没什么

第四题。

输入:11

1 2

1 3

2 4

2 5

2 6

3 7

7 8

7 11

6 9

9 10

输出:2 5

#include <iostream>
#include <cstring>
using namespace std;

int map[100][100];
int sum[100], weight[100];
int visit[100];
int n;

void dfs(int node) {
    visit[node] = 1;
    sum[node] = 1;
    int v, maxw = 0;
    for (v = 1; v <= n; v++) {
        if (!map[node][v] || visit[v])
            continue;
        dfs(v);
        sum[node] += sum[v];
        if (sum[v] > maxw)
            maxw = sum[v];
    }
    if (n - sum[node] > maxw)
        maxw = n - sum[node];
    weight[node] = maxw;
}

int main() {
    memset(map, 0, sizeof(map));
    memset(sum, 0, sizeof(sum));
    memset(weight, 0, sizeof(weight));
    memset(visit, 0, sizeof(visit));
    cin >> n;
    int i, x, y;
    for (i = 1; i < n; i++) {
        cin >> x >> y;
        map[x][y] = 1;
        map[y][x] = 1;
    }
    dfs(1);
    int ans = n, ansN = 0;
    for (i = 1; i <= n; i++)
        if (weight[i] < ans) {
            ans = weight[i];
            ansN = i;
        }
    cout << ansN << " " << ans << endl;
    return 0;
}

考点:深度优先遍历求树的重心

坑点:无

完善程序

第一题。答案在上面。第一空是快排条件,第二空、第三空和第五空照抄即可(上面有差不多的),第四孔就是判断应该选高的还是矮的。

第二题。答案在上面。第一空是spfa的d[1]=0,第二空是松弛,判断是否可以更新,第三空是取消访问标记,第四空是判断是否走得这条路径(我没写上来),第五空是标记访问。

时间: 2024-07-31 20:30:48

NOIP2016初赛总结(提高组)的相关文章

Noip2008提高组初赛 C

第十四届(NOIP2008)信息学奥赛联赛提高组C语言初赛试题 ● ●  全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效  ●● 一. 单项选择题 (共10题,每题1.5分,共计15分.每题有且仅有一个正确答案). 1. 在以下各项中,(C  )不是操作系统软件. A. Solaris   B. Linux    C. Sybase     D. Windows Vista      E. Symbian A:索拉瑞斯是Sun Microsystems研发的计算机操作系统.它被认为是UNI

【NOIP2016】提高组

Day1 T1玩具谜题 题目链接 简单模拟题,注意一下取余啊方向啊什么的就行了. 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 const int M=1e5+10; 5 using namespace std; 6 struct point{ 7 int fa; 8 char ch[12]; 9 }e[M]; 10 int main() 11 { 12 int n,m,tu,k,now=0

[NOIP2009] 提高组 洛谷P1073 最优贸易

题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路,双向通行的道路在统计条数时也计为 1 条. C 国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价 格不一定相同.但是,同一种商品在同一个城市的买入价和卖出价始终是相同的. 商人阿龙来到 C 国旅游.当他得知同一种商品在不同城市的价格可能会不同这一信息 之后,便决定在旅游的

洛谷P1063 能量项链 [2006NOIP提高组]

P1063 能量项链 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标 记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记.因为只有这样,通过吸盘(吸盘是 Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量.如果前一颗能量珠的头标记为m,尾标记为r,后 一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为m*r*n(Mar

codevs 1044 拦截导弹 1999年NOIP全国联赛提高组

1044 拦截导弹 1999年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 输入描述 Input Description 输入导弹

3285 转圈游戏 2013年NOIP全国联赛提高组

3285 转圈游戏 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推.游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推

[NOIP2009] 提高组 洛谷P1071 潜伏者

题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所得的内容均由大写字母‘A’-‘Z’构成(无空格等其他字符). 2. S 国对于每个字母规定了对应的“密字”.加密的过程就是将原信息中的所有字母替换为其对应的“密字”. 3. 每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”.“密字”可以

Vijos P1002 过河 (NOIP提高组2005)

链接:https://www.vijos.org/p/1002 解析: 若 p*x+(p+1)*y=Q(采用跳跃距离p和p+1时可以跳至任何位置Q),则在Q ≥ P*(P-1)时是一定有解的. 由于题目给出的一个区间是1≤S≤T≤10,于是当相邻的两个石子之间的距离不小于8*9=72时,则后面的距离都可以到达,我们就可以认为它们之间的距离就是72.如此一来,我们就将原题L的范围缩小为了100*72=7200,动态规划算法完全可以承受了. 但是当S=T时,上述等式是无法使用的,在这种情况下,只需要

NOIP2010提高组 关押罪犯 -SilverN

(洛谷P1525) 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多.如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件. 每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到S 城Z 市长那里.公务繁忙的