|
|
Общий форумI didn't understand if a player is hit by another ,what will be the changed condition of him? max(0,cur-1) or max(0,cur-2)? if "HIT IN BODY" then max(0, cur - 1) if "HIT IN HEAD" then max(0, cur - 2) n, k =map(int, input().split(' ')) z=0 time=0 num = 1 progress = 2 if k==1 and n==1: print(n) elif k ==1: print(n-1) elif k>=n: time+=1 while num<n: num+=progress progress*=2 time+=1 print(time) else: time+=1 while z==0: if progress<=k and num<n: num+=progress progress*=2 time+=1 else: z+=1 progress=k if num<n: while num<n: if num<n: time+=1 num+=progress print(time) Edited by author 16.04.2019 01:34 In the problem "2113. Survive the flood" I did't understand the condition of when the rabbit can jump to a cell and also I mean what's a jump height? Edited by author 15.04.2019 18:51 Здравствуйте. Это хорошо задача (для медианы не существует хорошего агрегата) требующая для точного решения хранения минимум N\2 чисел. И тем более эффективная по времени решения, чем больше чисел мы одновременно можем хранить. Поэтому хотелось бы точно знать что значит ограничение на 1MБ по памяти. 1. sort these orders for the following for loop; 2. can I serve current order? is there a not used day left for it? wow, that's easy if I can use std::set::upper_bound; 3. output our selected orders with delivery time. // wow accepted, so lucky I am. // after checked the discussion, found that this problem can be easily solve with priority queue, looks that priority queue is more convenient. Edited by author 14.04.2019 22:57 If you have WA 2 look this test 6 ans 1 3 10 ans 1 4 my programm gave for 6 ans 0 4 for 10 0 5 after changes about a1 = 0 AC.So a1 Not equal 0 It must be added to the statement. It IS in the statement: "Your program is to output two POSITIVE integers A and P separated with a space..." Take care of new line endings and make sure that the second line is always read properly. In my case the problem was that the second line was skipped because of wrong transition in my FSM so the wrong line was read into N, so it printed more characters after the point than it should. from sys import stdin s = "" for line in stdin: for i in line: if 'A' <= i <= 'Z' or 'a' <= i <= 'z': s += i elif 9 < ord(i) < 14 or ord(i) < 0: # <-- this elif about non-printable print(s[::-1], end = '\n') # characters end of lines, files, etc. s = "" else: print(s[::-1] + i, end = '') s = "" print(s, end = '') You can use for test this numbers: 9 3 11 7 9 13 25 7 11 5 The answer is 18. --- Hint: Use sort? Try to think about what you sort Please write Input and Output Test3 Edited by author 09.04.2019 23:05 [code deleted] Edited by moderator 20.11.2019 00:02 I understood the solution. But I didn't understand the logic, why 1 is added before dividing the number? Thank you. Because to get vote from i group you need to have more than a half votes. For example, If 7 you have 7 guys in a group, you need to have 4 votes. 7/2 = 3 3+1 = 4 Why you sorted the array?. Is there any need of it?. Try this test : tTTTTT ans:60 Edited by author 27.06.2011 02:14 Thanks, that really helped :D Thanks for help. The problem were in checking substrings with length less then 6. konec = int(input()) spisok = [] i=1 if konec <0: while i>=konec: spisok.append(i) i-=1 else: while i<=konec: spisok.append(i) i+=1 print(spisok) print(sum(spisok)) konec = int(input()) spisok = [] i=1 if konec <0: while i>=konec: spisok.append(i) i-=1 else: while i<=konec: spisok.append(i) i+=1 print(spisok) print(sum(spisok)) For test you can use this string: hkjgnnngkikipipekkfkfgg Correct result is: hkjgngkikipipefkf using System; namespace pain { class Program { static void Main(string[] args) { string s = Console.ReadLine(); char[] ss = new char[s.Length]; for (int i = 0; i < s.Length; i++) ss[i] = s[i]; for (int i = 0; i < s.Length - 1;) { if (ss[i] == ss[i + 1]) { if (i - 1 >= 0) { int n = i + 2; b: if (n <= s.Length - 1) { if (ss[n] != ' ') { ss[i] = ss[n]; ss[n] = ' '; ss[i + 1] = ' '; } else { n++; goto b; } } else break; } else { ss[i] = ' '; ss[i + 1] = ' '; } if (i >= 1) i--; else i++; } else i++; } for (int i = 0; i < s.Length; i++) if(ss[i] != ' ') Console.Write(ss[i]); //Console.Write(st2(s)); Console.ReadLine(); } public static string st1(string s, ref int n) { if (s.Length - 1 > n) { if (s[n] == s[n + 1]) { s = s.Remove(n, 2); if (n >= 2) n -= 2; else n--; } n++; s = st1(s, ref n); } return s; } public static string st2(string s) { for (int i = 0; i < s.Length - 1; i++) { if (s[i] == s[i + 1]) { s = s.Remove(i, 2); if (i >= 2) i -= 2; } } return s; } public static string st3(string s) { int n = 0; int nt = s.Length - 1; string[] ss = new string[nt]; for (int i = 0; i < nt; i++) { bool d = false; for (int j = i; j < nt; j++) { if (ss[i] == s[j].ToString()) { d = true; } } if (!d) { ss[n] = s[i].ToString(); n++; } } n = 0; while (nt != 0) { nt = s.Length; for (int i = 0; i < ss.Length; i++) { s = s.Replace(ss[i] + ss[i], ""); } if (nt == s.Length) break; } return s; } } } Edited by author 02.04.2019 03:06 Yeah! I did it! I spent about 4 hours to solve this problem =) The problem limits are too small. You can get ac with the O(N^2) algorithm which is VERY straightforward. The limit should force you to use the O (log N) algorithm to compute X^N (%M) > The problem limits are too small. > You can get ac with the O(N^2) algorithm which is VERY > straightforward. The limit should force you to use the O > (log N) algorithm to compute X^N (%M) O(log N) !? Isn't it O(MlogN) ? well,if it's really O(log N) , please tell me how :) I got AC with 0.031 373 KB using brute force. This is the dummest task I made. Tell them to read the O(M log N) algorith in Introduction in algo(Coreman) This sadly is my AC source: var i,j,k,l,m,n:longint; ok:boolean; begin readln(n,m,k); for i:=0 to m-1 do begin l:=i; for j:=1 to n-1 do l:=(l*i) mod m; if l mod m=k then begin write(i,' '); ok:=true; end; end; if not ok then write(-1); end. Edited by author 10.05.2004 17:49 Hello, explain to me why you use l:=(l*i) mod m;(...mod m)?!! Why? |
|
|