PAT准备之2018.7.24

昨天被我划水滑过去了,今天终于完成了救赎,基本没有划水,一直在认真的学习,今天也做了不少题,发现自己还是有很多知识点薄弱的地方,还是基础不太好吧,以前总觉得自己这些东西都会,结果发现真到自己用的时候,真的是不会。。。唉!这个暑假再把基础知识补一补吧。今天也是做了三道题。如下1007MaximumSubsequenceSum(25)(25分)Givenasequenceo…

大家好,又见面了,我是你们的朋友全栈君。

昨天被我划水滑过去了,今天终于完成了救赎,基本没有划水,一直在认真的学习,今天也做了不少题,发现自己还是有很多知识点薄弱的地方,还是基础不太好吧,以前总觉得自己这些东西都会,结果发现真到自己用的时候,真的是不会。。。
唉!这个暑假再把基础知识补一补吧。今天也是做了三道题。如下
1007 Maximum Subsequence Sum (25)(25 分)
Given a sequence of K integers { N~1~, N~2~, …, N~K~ }. A continuous subsequence is defined to be { N~i~, N~i+1~, …, N~j~ } where 1 <= i <= j <= K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements. For example, given sequence { -2, 11, -4, 13, -5, -2 }, its maximum subsequence is { 11, -4, 13 } with the largest sum being 20.

Now you are supposed to find the largest sum, together with the first and the last numbers of the maximum subsequence.

Input Specification:

Each input file contains one test case. Each case occupies two lines. The first line contains a positive integer K (<= 10000). The second line contains K numbers, separated by a space.

Output Specification:

For each test case, output in one line the largest sum, together with the first and the last numbers of the maximum subsequence. The numbers must be separated by one space, but there must be no extra space at the end of a line. In case that the maximum subsequence is not unique, output the one with the smallest indices i and j (as shown by the sample case). If all the K numbers are negative, then its maximum sum is defined to be 0, and you are supposed to output the first and the last numbers of the whole sequence.

Sample Input:

10
-10 1 2 3 4 -5 -23 3 7 -21
Sample Output:

10 1 4
求区间最大字段和,很早就做过的题,最开始忘记枚举的怎么搞了。写了一个NlogN的,每次把前缀和放入一个堆中,维护小顶堆,每次取出与其相减,相当于求出到当前位置的最大区间和了,然后不断更新这个值。觉得很对,但是不知道为啥有一个点没过,有点难受。。

然后更改为了标准的解法,其实更加好写了,只要不断记录sum就行了,不过要注意最后的最大区间和可能是0。不能直接单独判断。

代码如下:

#include<bits/stdc++.h>

using namespace std;
const int MAX = 10010;
typedef long long ll;
ll x[MAX];
int N;
int main(void){
    cin >> N;
    for(int i=0;i<N;++i){
        cin >> x[i];
    }
    ll s = 0;
    ll Max = -1;
    int l = 0,r = N-1;
    int index = 0;
    bool isok = false;
    for(int i=0;i<N;++i){
        if(x[i] >= 0){
            isok = true;
        }
        s += x[i];
        if(s < 0){
            s = 0;
            index = i+1;
        }
        else if(s > Max){
            Max = s;
            l = index;
            r = i;
        }
   // cout << "s = " << s << " l = " << l << " r =" << r << " Max= " << Max << endl;
    }
    if(Max < 0){
        cout << 0 << " " << x[0] << " " << x[N-1] << endl;
    }
    else{
        cout << Max << " " << x[l] << " " << x[r] << endl;
    }
    return 0;
}

1008 Elevator (20)(20 分)
大水题一道,没什么好说的。代码也不粘了。

1009 Product of Polynomials (25)(25 分)
This time, you are supposed to find A*B where A and B are two polynomials.

Input Specification:

Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial: K N1 a~N1~ N2 a~N2~ … NK a~NK~, where K is the number of nonzero terms in the polynomial, Ni and a~Ni~ (i=1, 2, …, K) are the exponents and coefficients, respectively. It is given that 1 <= K <= 10, 0 <= NK < … < N2 < N1 <=1000.

Output Specification:

For each test case you should output the product 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 up to 1 decimal place.

Sample Input

2 1 2.4 0 3.2
2 2 1.5 1 0.5
Sample Output

3 3 3.6 2 6.0 1 1.6

两个多项式相乘,也没什么好说的,坑点就是系数为0时要提前计数,不要把它也计算当中。

代码如下:

#include<bits/stdc++.h>

using namespace std;
const int MAX = 110;
const double eps = 1e-6;
class Node{
public:
    int k;
    double v;
};
Node q[MAX],p[MAX];
map<int,double> mp;

int main(void){
    int N,M;
    cin >> N;
    for(int i=1;i<=N;++i){
        cin >> q[i].k >> q[i].v;
    }
    cin >> M;
    for(int i=1;i<=M;++i){
        cin >> p[i].k >> p[i].v;
    }
    for(int i=1;i<=N;++i){
        for(int j=1;j<=M;++j){
            mp[q[i].k+p[j].k] += q[i].v*p[j].v;
        }
    }
    int sum = 0;
    for(map<int,double>::iterator it = mp.begin();it != mp.end();++it){
        if(abs(it->second-0) < eps)
            continue;
        sum++;
    }
    cout << sum;
    for(map<int,double>::reverse_iterator it = mp.rbegin();it != mp.rend();++it){
        if(abs(it->second-0) < eps)
            continue;
        cout << " " << it->first << " ";
        cout << fixed << setprecision(1) << it->second;
    }
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/127471.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月9日 下午8:40
下一篇 2022年4月9日 下午8:40


相关推荐

  • 我的第一款app

    上周末,也就是儿童节期间,窝在宿舍里敲了两天的代码,终于算是弄好了这个小游戏,虽然很简陋,被评为”看起来只需要一百行代码吧”,但确实消耗了我不少精力,成功消灭最后一个bug的时候,那种心情是无法言语的,兴奋激动.真的很高兴.地址贴上来,感兴趣的下了玩玩吧. 沙皮龙工作室 欢迎志同道合的孩子加入.虽然现在只我一人.我的第一款app地址最近几天考试继踵而至,数据结构,英语六级,还有通信原理

    2022年3月9日
    55
  • SSM的简介

    SSM的简介SSM的简介

    2022年4月22日
    50
  • Java集合篇:Vector

    Java集合篇:Vector

    2021年10月4日
    43
  • 怎么用谷歌学术检索下载外文文献呢_谷歌中的外文文献如何引用呢

    怎么用谷歌学术检索下载外文文献呢_谷歌中的外文文献如何引用呢谷歌学术检索可以输入文献的篇名、关键词、参考文献、ISBN/ISSN、DOI等检索条件来检索,记得需要输入文字的都要用英文。一、下面举例演示下使用谷歌学术的过程,我用的是文献党下载器访问的谷歌学术,首先进入文献党下载器资源库双击“谷歌学术”名称,进入谷歌学术首页:

    2022年10月11日
    4
  • php模糊查询技术「建议收藏」

    php模糊查询技术「建议收藏」     查询可分为精确查询【返回结果有且仅有一条】                      模糊查询【返回结果不确定】      在下面的讲述中我们主要讲解模糊查询        在生活中,我们身边有很多的信息源,我们需要筛选出与自己相关的信息,例如相同的兴趣爱好,来进行与自己的信息匹配。 这是在生活中的模糊查询的一个体现。在项目模糊查询中相对来说就更多了,例如web网页中的一…

    2022年5月26日
    37
  • Navicat:Access violation at address xxxxxxxxx in module ‘navicat.exe‘.Read of address xxxxxx

    Navicat:Access violation at address xxxxxxxxx in module ‘navicat.exe‘.Read of address xxxxxxNavicat:Accessviolationataddressxxxxxxxxxinmodule’navicat.exe’.Readofaddressxxxxxx在navicat中如果报了这个错误,则表示内存越界,需要重新注册windows的动态链接库;解决方案:打开cmd;在命令行中输入for%1in(%windir%\system32\*.dll)doregsvr32.exe/s%1回车运行;等待动态链接库刷新完成,重启mysql和navi.

    2022年8月22日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号