然而并没有什么东西┑( ̄Д  ̄)┍

0%

[题解]2017重邮校赛初赛题解

10题AC6题,感觉自己简直渣渣Orz


1456 Problem A a x b (Ⅰ)

http://oj.cqupt.edu.cn/JudgeOnline/problem.php?id=1456

Description:

rt

Input:

本题有多组数据
每组数据有一行2个整数a, b(0<=a,b<=105), 由空格隔开
请处理到文件末尾

Output:

每组测试样例输出一行一个整数,表示a x b的结果

Sample Input:

2 3
4 5

Sample Output:

6
20

Official hint:

初入程序设计竞赛的您可能需要注意:

1.Wrang Answer?

可能爆int辣?

C/C++以及java中的int类型(32位有符号整数)能表示的范围为-2^31 ~ 2^31 - 1, 2^31约为2.147x10^9

unsigned int(32位无符号整数)表示的范围为0 ~ 2^32 - 1

您可能需要使用更大范围的类型,64位有符号整数,能表示到2^63 - 1, 约为9.233x10^18

C/C++为long long或__int64, 对应的格式控制符为%lld或%I64d(具体用哪个看测试平台,本oj请使用%lld)

java中为long

2.Time Limit Exceeded?

可能您并不知道如何处理文件末尾?

C可以利用scanf,gets等标准输入函数的返回值和EOF宏, 如while(scanf(“%d%d”, &a, &b) != EOF) { }

C++利用istream类>>运算符的返回值,如while(cin >> a >> b) { }
java可以利用Scanner类的hasNext方法

3.Presentation Error?
请严格按照输出格式进行输出,不要有多余的提示性语句(如”请输入一个整数”、”a x b =”等),行末不要有多余的空格

link

Answer:

签到题,直接大整数过。


1457 Problem B 多关键字排序

http://oj.cqupt.edu.cn/JudgeOnline/problem.php?id=1457

Description:

现在你有一组二维向量(a1,b1),(a2,b2),…,(an,bn)
请以第一维为第一关键字,第二维为第二关键字,将这组序列升序排序
设排序好的序列为(c1,d1),(c2,d2),…,(cn,dn),则应该满足:
对于任意0<i<j<=n,有ci < cj 或 ci == cj && di <= dj

Input:

多组数据,第一行给出数据组数T(T<=10)
每组数据第一行有一个整数n(0<n<=105),表示这组向量的个数
第二行给出n个向量,每个向量的格式为(ai,bi),(0<=ai,bi <= 105),向量之间由一个空格隔开

Output:

对于每组数据,输出排序后的结果,格式与输入保持一致

Sample Input:

1
3
(2,3) (1,5) (2,1)

Sample Output:

(1,5) (2,1) (2,3)

Official hint:

您们上课学的什么选择排序,简单插入排序,冒泡排序的时间复杂度都是O(n2),太高辣!会超时的!请使用更加优(fu)雅(za)的排序算法…

link

Answer:

感谢重大的WMW菊苣指导,教我怎么用C++(几百年没用过真的忘了)

这道题的坑点首先是格式化输入,Java和C++解析输入很麻烦,最优的办法还是用scanf格式化输入:
scanf(" (%d,%d)",&arr[i].first,&arr[i].second);
对于多了一个回车,可以用getchar()吸收,但是这道题多了一个空格。。。,所以在scanf中(%d,%d)前面其实是有一个空格的Orz

直接用sort进行快排,手写cmp函数,完工w


1458 Problem C 全排列

http://oj.cqupt.edu.cn/JudgeOnline/problem.php?cid=1021&pid=2

Description:

我们知道,正整数1n的排列方案数为排列数A(n,n) = n!
请按字典序输出1
n的所有排列方式

Input:

多组数据
每组数据有一行一个整数n(0<n<10)
请处理到文件末尾

Output:

按字典序输出1~n的所有排列方案,一行一个方案

Sample Input:

3

Sample Output:

123
132
213
231
312
321

Official hint:

字典序的含义可以从样例中猜出…

link

Answer:

递归树desu
之前忘处理等于0的情况然后就wa了233

//太困了去睡个午觉先。。。有空再写

//继续继续<-这午觉睡得真tm长


1460 Problem E a x b (Ⅱ)

http://oj.cqupt.edu.cn/JudgeOnline/problem.php?cid=1021&pid=4

Description:

rt

Input:

本题有多组数据
每组数据有一行2个整数a, b(0<=a,b<=10^1000), 由空格隔开
请处理到文件末尾

Output:

每组测试样例输出一行一个整数,表示a x b的结果

Sample Input:

2 3
4 5

Sample Output:

6
20

Official hint:

link

Answer:

还是一如既往的大整数过题


1461 Problem F 数据结构

http://oj.cqupt.edu.cn/JudgeOnline/problem.php?cid=1021&pid=5

Description:

请实现一个”线性”数据结构,支持以下操作:

  1. push_front x 在序列头部插入一个元素x
  2. push_back x 在序列尾部插入一个元素x
  3. pop_front 弹出序列头部元素
  4. pop_back 弹出序列尾部元素
  5. reverse 反转整个序列
  6. max 查询整个序列的最大值

Input:

单组数据
第一行有一个整数n(0<n<=105),表示操作数
接下来的n行,每一行为一个操作指令(在1和2类型的操作中,x为109内的正整数)

Output:

对于操作类型3和4,输出弹出的元素
对于操作类型6,输出查询结果
对于异常操作(序列为空时进行弹出操作或查询操作),输出Error

Sample Input:

8
pop_back
push_front 1
max
push_front 2
max
reverse
pop_back
max

Sample Output:

Error
1
2
2
1

Official hint:

Operation List Answer
pop_back [] Error
push_front 1 [1]
max [1] 1
push_front 2 [2 1]
max [2 1] 2
reverse [1 2]
pop_back [1] 2
max [1] 1

link

Answer:

直接用LinkedList进行模拟,但是有几个注意的地方:

  1. 不需要真的去反转,标志一个反转标志,需要反转的时候把1,2和3,4操作反转一下就可以了(不然会超时)
  2. 同理,不需要每次sort,我是直接准备了一个临时变量max来记录。。。
  3. 那么问题来了,如果maxpop()出去了怎么办,所以我还准备了一个secondMax。。。当然还有thirdMax。。。
  4. 除了这种智障的方法之外,还有很多奇技淫巧,但是目前来看时间复杂度还是我这个最高,但是时间复杂度都堪忧
  5. 对于异常处理都是用的try-catch,然后输出error

剩下的题都不会了Orz,本次题解就到此为止