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

C. Success Rate - Codeforces

Object Storage Arubacloud
0 głosów
68 wizyt
pytanie zadane 21 stycznia w Algorytmy przez Szyszka Gaduła (3,490 p.)
edycja 21 stycznia 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 przez Whistleroosh Maniak (56,980 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 przez Szyszka Gaduła (3,490 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 46 wizyt
pytanie zadane 10 marca w Algorytmy przez Dani Obywatel (1,450 p.)
0 głosów
1 odpowiedź 86 wizyt
pytanie zadane 31 grudnia 2023 w Algorytmy przez Szyszka Gaduła (3,490 p.)
0 głosów
0 odpowiedzi 165 wizyt

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,962 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...