日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codeforces 1491 D. Zookeeper and The Infinite Zoo (二进制处理)

發布時間:2024/4/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces 1491 D. Zookeeper and The Infinite Zoo (二进制处理) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

解題前提

  • 假設 u = 1010,則 v 可能為 1000、0010、1010。即對于 u 的每一位:
    a. u[i]為1,v[i]為1或0。
    b. u[i]為0,v[i]為0。
  • 假設 u = 1010, v = 1010,則 u+v=10100,其中 v 可以看作 1000+0010。
  • 將所有v分解為原子操作:若 u[i]=1,則 u[i] = u[i]+1 或者 u[i] 不變。
  • 所有的原子操作會導致兩種情況
    a. 情況1,不連續進位,例如 0110+0100 = 1010。
    b. 情況2,連續進位,例如 0110+0010 = 1000。
  • 情況1將導致 u 中 ‘1’ 和 v 中一樣多,情況2導致 u 中 ‘1’ 比 v 中多。
  • 可以得知 u 中 ‘1’ 一定 大于等于 v 中 ‘1’。
  • 解題思路

  • 若 u > v ,肯定是 no 。因為u的數位不可能右移。
  • 與 1 同理,可知:所有的 v[i] 右邊一定存在 u[j] = 1 。因為 u 只能左移不能右移。
  • 用兩個棧存 u 和 v 數位 1 的索引位置。
  • 在 u 中 1 的數量比 v 中 1 的數量多的情況下,對 2 進行判定。
  • 判定條件

  • u > v ===> “NO”。
  • u 中 ‘1’ 比 v 中 ‘1’ 少 ===> “NO”。
  • v 中對應’1’的位置 要保證 u 中有 ‘1’ 在其對應位置的右邊。 如果不能保證 ===> “NO”。
  • 否則 “YES”。
  • C++ Code

    #include <bits/stdc++.h> using namespace std; int main() {ios::sync_with_stdio(false);int n;cin >> n;int x, y;while (n--) {// s1,s2分別存x和y中1的位置。 stack<int> s1, s2;cin >> x >> y;if (x > y) {cout << "NO" << endl;continue;}for (int i = 0; x != 0; ++i) {int t = x % 2;if (t == 1) s1.push(i);x /= 2;}for (int i = 0; y != 0; ++i) {int t = y % 2;if (t == 1) s2.push(i);y /= 2;}// 如果x中1比y中少,"NO"。 if (s1.size() < s2.size()) {cout << "NO" << endl;continue;}// 標志位,所有"NO"的條件都會導致flag變成false bool flag = true;while (s1.size() && s2.size()) {// 如果 u 中 1 在 v中1左邊,"NO"。因為u不能右移操作。 if (s1.top() > s2.top()) {flag = false;break;}s1.pop();s2.pop();if(s2.size() == 0) break;// 如果u中有多余的1,將其彈出。(多余=可連續進位) while (s1.size() && s1.top() > s2.top()) {s1.pop();} // 如果x中1比y中少,"NO"。if(s1.size() < s2.size()){flag = false;break;}}cout << (flag ? "YES" : "NO") << endl;}return 0; }

    總結

    以上是生活随笔為你收集整理的Codeforces 1491 D. Zookeeper and The Infinite Zoo (二进制处理)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。