Competição de equipe, solução de problema de exclusão de personagens públicos

Índice

1. Competição por equipes

2. Exclua caracteres comuns 


1. Competição por equipes

Team Competition__Nioke.com (nowcoder.com)

responder:

Ponto-chave: O valor do nível da equipe é igual ao segundo valor de nível mais alto do jogador

Detalhes: valor do nível do jogador <= 10^9, intervalo de dados do tipo int < 2147483647, três 10^9 excederam o intervalo de dados int, então usamos o tipo long long para calcular o valor combinado.

        Para maximizar o valor combinado, precisamos obter o maior valor de segundo nível a cada vez, então devemos escolher 2 números grandes e 1 número decimal para nossa divisão e garantir que o valor de segundo nível seja o maior possível.

        É fácil pensar dessa maneira, só precisamos classificar os dados de pequeno para grande e pegar o segundo maior número de trás para frente .

 Supondo que existam n grupos, pesquise n vezes e o número de dados seja size. Na matriz, há uma fórmula para encontrar o segundo maior número: a[size-2*(i+1)]

 código:

#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main() {
    int n=0;
    while(cin>>n)
    {
        long long sum=0;
        vector<int>v;
        v.resize(3*n);
        for(int i=0;i<3*n;i++)
        {
            cin>>v[i];
        }
        //排序
        sort(v.begin(),v.end());
        for(int i=0;i<n;i++)
        {
            //公式:每次找划分第二大的数,划分最小数+2最大数,sum+第二大数
            sum+=v[v.size()-2*(i+1)];
        }
        cout<<sum<<endl;
    }
    return 0;
}

2. Exclua caracteres comuns 

Excluir caracteres comuns__Nioke.com(nowcoder.com)

responder:

Idéia: Para excluir caracteres comuns, precisamos apenas marcar os caracteres comuns. Ao percorrer a primeira string, se o caractere tiver sido marcado, ele será excluído. Podemos usar o mapeamento de hash (unordered_map também é OK), aqui usamos um matriz de 256 (os códigos ASCII têm 256 caracteres no total) tamanho int para estatísticas de mapeamento.

código:

#include <iostream>
#include<string>
using namespace std;

int main() {
    string str1;
    string str2;
    getline(cin,str1);
    getline(cin,str2);
    //采用哈希映射的思想
    int hash[256]={0};
    for(int i=0;i<str2.size();i++)
    {
        hash[str2[i]]++;
    }
    string res="";
    for(int i=0;i<str1.size();i++)
    {
        if(!hash[str1[i]])
            res+=str1[i];
    }
    cout<<res<<endl;
    return 0;
}

Acho que você gosta

Origin blog.csdn.net/bang___bang_/article/details/131765863
Recomendado
Clasificación