• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C. Success Rate - Codeforces

Aruba Cloud - Virtual Private Server VPS
0 głosów
123 wizyt
pytanie zadane 21 stycznia 2024 w Algorytmy przez Szyszka Gaduła (3,510 p.)
edycja 21 stycznia 2024 przez Szyszka

Witam,
Próbuje to rozwiązać: https://codeforces.com/problemset/problem/807/C

Ale nie przychodzi mi nic do głowy co wpasowywałoby się w wymagania co do złożoności, konkretnie logarytmicznej.

Namachałem funkcję do sprawdzenia czy konkretna liczba może rozwiązuje problem, wygląda tak:

long long GCD(long long a, long long b) {
	if (b == 0)
		return a;

	return GCD(b, a % b);
}

long long LCM(long long a, long long b) {
	return (a * b) / GCD(a, b);
}

bool check(int x, int y, int p, int q, int k) {
	int left = 0;
	int right = k;

	while (left <= right) {
		long long wins = (1LL * left + right) / 2;

		long long x2 = x + wins;
		long long y2 = y + k;

		long long lcm = LCM(y2, q);
		x2 = x2 * (lcm / y2);
		y2 = lcm;

		long long p2 = p;
		long long q2 = q;

		p2 = p2 * (lcm / q2);
		q2 = lcm;

		if (x2 == p2 && y2 == q2)
			return true;
		else if (x2 > p2)
			right = wins - 1;
		else
			left = wins + 1;
	}

	return false;
}

Czyli sprowadzam liczby do wspólnego mianownika dodając konkretną ilość wygranych do ogółu, używając binary searcha. Potem używam tej funkcji check w pętli O(y) i pokolei sprawdzam każdą możliwą liczbę. Nie dość, że to nie zawsze działa, to jeszcze jest za wolne. Jakieś pomysły?
 

1
komentarz 23 stycznia 2024 przez Whistleroosh Maniak (57,400 p.)
Jakby co do prawie wszystkich zadań na codeforces są rozwiązania w zakładce "Tutorials". To zadanie akurat idzie z bin searcha, ale trochę innego.
1
komentarz 23 stycznia 2024 przez Szyszka Gaduła (3,510 p.)
O dzięki, nie wiedziałem. Schowali to całkiem na dole :D  Takie proste zadanie, ale jak zwykle trzeba było sobie utrudnić :/ Dzięki!

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 267 wizyt
pytanie zadane 10 marca 2024 w Algorytmy przez Dani Obywatel (1,450 p.)
0 głosów
1 odpowiedź 225 wizyt
pytanie zadane 31 grudnia 2023 w Algorytmy przez Szyszka Gaduła (3,510 p.)
0 głosów
0 odpowiedzi 238 wizyt

93,326 zapytań

142,323 odpowiedzi

322,391 komentarzy

62,655 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...