2011年北京大学计算机研究生机试真题(题解)

2023-11-16

九度OJ题目传送门:2011年北京大学计算机研究生机试真题


鸡兔同笼

题目描述

一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。

输入

第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,每行一个正整数a (a < 32768)

输出

输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开
如果没有满足要求的答案,则输出两个0。

样例输入

2
3
20

样例输出

0 0
5 10

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int main()
{
    int n, a;
    scanf("%d", &n);
    while(n--){
        scanf("%d", &a);

        int t1 = a/2;
        int t2 = a/4;
        int maxn = 0, minn = 0;
        for(int i = 0; i <= t1; i++){
            for(int j = 0; j <= t2; j++){
                if(i*2+j*4==a){
                    if(minn==0)
                        minn = i+j;
                    if(i+j>maxn)
                        maxn = i+j;
                    if(i+j<minn)
                        minn = i+j;
                }
            }
        }

        printf("%d %d\n", minn, maxn);
    }
    return 0;
}

/**************************************************************
    Problem: 1155
    User: violet0908
    Language: C++
    Result: Accepted
    Time:330 ms
    Memory:1020 kb
****************************************************************/


放苹果

题目描述

把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

输入

第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。

输出

对输入的每组数据M和N,用一行输出相应的K。

样例输入

1
7 3

样例输出

8

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int fun(int m, int n){
    if(n == 1)
        return 1;
    if(m==1 || m==0)
        return 1;
    else if(m < 0)
        return 0;
    else
        return fun(m, n-1)+fun(m-n, n);
}

int main()
{
    int t, m, n;
    scanf("%d", &t);
    while(t--){
        scanf("%d %d", &m, &n);
        printf("%d\n", fun(m, n));
    }
    return 0;
}

/**************************************************************
    Problem: 1160
    User: violet0908
    Language: C++
    Result: Accepted
    Time:0 ms
    Memory:1020 kb
****************************************************************/


谁是你的潜在朋友

题目描述

“臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。

首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在朋友。你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。

输入

每个案例第一行两个整数N,M,2 <= N ,M<= 200。接下来有N行,第i(i = 1,2,…,N)行每一行有一个数,表示读者i-1最喜欢的图书的编号P(1<=P<=M)

输出

每个案例包括N行,每行一个数,第i行的数表示读者i有几个潜在朋友。如果i和任何人都没有共同喜欢的书,则输出“BeiJu”(即悲剧,^ ^)

样例输入

4 5
2
3
2
1

样例输出

1
BeiJu
1
BeiJu

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int f[250];
int p[250];

int main()
{
    int n, m;
    while(scanf("%d %d", &n, &m)!=EOF){
        memset(f, 0, sizeof(f));

        for(int i = 0; i < n; i++){
            scanf("%d", &p[i]);
            f[p[i]]++;
        }

        for(int i = 0; i < n; i++){
            if(f[p[i]]==1){
                printf("BeiJu\n");
            }
            else if(f[p[i]]>1){
                printf("%d\n", f[p[i]]-1);
            }
        }
    }
    return 0;
}

/**************************************************************
    Problem: 1156
    User: violet0908
    Language: C++
    Result: Accepted
    Time:0 ms
    Memory:1024 kb
****************************************************************/


中位数

题目描述

中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数).
给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)

输入

该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1<=N<=10000.
接着N行为N个数据的输入,N=0时结束输入

输出

输出中位数,每一组测试数据输出一行

样例输入

4
10
30
20
40
3
40
30
50
4
1
2
3
4
0

样例输出

25
40
2

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int main()
{
    int n;
    int num[10005];
    while(scanf("%d", &n)!=EOF){
        if(n==0)
            break;

        for(int i = 0; i < n; i++)
            scanf("%d", &num[i]);

        sort(num, num+n);
        int ans;

        if(n%2==1){
            ans = num[n/2]; 
        }
        else{
            ans = (num[n/2-1]+num[n/2])/2;
        }
        printf("%d\n", ans);
    }
    return 0;
}

/**************************************************************
    Problem: 1157
    User: violet0908
    Language: C++
    Result: Accepted
    Time:20 ms
    Memory:1020 kb
****************************************************************/


买房子

题目描述

某程序员开始工作,年薪N万,他希望在中关村公馆买一套60平米的房子,现在价格是200万,假设房子价格以每年百分之K增长,并且该程序员未来年薪不变,且不吃不喝,不用交税,每年所得N万全都积攒起来,问第几年能够买下这套房子(第一年房价200万,收入N万)

输入

有多行,每行两个整数N(10<=N<=50), K(1<=K<=20)

输出

针对每组数据,如果在第20年或者之前就能买下这套房子,则输出一个整数M,表示最早需要在第M年能买下,否则输出Impossible,输出需要换行

样例输入

50 10
40 10
40 8

样例输出

8
Impossible
10

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int main()
{
    double cnt, n, k, sum;
    while(scanf("%lf %lf", &n, &k)!=EOF){
        sum = n;
        cnt = 1;
        int fang = 200;

        int flag = 1;

        while(sum < fang){
            fang = (1+k/100)*fang;
            sum+=n;
            cnt++;
            if(cnt > 20){
                printf("Impossible\n");
                flag = 0;
                break;
            }
        }
        if(flag==1){
            printf("%.0lf\n", cnt);
        }
    }
    return 0;
}

/**************************************************************
    Problem: 1158
    User: violet0908
    Language: C++
    Result: Accepted
    Time:0 ms
    Memory:1020 kb
****************************************************************/


I Wanna Go Home

题目描述

The country is facing a terrible civil war—-cities in the country are divided into two parts supporting different leaders. As a merchant, Mr. M does not pay attention to politics but he actually knows the severe situation, and your task is to help him reach home as soon as possible.

“For the sake of safety,”, said Mr.M, “your route should contain at most 1 road which connects two cities of different camp.”

Would you please tell Mr. M at least how long will it take to reach his sweet home?

输入

The input contains multiple test cases.

The first line of each case is an integer N (2<=N<=600), representing the number of cities in the country.

The second line contains one integer M (0<=M<=10000), which is the number of roads.

The following M lines are the information of the roads. Each line contains three integers A, B and T, which means the road between city A and city B will cost time T. T is in the range of [1,500].

Next part contains N integers, which are either 1 or 2. The i-th integer shows the supporting leader of city i.

To simplify the problem, we assume that Mr. M starts from city 1 and his target is city 2. City 1 always supports leader 1 while city 2 is at the same side of leader 2.

Note that all roads are bidirectional and there is at most 1 road between two cities.

Input is ended with a case of N=0.

输出

For each test case, output one integer representing the minimum time to reach home.

If it is impossible to reach home according to Mr. M’s demands, output -1 instead.

样例输入

2
1
1 2 100
1 2
3
3
1 2 100
1 3 40
2 3 50
1 2 1
5
5
3 1 200
5 3 150
2 5 160
4 3 170
4 2 170
1 2 2 2 1
0

样例输出

100
90
540

思路:刚开始真想不出来,考虑的很复杂,最后参考了网上的题解后恍然大悟,对于不是同一个阵营的路换成单向的就简单了,同一个阵营的路还是双向路

#include<cstdio>
#include<cstring>
#include<algorithm>
#define INF 0xffffff
#define MAXN 605 
using namespace std;

int mp[MAXN][MAXN], dis[MAXN], team[MAXN];
bool vis[MAXN];

void dijkstra(int s, int n){
    memset(vis, false, sizeof(vis));

    for(int i = 1; i <= n; i++)
        dis[i] = mp[s][i];

    vis[s] = true;  
    dis[s] = 0;

    for(int i = 1; i < n; i++){
        int min = INF, pos;
        for(int j = 1; j <= n; j++){
            if(!vis[j] && dis[j] < min){
                min = dis[j];
                pos = j;
            }
        }   

        if(min == INF)
            break;

        vis[pos] = true;
        for(int j = 1; j <= n; j++){
            if(!vis[j] && dis[pos]+mp[pos][j] < dis[j]){
                dis[j] = dis[pos] + mp[pos][j];
            }
        }
    }
    if(dis[2] < INF)
        printf("%d\n", dis[2]);
    else
        printf("-1\n");
}

int main()
{
    int n, m;
    while(scanf("%d", &n)!=EOF){
        if(n == 0)
            break;

        scanf("%d", &m);

        for(int i = 0; i < MAXN; i++)
            for(int j = 0; j < MAXN; j++)
                mp[i][j] = INF;

        for(int i = 0; i < m; i++){
            int x, y, t;
            scanf("%d %d %d", &x, &y, &t);
            mp[x][y] = mp[y][x] = t;
        }

        for(int i = 1; i <= n; i++)
            scanf("%d", &team[i]);

        for(int i = 1; i<=n; i++){
            for(int j = i+1; j <= n; j++){
                if(team[i]==team[j])          //如果是同一个阵营,就不做操作 
                    continue;
                else if(team[i]==1 && team[j]==2)   //如果不是同一个阵营,就简历单向边 
                    mp[j][i] = INF;
                else if(team[i]==2 && team[j]==1)
                    mp[i][j] = INF;
            }
        }

        dijkstra(1, n); 
    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2011年北京大学计算机研究生机试真题(题解) 的相关文章

  • 操作系统CPU调度

    概述 多道程序操作系统的基础 通过在进程之间切换CPU 操作系统可以提高计算机的吞吐率 对于单处理器系统 每次只允许一个进程运行 任何其他进程必须等待 直到CPU空闲能被调度为止 CPU按一定的调度算法从就绪队列中选择一个进程 把CPU的使
  • 雷军发布会刚结束,就能写出上万字原创文章!

    前言 看完雷军演讲会之后你有没有看到过很多文章 成千上万个字的原创文章 瞬间就出现了 这是一个一个字敲的吗 当然不是 是AI 话不多说直接上教程 把雷军的演讲整理到笔记中 可以是md格式 word格式等等 复制粘贴即可 打开网站 smart
  • git使用问题

    1 windows 7专业版使用sourceTree拉取代码的问题 之前一直用的好好的 今天拉不了代码了 错误如下 git c diff mnemonicprefix false c core quotepath false fetch o
  • 【团体程序设计天梯赛-练习集】L2-009 抢红包(25分)

    团体程序设计天梯赛 练习集 L2 009 抢红包 25分 题目 题目链接 L2 009 抢红包 25 分 没有人没抢过红包吧 这里给出N个人之间互相发红包 抢红包的记录 请你统计一下他们抢红包的收获 输入格式 输入第一行给出一个正整数N 1
  • CF1512C A-B Palindrome 题解

    题目大意 给定一个字符串 长度为 a b a b a b 给定 a a a
  • 计算机含金量最高的证书

    第一种证书 计算机技术与软件专业资格考试证书 计算机技术与软件专业资格考试证书 是由国家人力资源和社会保障部 工业和信息化部领导的国家级考试 该考试分为 5 个专业类别 并分设了高 中 初级专业资格考试 共 28 个资格的考核 也是用人单位
  • 2020年团体程序设计天梯赛-总决赛 L2-2 口罩发放

    L2 2 口罩发放 25分 输入格式 输出格式 输入样例 输出样例 样例解释 题解 L2 2 口罩发放 25分 为了抗击来势汹汹的 COVID19 新型冠状病毒 全国各地均启动了各项措施控制疫情发展 其中一个重要的环节是口罩的发放 某市出于
  • python拼接两个或者多个视频文件

    拼接不同分辨率的视频文件 import os import linecache 读取指定路径下的所有文件并放入到列表中 root workspace videos codec videos codec evp test h264 file
  • POJ 3259 Wormholes(最短路——Bellman-ford)

    A Wormholes While exploring his many farms Farmer John has discovered a number of amazing wormholes A wormhole is very p
  • 常用的相似度计算方法原理及实现

    在数据分析和数据挖掘以及搜索引擎中 我们经常需要知道个体间差异的大小 进而评价个体的相似性和类别 常见的比如数据分析中比如相关分析 数据挖掘中的分类聚类 K Means等 算法 搜索引擎进行物品推荐时 相似度就是比较两个事物的相似性 一般通
  • secure boot 是什么

    一 secure boot 是什么 secure boot 中文叫安全启动 是电脑行业成员共同开发的一种安全机制 用于确保电脑只能启动原装系统 如果电脑重装了其他系统 那么这个系统是启动不了的 说白了 就是垄断 所以安装完其他系统 必须关闭
  • 设计模式之命令模式

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • 编译工具Make

    文章目录 make指令 指定目标 隐藏指令 通配符 伪目标 多目标 Makefile的命令 变量 变量的基础 赋值变量 函数调用 字符串操作函数 文件名操作函数 循环函数 条件判断函数 条件判断语句 隐式规则 隐式规则举例 隐式规则中的变量
  • 小米盒子打开adb调试模式

    1 先打开开发者模式 进入小米电视设置 gt 进入关于 gt 找到产品型号 gt 在产品型号上面连续多次按ok 确认 键 gt 然后就会提示 您已处于开发者模式 2 开启adb 经过第一步开启开发者模式之后 现在可以返回到设置页面 进入 账
  • 【GPLT】【2022天梯赛真题题解】

    L1 1 今天我要赢 5分 题目描述 2018 年我们曾经出过一题 是输出 2018 我们要赢 今年是 2022 年 你要输出的句子变成了 我要赢 就在今天 然后以比赛当天的日期落款 输入格式 本题没有输入 输出格式 输出分 2 行 在第一
  • POJ - 1129 Channel Allocation(染色问题)

    题意 AC代码 When a radio station is broadcasting over a very large area repeaters are used to retransmit the signal so that
  • 2019年感:忆往昔考博岁月,看今朝花样年华

    人生的际遇谁又能说清楚 就像师范类毕业的女神梦想着当一名老师 结果却阴差阳错穿上了警服 而本应该奔波北上广深的程序员 却成为了一名大学老师 两条平行线的男女 却结为了连理 再如 一心准备中科院却因英语差一分惜败 几乎裸考的学校却可能结出果实
  • 计算机网络4--Internet结构

    本页内容 1 基本结构 2 结构图解 3 层次结构图解 1 基本结构 a 端系统通过接入ISP access ISPs 连接到Internet b 接入ISP必须进一步互连 保证任意两个主机可以互相发送分组 c 构成复杂的网络互连的网络 2
  • LeetCode题解—260.只出现一次的数字Ⅲ

    题目地址 260 只出现一次的数字 III 力扣 LeetCode 题解 这道题是基于寻找只出现一次的数字 上的拓展 136 只出现一次的数字 力扣 LeetCode 在 中 我们只需要把所有的数字异或一遍即可 因为只有一个数字是唯一的 但
  • 多媒体开发计算机颜色相关知识

    颜色模式 颜色模式 颜色模型和颜色空间 计算机中的颜色格式 常用的颜色模型分类 RGB颜色模型 介绍 RGB模型的颜色空间 RGB555 RGB565 RGB24 RGB32 FFMPEG中定义的RGB色彩空间 显示器的颜色空间

随机推荐

  • Springmvc拦截器三个方法的执行时机

    一 拦截器三个方法分别是 1 1 preHandle 预处理回调方法 实现处理器的预处理 如登录检查 第三个参数为响应的处理器 如具体的Controller实现 返回值 true表示继续流程 如调用下一个拦截器或处理器 false表示流程中
  • 微信小程序与应用服务的关系和“代码安全“

    今天给客户回答了下小程序项目的代码安全问题 他担心源代码提交以及发布系统后被第三方知晓源代码 导致代码泄露 虽然作为程序员来说 这个问题不用考虑 但是非技术人员似懂非懂 所以我还是做了一个解释 一般做微信小程序开发 需要知道微信小程序只是纯
  • 记录PaddleOcr的使用2 -- GPU

    项目场景 之前使用了cpu 但是效率感人 所以想尝试一下GPU的版本 安装环境 windows下使用的 别问 问就是没有有GPU的服务器 1 python 3 7 如果是linux建议3 8 2 pip 版本 20 2 2或更高版本 64
  • LALR(1)语法自动分析生成器Mathew

    首次写博客 文采不好大家不要见笑额 简介 Mathew 马修 马修名字源于 魔力女管家 里的星神马修 马修是一个LALR 1 型活动板房式的语法自动分析生成器 马修继承了Lemon 也许大家对LEX和YACC比较熟悉 这两个工具配合使用可以
  • 记录Chrome截屏整个页面的命令

    F12 右键检查 进入开发者工具 调出命令 MAC command shift P Window ctrl shift P 输入命令 capture full size screenshot
  • C/C++如何输入包含空格的字符串

    对于C 字符串的输入我们看一下下面这段代码 string s 定义空字符串 cin gt gt s 输入字符串 cout lt lt s 打印 但我们会发现如果我们输入了还有空格的字符串 s里读入的字符串遇到空格 回车 tab都会结束 比如
  • 目前 AIGC 工具到底能帮我们做什么?

    最近直播超级多 预约保你有收获 今天腾讯发布了混元大模型 大模型赛道越来越内卷了 今天咱们来聊聊目前的 AIGC 工具能帮助我们做什么 AIGC 的本质是由 AI 来生产内容 通过自然语言交互的方式 让 AIGC 工具输出内容 AIGC 工
  • 20-文件下载及读取漏洞

    WEB 漏洞 文件操作之文件下载读取全解 思维导图 1 文件被解析 则是文件解析漏洞 2 显示源代码 则是文件读取漏洞 3 提示文件下载 则是文件下载漏洞 文件下载漏洞 利用条件 1 存在读文件的函数和操作 2 读取文件的路径用户可控且未校
  • Android 保存资源图片到相册最新写法适用于Android10.0及以上

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 一 首先在AndroidManifest xml中加入权限
  • APFS 文件系统探究

    本文的创作初衷是因为我发现从底层详解 APFS 的资料很少 所以自己来进行了一些探究和整理 一点说明 如果你在看 APFS 的文档或者其他内容 不要把高层级的分区理解成 Windows 中的分区 因为 APFS 里卷 Volume 才是显示
  • OUT指令时,就进入了I/O端口读写周期

    1 译码电路的输入信号 每当CPU执行IN或者OUT指令时 就进入了I O端口读写周期 此时首先是端口地址有效 然后是I O读写控制信号 IOR和 IOW有效 把对端口地址译码而产生的译码信号同 IOR和 IOW结合起来一同控制对I O端口
  • 聊聊FFT

    关于FFT 全称为快速傅里叶变换 目的是把时域的信号转变为频域的信号 具体的科学解释及计算方程组可以去查百度百科 不过小编不建议这么做 因为查了也看不懂的 先看一张都能看懂的图 这是某种食物的配方表 每种配方包含了多少比例标注的很清楚 对于
  • 计算机网络教程_第二章物理层_整理与复习

    计算机网络教程 第一章 概述 第二章 物理层 第三章 数据链路层 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 计算机网络教程 1 物理层的作用及主要任务 2 数据传输的方式 并行 串行 异步 同步 P40 3
  • python 设置下载源,全局设置

    推荐使用豆瓣的 个人感觉最好用 当然 你如果喜欢其它的 也可以设置 pip config set golbal index url https pypi douban com simple 设置成功 windows 提示的配置文件在 ini
  • Spyder上使用tensorflow训练完成时出现SystemExit异常

    使用spyder tensorflow实现迁移学习训练inception v3网络 训练完成后提示 SystemExit home zhijuan anaconda3 lib site packages python3 6 site pac
  • 深度学习 图像分割综述

    文章目录 前言 语义分割 实例分割 技术路线 掩膜建议分类法 先检测再分割法 标记像素后聚类法 密集滑动窗口法 参考 前言 图像分割在计算机视觉中是个重要的任务 在地理信息系统 医学影像 自动驾驶 机器人等领域都有着很重要的应用技术支持作用
  • TensorFlow框架做实时人脸识别小项目(二)

    在第一部分中 分析了整个小项目的体系 重点讨论了用于人脸检测对齐的mtcnn网络的实现原理 并利用笔记本电脑自带的摄像头进行了测试 今天在这里要讨论的重点是人脸识别中的核心部分 facenet网络 facenet是Google开源的人脸识别
  • 从CPU cache一致性的角度看Linux spinlock的不可伸缩性(non-scalable)

    凌晨一点半的深圳雨夜 豪雨当夜惊起有人赏 笑叹落花无声空飘零 喜欢这种豪雨 让人兴奋 惊起作文以呜呼之感叹 引用上一篇文章 优化多核CPU的TCP新建连接性能 重排spinlock https blog csdn net dog250 ar
  • 图片<img>、链接<a>等去除referer标记

    1 img 标签 img src src
  • 2011年北京大学计算机研究生机试真题(题解)

    九度OJ题目传送门 2011年北京大学计算机研究生机试真题 鸡兔同笼 题目描述 一个笼子里面关了鸡和兔子 鸡有2只脚 兔子有4只脚 没有例外 已经知道了笼子里面脚的总数a 问笼子里面至少有多少只动物 至多有多少只动物 输入 第1行是测试数据