Ei, é uma pena, então fiz 2 perguntas e perdi 19 pontos ~~
A - Cartas de malabarismo
Conte o número de ocorrências de cada letra. Como a última a ser distribuída uniformemente em cada matriz, o número de ocorrências de cada letra deve ser um múltiplo de n
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
int cnt[30];
int main()
{
IO;
int T;
cin>>T;
while(T--)
{
memset(cnt,0,sizeof cnt);
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
for(auto t:s) cnt[t-'a']++;
}
bool ok=1;
for(int i=0;i<26;i++)
if(cnt[i]%n)
{
ok=0;
break;
}
if(ok) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}
B - Sequência de Potência
Esta pergunta é violenta. Não sei como superar a complexidade da metafísica.
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=100010;
const ll maxn=1e17;
ll a[N];
int main()
{
IO;
int n;
cin>>n;
ll maxa=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
maxa=max(maxa,a[i]);
}
sort(a,a+n);
ll res=maxn;
for(int i=1;i<=100000;i++)
{
ll cnt=abs(a[0]-1);
ll p=1;
bool ok=1;
for(int j=1;j<n;j++)
{
if(p>maxn/i)
{
ok=0;
break;
}
p=p*i;
cnt+=abs(p-a[j]);
}
if(ok) res=min(res,cnt);
}
cout<<res<<endl;
return 0;
}
C - múltiplos de comprimento
Pergunta muito boa para pensar, eu não esperava. . .
Primeiro, transforme todos os números de 1 a n-1 em múltiplos de n, de modo que eles a[i]+a[i]*(n-1)
sejam múltiplos de n. Então, o último número se torna 0 e a terceira parte elimina toda a matriz para 0
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=100010;
int n,a[N];
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
if(n==1)
{
cout<<1<<' '<<1<<'\n'<<-a[1]<<'\n';
cout<<1<<' '<<1<<"\n0\n";
cout<<1<<' '<<1<<"\n0\n";
}
else
{
cout<<1<<' '<<n-1<<'\n';
for(int i=1;i<=n-1;i++) cout<<1ll*a[i]*(n-1)<<' ';
cout<<'\n'<<n<<' '<<n<<'\n';
cout<<-a[n];
cout<<'\n'<<1<<' '<<n<<'\n';
for(int i=1;i<=n;i++)
{
if(i==n) cout<<0<<' ';
else cout<<-1ll*a[i]*n<<' ';
}
}
return 0;
}
Ao fazer o exame, eu queria alterar a primeira metade de len1 para um múltiplo de n e, em seguida, alterar a segunda metade de len2 para um múltiplo de n. Parece incerto se o adendo pode ser um múltiplo de n. Agora, exigimos ai + k 1 len 1 = k 2 n a_i + k_1len_1 = k_2numaEu+k1l e n1=k2n即k 1 len 1 + k 2 n = ai k_1len_1 + k_2n = a_ik1l e n1+k2n=umaEuDe acordo com o algoritmo euclidiano estendido, k 1 len 1 + k 2 n = gcd (len 1, n) k_1len_1 + k_2n = gcd (len_1, n)k1l e n1+k2n=g c d ( l e n1,n ) Seai% gcd (len 1, n) a_i \% gcd (len_1, n)umaEu% g c d ( l e n1,n ) não é 0, então não há solução. Então eu olhei para D e descobri que era como um jogo NIM (mais tarde se mostrou ganancioso), e aí eu não quis assistir e fui dormir.
Mas depois de ler a solução, descobri que selen 1 = n - 1 len_1 = n-1l e n1=n-1 , entãogcd (len 1, n) = 1 gcd (len_1, n) = 1g c d ( l e n1,n )=1 Não há situação insolúvel.
D - Jogo Stoned
Cada vez que ambas as partes escolhem a pilha com o maior número de pedras é a melhor solução. A fila de prioridade pode ser usada para simular o processo de busca de pedras. O código abaixo refere-se à solução do problema de YeHosea. Se a
pilha de pedras for mais da metade do total, a primeira mão vai ganhar. Se não ultrapassar a discussão de paridade, você pode
usar a tabela para encontrar a lei. A conclusão é a mesma que o código a seguir
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=110;
int n,a[N];
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>n;
int maxa=0;
int s=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
s+=a[i];
maxa=max(maxa,a[i]);
}
if(s-maxa<maxa||s%2==1) cout<<"T"<<endl;
else cout<<"HL"<<endl;
}
return 0;
}
Ao complementar as perguntas, descobri que div2 não foi muito difícil dessa vez, mas havia mais perguntas para pensar, então preciso me acalmar e pensar.
Vamos ~