Processing math: 0%

2021年4月1日木曜日

TopCoder Single Round Match 798

  EasyをHackされて0完。


Div1 Easy MarriageAndCirclingChallenge


 ツイートの通りです。
 C++を使うときはOverflowを気にするのは当然だと思っているし、コンテスト中も気にしていたのに、こんなミスをするのは酷い。

 一応、システムテストを通ったコードを貼り付けます。




  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. class MarriageAndCirclingChallenge
  5. {
  6. public:
  7. long long solve(int N, int threshold, int state)
  8. {
  9. vector<vector<int>> E(N);
  10. long long sc=state;
  11. int ch=0;
  12.  
  13. for (int i = 0; i < N; i += 1){
  14. for (int j = i+1; j < N; j += 1){
  15. sc=(sc * 1103515245 + 12345) % (1<<31);
  16. ch=sc%100;
  17. //printf("%d ",ch);
  18.  
  19. if (ch < threshold){
  20. E[i].push_back(j);
  21. }
  22. else{
  23. E[j].push_back(i);
  24. }
  25. }
  26. }
  27. long long ANS=0;
  28. vector<vector<int>> X(N, vector<int>(N));
  29.  
  30. for (int i = 0; i < N; i += 1){
  31. for (int j = 0; j < N; j += 1){
  32. X[i][j]=0;
  33. }
  34. }
  35.  
  36. for (int i = 0; i < N; i += 1){
  37. for (auto j:E[i]){
  38. for (auto k:E[j]){
  39. X[i][k]+=1;
  40. }
  41. }
  42. }
  43.  
  44. for (int i = 0; i < N; i += 1){
  45. for (int j = 0; j < N; j += 1){
  46. ANS+=X[i][j]*X[j][i];
  47. }
  48. }
  49. return ANS/4;
  50. }
  51. };
  52.  

0 件のコメント:

コメントを投稿