Common Board#include <cstdio> #include <vector> #include <math.h> #include <cstdlib> #include <algorithm> using namespace std; double line_k(double x1, double y1, double x2, double y2) { double k = (y2 - y1)/(x2 - x1); return k; } double line_b(double x1, double y1, double x2, double y2) { double b = y2 - (y2 - y1) * x2 / (x2 - x1); return b; } bool is_on_line(double k, double b, double x, double y) { if (y <= x * k + b + 0.01 && y >= x * k + b - 0.01) return true; return false; } struct point{ double x,y; }; int main() { int n, counter = 2, max_zerosx = 0, max_zerosy = 0; double x, y, k, b; vector <point> koord; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%lf %lf", &x, &y); if (x == 0) max_zerosx++; if (y == 0) max_zerosy++; { koord.push_back(point()); koord[i].x = x; koord[i].y = y; } } int maximal = max(max_zerosx, max_zerosy); for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { k = line_k(koord[i].x, koord[i].y, koord[j].x, koord[j].y); b = line_b(koord[i].x, koord[i].y, koord[j].x, koord[j].y); for (int l = j + 1; l < n; l++) if (is_on_line(k, b, koord[l].x, koord[l].y)) counter++; if (counter > maximal) maximal = counter; counter = 2; } } printf("%d", maximal); return 0; } I got WA#8 too. But my solution uses integers only. What is the test? Edited by author 24.11.2015 03:27 How do you build lines when both points have the same X? Would you rather use not y=Ax+b but Ax+By+C=0 line equation? Also I think your epsilon - 0.01 - is too big. You can to avoid float numbers at all. Edited by author 24.11.2015 14:17 Edited by author 24.11.2015 14:17 This is not problem. My solution uses only integer values (there is no any epsilon), but it crashes on the same test Thanks alot, will try this! I got WA on test 8 because division by 0 when I tried to see if 2 vectors of the same root are collinear via checking ratio of x and y, should've just use multiplication Я написал рекурсию которая каждый раз делила отрезок на два и брала максимальный среди ответа всех таких отрезков которых поделила.(типо Merge Sort). У меня был memory limit на 3 тесте. Это значить рекурсия берет память? Да, берёт. Рекурсия хранит итерации в стеке. Не знаю, работает ли это с рекурсией, но для очистки ненужной памяти можно использовать эту библиотеку (если на Python): import gc gc.collect() # убираем ненужное Precision problem: try rounding intersection points or using epsilon when comparing points. Just Python's "split" training) Edited by author 18.08.2024 01:04 Problem is almost equal to 1203, there is really trivial solution if you now how to solve 1203. But rating of this problem is 711 and of 1203 is 82. It's strange) First 8 tests all cords are from -1000 to 1000, maybe it can help somebody) i'm really confusing by getting this verdict, i'm pretty sure in my skill so i think problem in compiler, isnt it? #include<iostream> using namespace std; int main() { string s; cin >> s; for(auto now : s) cout << 1; } How to do without palindromic tree??? Don't forget about the stars) I am so sorry that I don't know what is ac?This is my first time to come here.Please tell me.Thank you! AC == accepted TLE == time limit exceeded MLE == memory limit exceeded CE == compilation error WA == wrong answer That's what I knew ^^. N.M.Hieu Edited by author 08.05.2006 17:07 This task has some problems with accurancy, but 878 is too big rating for it. It's strange that 1377 has 295 rating while 1364 has 953 rating. Solutions are almost same) Given weighted undirected graph, every vertex has its country "C[v]" and money "V[v]". Let's call vertex "v" "responsible" if there exist at least one edge (v, u, cost) where C[v] == C[u]. Also, you can do this operation infinitely many times: Choose edge (v, u, cost), delete it, and add edge (k, u, cost), where C[u] == C[k] and u != k. After this operation make subtraction V[k] -= cost (of course after this operation V[k] must be >= 0). You need to maximize number of responsible vertices Edited by author 14.08.2024 13:04 |
|