蓝桥真题:后缀表达式、平面切分

正文

后缀表达式

题目描述

时间限制: 1.0s 内存限制: 512.0MB 本题总分:25 分

【问题描述】 

给定 N 个加号、M 个减号以及 N + M + 1 个整数 A1,A2,··· ,AN+M+1,
小明想知道在所有由这 N 个加号、M 个减号以及 N + M +1 个整数
凑出的合法的后缀表达式中,结果最大的是哪一个?
请你输出这个最大的结果。 
例如使用1 2 3 + -,则 “2 3 + 1 -” 这个后缀表达式结果是 4,是最大的。

【输入格式】
第一行包含两个整数 N 和 M。 第二行包含 N + M + 1 个整数 A1,A2,··· ,AN+M+1。

【输出格式】
输出一个整数,代表答案。

【样例输入】 
1 1 1 2 3
【样例输出】 
4
【评测用例规模与约定】 
对于所有评测用例,0≤ N,M ≤100000,−109 ≤ Ai ≤109

题目思路及代码

分两种情况:

  • 第一种:没有负号的情况,直接所有相加就可以了。
  • 第二种情况:有加号有负号,无论你怎么输入,我们都可以拿最大值减去最小值然后加上剩下数的绝对值即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll maxn=1e6+10;
ll n,m;
ll a[maxn],b[maxn];
ll cnt;
ll sum=0,sum1;
ll cnt1=0;
int main(){
    
    
    cin>>n>>m;
    for(int i=1;i<=n+m+1;i++){
    
    
        cin>>a[i];
        sum1+=a[i];
    }
    sort(a+1,a+1+n+m+1);
    if(m==0)cout<<sum1;
    else{
    
    
        sum=a[n+m+1]-a[1];
        for(int i=2;i<=n+m;i++){
    
    
            sum+=abs(a[i]);
        }
        cout<<sum;
    }
    return 0;
}

平面切分

题目描述

问题描述
平面上有 条直线,其中第 条直线是 。

请计算这些直线将平面分成了几个部分。

输入格式
第一行包含一个整数 。

以下N行,每行包含两个整数 。

输出格式
一个整数代表答案。

样例输入
3
1 1
2 2
3 3
Data
样例输出
6

题目思路及代码

思路:首先通过set容器对输入的数据进行去重,根据“每增加一条直线,对平面数增加的贡献值,是其与先前直线的交点数(不包括与已有交点重合的点)+1 ”的结论进行累加,最后输出结果即可。
代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef pair<double,double> P;
set<P> se;
const ll maxn=1e6+10;
ll n;
ll a[maxn],b[maxn];
int main(){
    
    
    cin>>n;
    for(int i=1;i<=n;i++){
    
    
        ll x,y;
        cin>>x>>y;
        se.insert(make_pair(x,y));
    }
    int n=0;
    for(set<P>::iterator it=se.begin();it!=se.end();it++){
    
    
        a[n]=(*it).first;
        b[n]=(*it).second;
        n++;
    }
    se.clear();
    ll ans=2;
    for(int i=1;i<n;i++){
    
    
        for(int j=i-1;j>=0;j--){
    
    
            if(a[i]==a[j])continue;
            double x=(b[i]-b[j])*1.0/(a[j]-a[i]);
            double y=a[i]*(x)+b[i];
            se.insert(make_pair(x,y));
        }
        ans+=se.size()+1;
        se.clear();
    }
    cout<<ans;
    return 0;
}

结语


“遇事不决可问春风,春风不语即随本心”的意思是:对一件事犹豫不决,就问春风该如何做,春风给不出答案,就凭自己本心做出决断。“遇事不决可问春风,春风不语即随本心”一句出自网络作家“烽火戏诸侯”的《剑来》,其原文是:“遇事不决,可问春风。春风不语,遵循己心”。

在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/weixin_46627433/article/details/124028762