Juego de simulación 5 (universal)
Número de pregunta | tema |
---|---|
T1 | compras |
T2 | intercambiar |
T3 | Movimiento mínimo |
T4 | Ludo |
1. Compras
Ideas para resolver problemas
violencia
Código AC
#include<cstdio>
using namespace std;
int t,n,k,x;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&k,&x);
int o=0,s=0;
while(n>0)//暴力
{
n--;//数量-1
o++;
s+=x;//钱
if(o>=k){
n--;o=0;}
}
printf("%d\n",s);
}
return 0;
}
2. Intercambio
Ideas para resolver problemas
Copie sy agréguelo al final de s,
luego búsquelo uno por uno para
ver el intervalo más largo de todos los 1.
Nota: Tome min con la longitud inicial de s; de lo contrario, la muestra será incorrecta si es 1
Código AC
#include<iostream>
#include<cstdio>
using namespace std;
int ans,o;
string s;
int main()
{
cin>>s;
s+=s;//复制
int l=s.size();
for(int i=0;i<l;i++)
{
if(s[i]=='1')//求全是1的区间长度
{
if(s[i]==s[i-1])o++;
else o=1;
}
else o=0;
ans=max(ans,min(l/2,o));//取min
}
printf("%d",ans);
return 0;
}
3. Movimiento mínimo
Ideas para resolver problemas
Primero podemos encontrar su valor promedio.
Si el valor promedio no es un número entero, la salida -1
y luego encontramos el número de veces desde cada punto al promedio.
Recuerde que si se cambia este punto, el siguiente punto debe cambiarse en la dirección opuesta.
Código AC
#include<cstdio>
#include<cmath>
using namespace std;
long long t,a[100005];
int main()
{
scanf("%lld",&t);
while(t--)
{
long long n,s=0,ans=0;
scanf("%lld",&n);
for(long long i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
s+=a[i];//求和
}
if(s%n!=0)printf("-1\n");//平均值特判
else
{
s/=n;
for(long long i=1;i<=n;i++)
{
ans+=abs(s-a[i]);//加距离
a[i+1]-=(s-a[i]);//减距离
}
printf("%lld\n",ans);
}
}
return 0;
}
4. Ajedrez volador
Ideas para resolver problemas
Ofrecer ideas ZYCdalao
No hecho
Juego de simulación 5 (mejora)
Prólogo: lo hice inexplicablemente, pensando que podría aumentar la calificación, pero también redujo mucho
Número de pregunta | tema |
---|---|
T1 | Cuenta de trillizos |
1. Cuenta triple
Ideas para resolver problemas
Enumere cada número violentamente, simplemente
reduzca el rango de enumeración.
Código AC
#include<cstdio>
using namespace std;
int n,ans;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n-2;i++)
{
int a=i;//a的值
for(int j=2;j<=n/a;j++)
{
int b=a*j; //b的值
for(int k=2;k<=n/b;k++)
ans++;
}
}
printf("%d",ans);
return 0;
}
para resumir
Estimación del examen (universal)
: 100 + 100 + 100 + 0 = 300
Real: 100 + 100 + 80 + 0 = 280 Estimación del
examen (mejora)
: 50
Real: 100
puede intentar mejorar, mucho tiempo