Cuộc thi OLP Tin học cấp Trường năm 2022 vòng thi thứ nhất


Problems

Problem Points AC Rate Users
0.Tính giai thừa 1p 58.8% 935
0.Tọa độ của một điểm 1p 42.1% 690
5.Cột trong Mảng 1p 35.6% 302
Hóa đơn 1p 68.6% 180
Tìm các số nguyên tố 1p 32.8% 54
Trượt môn 2p 20.4% 65
Nobita học code 2 10.3% 12
Chia nhóm đồ án 2p 2.4% 3
Tổng bình phương 2 3.4% 1
Liên hoan 3 25.3% 29
Bộ 3 số tổng bằng 0 3p 2.5% 9
Chuyến bay Covid đặc biệt 3p 2.5% 3

Comments


  • 1
    jjiangly  commented on Oct. 2, 2022, 11:14 a.m.

    Cho em xin sol bài 9, 10, 11 với ạ


    • 2
      HoangPhuong-CNTT6-K62  commented on Oct. 3, 2022, 12:09 a.m.

      Còn bài 10 thì nó là đồ thị có hướng , mình cứ DFS như bình thường , mỗi lần DFS thì mỗi đỉnh mà các bạn thí sinh đang đứng , DFS xong thì đỉnh nào xuất hiện k lần , tức tất cả các bạn đều đến được thì đấy là điểm họp mặt


      • 0
        jjiangly  commented on Oct. 3, 2022, 12:17 a.m.

        Em cũng cài DFS, nhma nó bị TLE mất tiêu.


        • 0
          None  commented on Oct. 3, 2022, 4:29 a.m.
          #include<bits/stdc++.h>
          using namespace std;
          unordered_map<int,unordered_map<int,int>>check;
          unordered_map<int,int>dr;
          unordered_map<int,vector<int>>mp;
          void dfs(int x,int i)
          {
              if(dr.find(x) != dr.end()) return;
              check[i][x] = 1;
              dr[x] = 1;
              for(auto k : mp[x])
              {
                  dfs(k,i);
              }
          }
          int main()
          {
              ios_base::sync_with_stdio(false);
              cin.tie(0);
              cout.tie(0);
              int k,n,m;
              cin >> k >> n >> m;
              vector<int>v(k);
              for(auto &x : v) cin >> x;
          
              for(int i = 1; i <= m; i++)
              {
                  int u,v;
                  cin >> u >> v;
                  mp[u].push_back(v);
              }
              for(auto x : v)
              {
                  dr.clear();
                  dfs(x,x);
              }
              int res = 0;
              for(int i = 1; i <= n; i++)
              {
                  bool isValid = true;
                  for(auto x : v)
                  {
                      if(check[x].find(i) == check[x].end())
                      {
                          isValid = false;
                          break;
          
                      }
                  }
                  if(isValid ) res++;
              }
              cout << res;
          
          
          
          
          }

          Bạn tham khảo bài của mình nhé


        • 0
          QuynhSon_CNTT4_K62  commented on Oct. 3, 2022, 1:20 a.m.

          em dùng biến toàn cục thay cho biến cục bộ có thẻ sẽ nhanh hơn đấy, bài này 0.1s nên tle ảo lắm


    • 2
      QuynhSon_CNTT4_K62  commented on Oct. 2, 2022, 11:38 p.m.

      bài 11 bị lỗi eof ở test 1,3,4. bạn dùng thử eof để xác định lại n bt đâu AC bài đấy


      • 0
        jjiangly  commented on Oct. 3, 2022, 12:15 a.m.

        Ui, test sai vậy có unrate không vậy anh, rate thì hơi bất công quá ạ.


      • 2
        HoangPhuong-CNTT6-K62  commented on Oct. 3, 2022, 12:12 a.m.

        đúng rồi , bài này để để lại nhập theo kiểu đọc hết file thì AC , ae dùng while(cin >> x) trong C++ cũng đc