Common Board| Show all threads Hide all threads Show all messages Hide all messages | | TO ADMINS | andreyDagger`~ | 1000. A+B Problem | 26 Jan 2025 15:07 | 3 | Why is this code gives Runtime Error? I think it's not a problem to allow participants use exceptions, as long as they are not throwing it out of main: #include <iostream> int main() { int a, b; std::cin >> a >> b; try { throw std::exception(); } catch (...) {} std::cout << a + b << "\n"; } For some old C++ compilers it was impossible to determine whether the exception is caught or not. At the same time there are very little practical use cases for using exceptions in C++ solutions. So, there was no reason in trying to fix the issue. I don't know if the modern compilers already made it possible to determine. But even if they do I would still keep this feature disallowed because it takes reasonable effort to verify that a not so popular feature works properly on each new version of each of the C++ compilers. Thanks for clarification. I was solving problem 1074 and thought it is a good idea to throw exception if parsing is failed somewhere in the depth of recursion. But yeah, this is the only problem from all of the archive where I wanted to use exceptions | | To Admins: Please, update Go(lang) compiler! | Aleksei Chernenkov | | 26 Jan 2025 11:32 | 1 | Hello! The latest update of compilers (in Jan 2024) missed Go(lang). Please, update it! Thank you very much! Edited by author 26.01.2025 11:33 | | Think simpler | sailingoat | 2199. Company Question | 24 Jan 2025 19:32 | 1 | Persistent segment tree is NOT NEEDED! | | Help WA44 | sailingoat | 2199. Company Question | 24 Jan 2025 19:04 | 1 | | | To admins: extending Python guide | Yury_Semenov | | 24 Jan 2025 05:13 | 2 | Recent Python versions contain a dangerous pitfall for people who use Python for solving bigint problems: https://docs.python.org/3/library/stdtypes.html#int-max-str-digits In short, converting large integers to string raises an exception unless you explicitly raise the limit with sys.set_int_max_str_digits(1000000). Since Python is quite popular for bigint problems and this pitfall is very easy to miss, especially when you have an older version locally, I suggest mentioning it in the Python guide. Thanks for pointing this out. I added this information to the Guide. | | To admins: Weak tests in problem 1514 | ixiolirion | 1514. National Park | 22 Jan 2025 05:08 | 2 | 8 0 0 10 0 5 10 15 10 16 11 166674 0 166675 10 1000000 0 My ACed program gives 32.3606797749979, but it should be 22.459574579560357. Your test added. 4 authors lost accepted solutions after the rejudge. Thanks! | | No tests when commission rate = 100? | v3n1v1c11v1c1 | 1283. Dwarf | 22 Jan 2025 04:44 | 2 | My two programs produce different results when initial gold > bad gold and commission rate is 100. 1. 10816824 2. 10816938 In fact, the commission rate is never 100 in the tests. I changed the problem statements to reflect that. I decided not to add such tests because it would affect a significant number of accepted solutions with a particular algorithm where this matters, while the solutions using other algorithms would stay unaffected. | | Is sample correct? | Oleg Alexeev | 2199. Company Question | 20 Jan 2025 22:21 | 2 | Why for Q: 1 6 the answer is 5 6 and not 2 6 ? Having input "17 11 -1 -4 20 -24" for 5 6 we have 20 -24 = -4 and for 2 6 we have 11 -1 -4 +20 -24 = 2 why -4 is better than 2? Because we need to find 2 separate indexes i < j : |a[i] + a[j]| is minimal. Not sum of segment |a[i]+a[i+1]+...+a[j]|, but only 2 numbers a[i] and a[j]. | | Test 4 | Flamel | 2182. Broken Rum | 19 Jan 2025 17:15 | 1 | Test 4 Flamel 19 Jan 2025 17:15 Guys please help with test 4 Can't pass it Admin! Please give test 4 Edited by author 19.01.2025 18:48 | | easy bfs | ~'Yamca`~ | 2174. Dualism of Numbers | 18 Jan 2025 19:12 | 1 | | | New problems 2174-2199 | Sandro (USU) | | 17 Jan 2025 01:47 | 1 | Selected problems from Ural contests of the last few years were added to the Problem set. | | Any hints? | Zergatul | 2119. Tree Hull | 16 Jan 2025 00:08 | 4 | My thoughts for now: - Generate list of parents for every node, as well as weight sum (2nd parent, 4th parent, 8th parent and so on). This will allow to calculate weight sum between two nodes in O(log N) - Implement LCA (better with O(1) time?) - Store root of subtree in variable - When new node comes, find LCA(new node, subtree root). 2 variants here: 1) LCA = new node (need to add sum of weights from new subtree root to previous subtree root) 2) LCA = existing subtree root. What to do here? - When we remove node? Sort v_i by depth-first order. d[v_i] is the sum of weights from the root to v_i The answer, when there are n nodes, is: sum_{i=1}^{n} d[v_i] - d[LCA(v_i, v_{i+1})]; where v_{n+1}:=v_1 Implement these operations using std::set with a custom comparator that orders vertices using depth-first order. The proof of the formula is left to the reader as an exercise. WOW, that's really smart. Thank you | | If you have WA @ 14 | sailingoat | 1527. Bad Roads | 15 Jan 2025 10:01 | 1 | Note that there can be parallel edges, hence it is wrong to imply degree <= 100 | | No need for Johnson or Hungarian. | sleepntsheep | 1076. Trash | 14 Jan 2025 11:12 | 1 | SPFA with edmond karp is enough. AC 0.06 (test might be weak) | | Can somebody send me a good algo of min cost max matching? I've found only O(N^4) | vladu adrian | 1076. Trash | 14 Jan 2025 10:15 | 12 | Can somebody send me a good algo of min cost max matching? I've found a solution, but it runs in O(n^4), so I get time limit exceeded for some tests. > I've used a Hungarian algo that I've found on the NET. I don't know if it's correct because, for some tests it cycles to the infinite because no modifications can be done. Please, could somebody give me an algo that works? Here's my source. Usually it works fine but, as I said, in some cases it doesn't work. program trash; const nmax = 150; var a, d : array [1..nmax, 1..nmax] of integer; s : array [1..nmax] of integer; nz : array [1..nmax] of byte; m, b : array [1..nmax, 1..nmax] of boolean; hasm, found : boolean; mlin, mcol : array [1..nmax] of boolean; ming1 : integer; sum : longint; N, i, j : byte; procedure readdata; begin { assign(input, 'trash.in'); reset(input);} fillchar(s, sizeof(s), 0); readln(N); for i:=1 to N do begin for j:=1 to N do begin read(d[i,j]); inc(s[i], d[i,j]); end; for j:=1 to N do begin a[i,j]:=s[i]-d[i,j]; d[i,j]:=a[i,j]; end; readln; end; { close(input);} end; procedure DoZero; var i, j : byte; min : integer; begin for i:=1 to N do begin min:=a[i,1]; for j:=2 to N do if a[i,j]<min then min:=a[i,j]; for j:=1 to N do dec(a[i,j], min); end; for j:=1 to N do begin min:=a[1,j]; for i:=2 to N do if a[i,j]<min then min:=a[i,j]; for i:=1 to N do dec(a[i,j],min); end; end; function DoMark:boolean; var i, j, k, min, r : byte; begin fillchar(nz, sizeof(nz), 0); fillchar(m, sizeof(m), 0); fillchar(b, sizeof(b), 0); for i:=1 to N do for j:=1 to N do if a[i,j]=0 then inc(nz[i]); for k:=1 to N do begin {choose a row with min 0's} min:=255; for i:=1 to N do if (nz[i]>0)and(nz[i]<min) then begin min:=nz[i]; r:=i; end; if min=255 then begin DoMark:=false; exit; end; j:=1; nz[r]:=0; while (a[r,j]<>0)or(b[r,j]) do inc(j); m[r,j]:=true; {is marked} for i:=j+1 to N do if (a[r,i]=0) then b[r,i]:=true; for i:=1 to N do if (i<>r)and(a[i,j]=0) then begin b[i,j]:=true; dec(nz[i]); end; end; DoMark:=true; end; begin readdata; DoZero; while not DoMark do begin fillchar(mlin, sizeof(mlin), false); fillchar(mcol, sizeof(mcol), false); for i:=1 to N do begin hasm:=false; for j:=1 to N do if m[i,j] then begin hasm:=true; break; end; if not hasm then mlin[i]:=true; end; repeat found:=false; for i:=1 to N do if mlin[i] then for j:=1 to N do if (b[i,j])and(mcol[j]=false) then begin mcol[j]:=true; found:=true; end; if found then for j:=1 to N do if mcol[j] then for i:=1 to N do if (m[i,j])and(not mlin[i]) then begin mlin[i]:=true; found:=true; end; until not found; {i've made the marking} ming1:=maxint; for i:=1 to N do for j:=1 to N do if (mlin[i])and(not mcol[j])and(a[i,j]<ming1) then ming1:=a[i,j]; for i:=1 to N do for j:=1 to N do if (mlin[i])and(not mcol[j]) then dec(a[i,j], ming1); for i:=1 to N do for j:=1 to N do if (not mlin[i])and(mcol[j]) then inc(a[i,j], ming1); end; sum:=0; for i:=1 to N do for j:=1 to N do if m[i,j] then inc(sum, d[i,j]); writeln(sum); end. But how? Its complexity is O(n^4). I got TLE. Please, someone, tell me how to do it. no text Edited by author 12.12.2007 00:40 Usual mincost maxflow got easily AC here. I used maxflow with dijkstra to path searching. Dijkstra works O(n^2) ant increases flow by 1 eachtime. So we need only O(n) dijkstras to reach maxflow. Whole complexivity is O(n^3). In c++ is works for 0.171sec. How can you use Dijkstra since there are some edges which have minus values(values <0)? I used Bellman-Ford algo, and it doesn't run out of time. Use Dejkstra with potenciales. Modify weigth of eadges ... It's standart algorithm. I use SPFA but my problem got TLE with TEST#4 Testing machine is so fast now that an O(N^4) algo gets AC in less than 0.5s. Hungarian: 15ms Min cost flow with Dijkstra: 171 ms Min cost flow with optimized Bellman-Ford: 109 ms ¯\_(ツ)_/¯ What? How can min-cost flow with Dijkstra be used if negative edge exists (in residual graph)? Edit: Is it used with Johnson's potential. Edited by author 14.01.2025 10:15 | | TL#19 | sleepntsheep | 1569. Networking the “Iset” | 13 Jan 2025 22:25 | 2 | TL#19 sleepntsheep 13 Jan 2025 21:59 my O((M+N)^2) solution TL#19. Can I have hints on faster solution? | | RTE, Any Idea? | Tiojuan | 1016. Cube on the Walk | 13 Jan 2025 07:03 | 1 | | | AC! + hint on avoiding TLE. | sleepntsheep | 2055. Urban Geography | 12 Jan 2025 23:31 | 1 | good problem. dynacon! To avoid TLE: Use dynamic array instead of linked list for better locality. Break early when a first spanning tree is found. (important). Edited by author 12.01.2025 23:51 | | Passed or | foxlup | 1269. Obscene Words Filter | 12 Jan 2025 18:12 | 2 | 4 aceg ACEG {Ç}{Æ} {F}{E}{D} 3 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ {!}{"}{#}{$}{%}{&}{'}{(}{)}{*}{+}{,}{-}{.}{/}{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{:}{;}{<}{=}{>}{?}{@}{A}{B}{C}{D}{E}{F}{G}{H}{I}{J}{K}{L}{M}{N}{O}{P}{Q}{R}{S}{T}{U}{V}{W}{X}{Y}{Z}{[}{\}{]}{^}{_}{`}{a}{b}{c}{d}{e}{f}{g}{h}{i}{j}{k}{l}{m}{n}{o}{p}{q}{r}{s}{t}{u}{v}{w}{x}{y}{z}{{}{|}{}}{~}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{ }{¡}{¢}{£}{¤}{¥}{¦}{§}{¨}{©}{ª}{«}{¬}{}{®}{¯}{°}{±}{²}{³}{´}{µ}{¶}{·}{¸}{¹}{º}{»}{¼}{½}{¾}{¿}{À}{Á}{Â}{Ã}{Ä}{Å}{Æ}{Ç}{È}{É}{Ê}{Ë}{Ì}{Í}{Î}{Ï}{Ð}{Ñ}{Ò}{Ó}{Ô}{Õ}{Ö}{×}{Ø}{Ù}{Ú}{Û}{Ü}{Ý}{Þ}{ß}{à}{á}{â}{ã}{ä}{å}{æ}{ç}{è}{é}{ê}{ë}{ì}{í}{î}{ï}{ð}{ñ}{ò}{ó}{ô}{õ}{ö}{÷}{ø}{ù}{ú}{û}{ü}{ý}{þ} {þ}{ý}{ü}{û}{ú}{ù}{ø}{÷}{ö}{õ}{ô}{ó}{ò}{ñ}{ð}{ï}{î}{í}{ì}{ë}{ê}{é}{è}{ç}{æ}{å}{ä}{ã}{â}{á}{à}{ß}{Þ}{Ý}{Ü}{Û}{Ú}{Ù}{Ø}{×}{Ö}{Õ}{Ô}{Ó}{Ò}{Ñ}{Ð}{Ï}{Î}{Í}{Ì}{Ë}{Ê}{É}{È}{Ç}{Æ}{Å}{Ä}{Ã}{Â}{Á}{À}{¿}{¾}{½}{¼}{»}{º}{¹}{¸}{·}{¶}{µ}{´}{³}{²}{±}{°}{¯}{®}{}{¬}{«}{ª}{©}{¨}{§}{¦}{¥}{¤}{£}{¢}{¡}{ }{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{~}{}}{|}{{}{z}{y}{x}{w}{v}{u}{t}{s}{r}{q}{p}{o}{n}{m}{l}{k}{j}{i}{h}{g}{f}{e}{d}{c}{b}{a}{`}{_}{^}{]}{\}{[}{Z}{Y}{X}{W}{V}{U}{T}{S}{R}{Q}{P}{O}{N}{M}{L}{K}{J}{I}{H}{G}{F}{E}{D}{C}{B}{A}{@}{?}{>}{=}{<}{;}{:}{9}{8}{7}{6}{5}{4}{3}{2}{1}{0}{/}{.}{-}{,}{+}{*}{)}{(}{'}{&}{%}{$}{#}{"}{!} Passed or 3 166 | | WA15 | sleepntsheep | 1966. Cycling Roads | 9 Jan 2025 22:25 | 2 | WA15 sleepntsheep 9 Jan 2025 22:19 turns out my function for checking if point lies on segment was wrong. |
|
|