1168C - And Reachability - CodeForces Solution


bitmasks dp *2200

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
using namespace std;
#define euyia ios::sync_with_stdio(0)
#define endl '\n'

#define ar array<int, 2>
#define arr array<int, 3>
int mod = 998244353; //1e9+7;
const int N = 3e5 + 5;
int t, n, m, k;
const int M = 19;
int a[N], b[M], f[N][M];
int main()
{
    euyia;
#ifdef DEBUG
    freopen("../1.in", "r", stdin);
#endif
    // 如果当前有。。那么当前就是最近的能获取y位的数字。。
    // 如果没有。。那么就通过自己有的中转点。。中转到最近的有x的地方。。
    // 这题jiangly写的好熟练。。
    cin >> n >> m;
    for (int i = 1; i <= n; ++i)
        cin >> a[i];

    memset(b, -1, sizeof b);
    for (int i = 1; i <= n; ++i)
        for (int j = 0; j < 19; j++)
            f[i][j] = n + 1;
    
    for (int i = n ; i > 0; --i) {
        for (int x = 0; x < 19; ++x) {
            if (a[i] >> x & 1) {
                f[i][x] = i;
            } else {
                for (int y = 0; y < 19; ++y)
                    if ((a[i] >> y & 1) && b[y] != -1)
                        f[i][x] = std::min(f[i][x], f[b[y]][x]);
            }
        }
        for (int x = 0; x < 19; ++x)
            if (a[i] >> x & 1)
                b[x] = i;
    }
    while (m--)
    {
        int x, y;
        cin >> x >> y;
        bool ok = 0;
        for (int i = 0; i < 19; ++i)
            if (f[x][i] <= y && a[y] >> i & 1)
                ok = 1;
        cout << (ok ? "Shi" : "Fou") << endl;
    }
};


Comments

Submit
0 Comments
More Questions

136. Single Number
169. Majority Element
119. Pascal's Triangle II
409. Longest Palindrome
1574A - Regular Bracket Sequences
1574B - Combinatorics Homework
1567A - Domino Disaster
1593A - Elections
1607A - Linear Keyboard
EQUALCOIN Equal Coins
XOREQN Xor Equation
MAKEPAL Weird Palindrome Making
HILLSEQ Hill Sequence
MAXBRIDGE Maximise the bridges
WLDRPL Wildcard Replacement
1221. Split a String in Balanced Strings
1002. Find Common Characters
1602A - Two Subsequences
1555A - PizzaForces
1607B - Odd Grasshopper
1084A - The Fair Nut and Elevator
1440B - Sum of Medians
1032A - Kitchen Utensils
1501B - Napoleon Cake
1584B - Coloring Rectangles
1562B - Scenes From a Memory
1521A - Nastia and Nearly Good Numbers
208. Implement Trie
1605B - Reverse Sort
1607C - Minimum Extraction