当前位置: 代码迷 >> 综合 >> 2015年北京师范大学新生程序设计竞赛题解
  详细解决方案

2015年北京师范大学新生程序设计竞赛题解

热度:41   发布时间:2023-11-02 23:18:04.0

前四道题都是简单题,基本上半个小时就能解决。

A. BQG's Programming Contest

Time Limit: 2000ms
Memory Limit: 32768KB
64-bit integer IO format:  %lld      Java class name:  Main
Submit Status PID: 50997
又到了一年一度的北京师范大学新生程序设计竞赛!为作为良心出题人,决定开大时限送温暖!
写了两份代码,决定采用耗时更多的一份作为标程,题目的时间限制将会是标程的五倍,并且不少于,但是评测机资源有限,也不能多于。
然而粗心的算好时限之后忘记写进题目了,现在给出两份代码的运行时间(单位:),你需要帮他算出这个题的时间限制。

Input

第一行是一个正整数, 表示测试数据的组数,
每组测试数据只有一行,
包含两个整数,表示两份代码的运行时间。

Output

对于每组测试数据,输出一个整数,表示这个题的时间限制。

Sample Input

5
0 16
200 212
1000 1024
5000 10000
12000 20000

Sample Output

1000
1060
5120
50000
60000
Submit Status PID: 50997
#include<iostream>
#include<string>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{long long a,b,c,t;cin>>t;while(t--){cin>>a>>b;c=max(a,b);c*=5;if(c<1000)c=1000;else if(c>60000)c=60000;cout<<c<<endl;}return 0;
}

B. BQG's Messy Code

Time Limit: 2000ms
Memory Limit: 32768KB
64-bit integer IO format:  %lld      Java class name:  Main
Submit Status PID: 50998

“………………………………………………………………………………………………这代码能跑你敢信?”

看到这段代码之后表示被水淹没不知所措,他只知道这个程序在读取了一个整数之后会输出另外一个整数。
现在给你一个整数,希望你能帮他算一算读取了这个整数之后程序输出的结果。

Input

第一行是一个正整数,表示测试数据的组数,
每组测试数据只有一行,
包含一个整数。

Output

对于每组测试数据,输出一个整数,表示这个程序输出的结果。

Sample Input

3
0
1
-1

Sample Output

0
-1
1
Submit Status PID: 50998
#include<iostream>
#include<string>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{long long a,t;cin>>t;while(t--){cin>>a;cout<<-a<<endl;}return 0;
}

C. BQG's Approaching Deadline

Time Limit: 2000ms
Memory Limit: 32768KB
64-bit integer IO format:  %lld      Java class name:  Main
Submit Status PID: 50999
很快就到考试周了!但是可怜的平时过于认真训练,结果欠下了一大堆的作业,平时分岌岌可危!
现在从时刻开始做作业,一共有项作业,第项作业会在时刻布置下来(即当时可以做这一项作业),需要的时间完成(假设当时刻选择做这一项作业,那么当时不能选择做其他作业)。
决定尽快解决掉所有作业,因此在完成所有作业之前他不会去做其他事情,他想知道最早在什么时刻能完成所有作业。

Input

第一行是一个正整数,表示测试数据的组数,
对于每组测试数据,
第一行是一个正整数,表示作业的数量,
接下来行,
每行包含两个整数,表示作业布置的时刻和完成作业所需时间。

Output

对于每组测试数据,输出一个整数,表示最早完成所有作业的时刻。

Sample Input

2
3
0 1
1 2
2 3
2
0 1
2 3

Sample Output

6
5
Submit Status PID: 50999
#include<iostream>
#include<string>
#include<string.h>
#include<cmath>
#include<algorithm>
#include<map>
using namespace std;
int main()
{int t,a,n;cin>>t;while(t--){cin>>n;map<int,int> m;for(int i=0;i<n;i++){cin>>a;cin>>m[a];}int res=0;map<int,int> ::iterator it;for(it=m.begin();it!=m.end();it++){if(res>=it->first)res+=it->second;elseres=it->first+it->second;}cout<<res<<endl;}return 0;
}


D. BQG's Random String

Time Limit: 2000ms
Memory Limit: 32768KB
64-bit integer IO format:  %lld      Java class name:  Main
Submit Status PID: 51000
“Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。”——百度百科
但是初学要上手Vim并不是一件容易的事……问:如何生成一个随机的字符串?答:让新手退出Vim……
在一通乱按之后留下了一个只由大写字母构成的字符串,他想知道这个字符串里有多少个"QAQ"作为子串。
所谓“子串”,是指在原字符串中取出一个连续片段得到的新字符串,比如"BAB"是"ABABC"的子串,但是"AAC"不是。

Input

第一行是一个正整数,表示测试数据的组数,
每组测试数据只有一行,
包含一个长度且只包含大写字母的非空字符串。

Output

对于每组测试数据,输出一个整数,表示字符串中子串"QAQ"的个数。

Sample Input

5
Q
QAQ
QAQAQ
QQQQQQQ
QAQABCDEF

Sample Output

0
1
2
0
1
Submit Status PID: 51000
#include<iostream>
#include<string>
#include<string.h>
#include<cmath>
#include<algorithm>
#include<map>using namespace std;
int main()
{int t;cin>>t;string str="QAQ",a;while(t--){int cnt=0;string s;cin>>s;int len=s.length();for(int i=0;i<len-2;i++){a=s.substr(i,3);if(a==str)cnt++;}cout<<cnt<<endl;}return 0;
}

E. BQG's Complexity Analysis

Time Limit: 2000ms
Memory Limit: 32768KB
64-bit integer IO format:  %lld      Java class name:  Main
Submit Status PID: 51002
经过一番苦思冥想,终于想到了两个能够解决某个难题的算法和,基于某些原因(其实是因为太神啦!),算法的时间复杂度总是,其中是非负整数。
然而经过大量的脑力运动,可怜的已经意识模糊了,急需你的帮助,现在给出这两个算法的时间复杂度和,他想知道哪一个算法的时间复杂度更优。

Input

第一行是一个正整数,表示测试数据的组数,
每组测试数据只有一行,
包含两个字符串,中间用一个空格分隔,分别表示算法和的时间复杂度,
以下是一些约定,
每个字符串严格按照"O(n^k*(logn)^t)"(不含引号)的格式输入,
保证,且输入没有多余空格,
当且仅当出现如下情况时需要特殊处理,
(1),此时"n^k"将会被简略为"n",乘号将被省略,
(2),此时"(logn)^t"将会被简略为"logn",
(3)且,此时零次项以及乘号将被省略,
(4)且,此时输入串必定是"O(1)"(不含引号),
更多信息请参考样例。

Output

对于每组测试数据,输出一行,
如果更优请输出"First",如果更优请输出"Second",如果二者复杂度同阶请输出"Both"(均不含引号)。

Sample Input

7
O(logn) O(1)
O(logn) O((logn)^2)
O(n) O(n^2)
O(n^2) O(nlogn)
O(n(logn)^2) O(n^2*logn)
O(n^2*logn) O(nlogn)
O(n^2*(logn)^2) O(n^2*(logn)^2)

Sample Output

Second
First
First
Second
First
Second
Both
Submit Status PID: 51002



































  相关解决方案