2020.10.09个人赛

题目:High School: Become Human

思路:

这道题就是问一下xy ,与 yx的大小关系,看完数据,这个肯定是不能直接算的,所以肯定是要同时取对数,将次数放下来,这样就很好比较了,我做这道题时,脑门一热,自以为是的认为只有 x = y时才会相等,忘记了  24=42 ,菜鸡落泪。

解题代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <map>
#include <set>
using namespace std;
const long long N = 1e10 + 7;
const int maxn = 2e5 + 5;
const long long INF = 8e18;
typedef long long ll;
#define for0(i,n) for(int i = 0;i < n;i++)
#define for1(i,n) for(int i = 1;i <= n;i++)
map<string,int>ma;

int main()
{
    ll x,y;
    cin >> x >> y;
    if(x == y)
        cout << "=" << endl;
    else{
        if(y * log(x) >  x * log(y))
            cout << ">" << endl;
        else if(y * log(x) < x * log(y))
            cout << "<"  << endl;
        else
            cout << "=" << endl;


    }


    return 0;
}

题目:Three displays

思路:

这道题就是找三个物品,编号 i<j<k ,并且三者的花费符合 ci < cj < ck ,问最小花费,若不存在输出-1,这个通过遍历中间位置来更新最小花费,向前找小于它的,向后找大于它的,维护最小值就行。

解题代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <map>
#include <set>
using namespace std;
const long long N = 1e10 + 7;
const int maxn = 2e5 + 5;
const long long INF = 8e18;
typedef long long ll;
#define for0(i,n) for(int i = 0;i < n;i++)
#define for1(i,n) for(int i = 1;i <= n;i++)
struct p{
    int s;
    ll c;
}pp[3010];

int main()
{
    ios::sync_with_stdio(false);
    ll minnum = INF;
    int n,sign = 0;
    cin >> n;
    for(int i = 0;i < n;i++)
        cin >> pp[i].s;
    for(int i = 0;i < n;i++)
        cin >> pp[i].c;
    int sign1,sign2;
    for(int i = 1;i < n-1;i++){
        ll num = pp[i].c;
        sign1 = 0,sign2 = 0;
        ll tempmin1 = INF;
        ll tempmin2 = INF;
        for(int j = 0;j < i;j++){
            if(pp[j].s < pp[i].s){
                tempmin1 = min(tempmin1,pp[j].c);
                sign1 = 1;
            }

        }
        for(int j = i+1;j < n;j++){
            if(pp[j].s > pp[i].s){
                tempmin2 = min(tempmin2,pp[j].c);
                sign2 = 1;
            }

        }
        if(sign1 && sign2){
            sign = 1;
            num += tempmin1;
            num += tempmin2;
            minnum = min(minnum,num);
        }
       
    }
    
    if(sign)
        cout << minnum << endl;
    else
        cout << -1 << endl;

    return 0;
}

 

posted @ 2020-10-18 16:12  emhhbw==  阅读(86)  评论(0)    收藏  举报