PAT1002
This time, you are supposed to find A+B where A and B are two polynomials.
这一次,你被要求计算A+B当A和B是两个多项式的时候。
Input
Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial:
对于每一个输入文件包含一个测试用例,每个测试用例包含两行,每一行包含多项式的信息如下。
K N1 aN1 N2 aN2 ... NK aNK, where K is the number of nonzero terms in the polynomial,
Ni and aNi (i=1, 2, ..., K) are the exponents and coefficients, respectively.
It is given that 1 <= K <= 10,0 <= NK < ... < N2 < N1 <=1000.
Output
For each test case you should output the sum of A and B in one line,
with the same format as the input. Notice that there must be NO extra space at the end of each line. Please be accurate to 1 decimal place.
与输入格式相同的形式输出。注意,在每一行的结尾不要有多余的空格,请保留一位小数。
Sample Input
2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output
3 2 1.5 1 2.9 0 3.2
总结一下有几点,第一点题目意思需要读懂的同时注意题目的一些细节,比如需要保留小数。
这道题目在想的时候,其实需要一点考虑的是数据结构。
用什么样的数据结构去存会比较合理。
下面是我的思考过程,一开始我就想到的时候就觉得数组是最快的,存放固定的常数位置对应的指数,然后对应的相加。
看一下数据大小,1000,那么开1000大小的数组,然后最多数据是10+10个。也就是说,数组中会有很大一部分的空余。
确实很浪费空间。然后我在想不浪费的话就是线性表了,也就是链表,链表插入是没有问题的,主要的问题是查询,查询到相应的位置,然后加数据,或者插入数据,这样的话因为最多是20个数据,就算不用二分查询,最坏复杂度也能在N!
也就是(1+20)*20/2=210左右,比1000的数组循环一边要快。
这是对于数据结构的想法,但是具体的题目来说,做题讲究一些代码的复杂程度,用数组实现比较方便,所以我依旧选择使用数组完成。
下面是能过的代码。
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<string.h> using namespace std; float maps[]; int main()
{
int n,x;
float y;
int aN=;
cin>>n;
while (n--)
{
cin>>x>>y;
maps[x] = y;
aN++;
}
cin>>n;
while (n--)
{
cin>>x>>y;
if(maps[x] == )
aN++;
maps[x] += y;
if(maps[x] == )
aN--;
}
if(aN == )
{
cout<<aN;
return ;
}
else
{
cout<<aN<<" ";
}
for (int i = ; i >= ; i--)
{
if(aN == && maps[i] != )
{
printf("%d %.1f",i,maps[i]);
break;
}
else if(maps[i] != )
{
printf("%d %.1f ",i,maps[i]);
aN--;
}
}
return ;
}
然后提一些需要改进的地方。
输出的时候可以使用前缀空格输出。前面直接输出一个相数aN就行了,不用加空格。
printf(" %d %.1f",i,maps[i]);
这样可以减少判断最后输出格式的问题。
其中还要注意的是,多项式加法之后会出现0
所以会出现相数减少的情况,如果合并了,那么相数需要减少,这里我也错过,导致WA。
PAT1002的更多相关文章
- 浙大PAT-1002
1002. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式 ...
- PAT1002:A+B for Polynomials
1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue T ...
- PAT1002 写出这个数 (C++实现)
PAT乙级考试题目 1002 写出这个数 (20 分) 题目要求: 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 ...
- pat1002. A+B for Polynomials (25)
1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue T ...
- PAT 1001-1010 题解
早期部分代码用 Java 实现.由于 PAT 虽然支持各种语言,但只有 C/C++标程来限定时间,许多题目用 Java 读入数据就已经超时,后来转投 C/C++.浏览全部代码:请戳 本文谨代表个人思路 ...
- PAT (Advanced Level) Practice 1001-1005
PAT (Advanced Level) Practice 1001-1005 PAT 计算机程序设计能力考试 甲级 练习题 题库:PTA拼题A官网 背景 这是浙大背景的一个计算机考试 刷刷题练练手 ...
随机推荐
- jquery ui sortable 实现table,row的拖动。(Make Table Rows Sortable Using jQuery UI Sortable)
// Return a helper with preserved width of cells var fixHelper = function(e, ui) { //console.log(ui) ...
- CSS设置input placeholder文本的样式
placeholder是HTML5 input的新属性,英文意思是占位符,它一般表示input输入框的默认提示值. 下面是设置placeholder的文本样式的选择器的示例: /* webkit 浏 ...
- jquery的隐藏
HTML 代码:<form> <input type="text" name="email" /> <input type=&qu ...
- JSP之JavaBean
一.定义 1 JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法暴露给其它程序 ...
- HDU 5826 physics
该问题和xi,di均无关,碰撞只会使得速度反向,大小不会变.因此只要计算速度. #pragma comment(linker, "/STACK:1024000000,1024000000&q ...
- 《Windows驱动开发技术详解》之定时器
I/O定时器 I/O定时器是DDK提供的一种定时器.它每个1s钟系统会调用一次I/O定时器例程.I/O定时器例程运行在DISPATCH_LEVEL级别,因此在这个例程中不能使用分页内存,否则会引起页故 ...
- cPanel下载及安装信息 /usr/local/cpanel/bin/adduser-->realadduser
cPanel下载及安装信息 2011年03月31日 发布在 编程开发 留下评论 说到cPanel,懂的人都知道玩意得研究研究. ISO安装 http://layer2.cpanel.net/Cen ...
- git分支--branch
分支创建: $ git branch testing 显示分支: $ git branch iss53 * master testing 如果需要查看每一个分支的最后一次提交 $ git branch ...
- hdu_5791_Two(DP)
题目链接:hdu_5791_Two 题意: 给你两串数列,问你相同的子序列有多少个,要注意,可以重复,比如1 和1 1 1 ,相同的子序列为3个 题解: 就和求最长公共子序列差不多,只不过要全部加起来 ...
- Educational Codeforces Round 15_B. Powers of Two
B. Powers of Two time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...