Programa de marketing de la Ronda 97 1437A de Codeforces Educativos

Enlace de tema

Inserte la descripción de la imagen aquí

Traducción del título:

Conseguiste un trabajo como vendedor de una tienda de mascotas. Su tarea actual es aumentar las ventas de comida para gatos. Una de las estrategias es empaquetar varias latas de comida para gatos en un solo producto y venderlas con descuentos para atraer usuarios.
Suponga que decide empaquetar una lata de comida para gatos en un producto, y cuando algunos clientes quieran comprar x lata de comida para gatos, entonces comprará de acuerdo con la siguiente estrategia codiciosa:

  • Primero comprará [x / a] productos empaquetados porque hay un descuento.
  • Luego compra las latas restantes (x mod a), una por una.

[x / a] significa que x divide a (redondeado hacia abajo), y x mod a significa que x toma el resto de a.
Pero el cliente también es muy codicioso, así que si el cliente quiere comprar x mod una lata de comida para gatos y (x mod a) ≥ a / 2, entonces comprará directamente una lata de comida para gatos (en lugar de comprar x mod a Latas de comida para gatos). Esto te hará feliz, porque el cliente compró más latas de las que quería comprar en primer lugar.
Usted ya sabe que cada cliente va a comprar l a r latas de comida para gatos (incluyendo L y R) en su tienda . ¿Puede determinar un valor, de modo que los clientes compraron más productos enlatados que el número que inicialmente quería comprar?

Ideas de resolución de problemas:

En primer lugar, podemos determinar que el valor de a no está entre [l, r] . Si el valor de a está entre [l, r] , entonces el cliente puede optar directamente por comprar una lata de comida para gatos, de modo que al final solo comprará una lata de comida para gatos y no comprará más.
Si un valor es mayor que R & lt , un MOD X es igual a x, siempre que l> = a / 2 en él, y un valor mínimo de R & lt +. 1 , siempre que l * 2> = a , es decir, l * 2 Cuando> r , sin importar la suma de x, el cliente final comprará más.
Si el valor de a es menor que l , no parece muy fácil de analizar.

Código:
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<cstdio>
#include<cmath>
#define inf 0x3f3f3f3f
using namespace std;
int main(){
    
    
//	freopen("1.txt","r",stdin);
	int t,l,r;
	cin>>t;
	while(t--){
    
    
		cin>>l>>r;
		if(l*2<=r){
    
    
			cout<<"NO"<<endl;
		}else{
    
    
			cout<<"YES"<<endl;
		}
	}
	return 0;
}

Supongo que te gusta

Origin blog.csdn.net/lmmmmmmmmmmmmmmm/article/details/109327378
Recomendado
Clasificación