等一个北京

相关推荐

头像
03-07 20:59
已编辑
华中科技大学 Java
1,第一题,可以发现每个数只有与不一样的数交换才有贡献,比第i位为1,i < j,只有s[j]为0才可以交换,统计一下前/后缀0/1的个数就可以了,然后加一下贡献```#include <iostream>#include <vector>using namespace std;int main() {    string s;    while (cin >> s) {        long long res = 1;        vector<int> a0(s.size() + 1, 0), a1(s.size() + 1, 0);        for (int i = s.size() - 1; i >= 0; i --) {            if (s[i] == '0') {                a0[i] = a0[i + 1] + 1;                a1[i] = a1[i + 1];                res += 1ll * a1[i];            } else {                a0[i] = a0[i + 1];                a1[i] = a1[i + 1] + 1;                res += 1ll * a0[i];            }        }        cout << res << '\n';    }}// 64 位输出请用 printf("%lld")```2,可以hash一下每个图,每一行有多少个?每一行的值就是多少,11111代表五行每行都只有一个问号,后面就容易不少了。#include <iostream>#include <string>using namespace std;int main() {    int n;    cin >> n;    while (n --) {        string map[6];        int hash = 0;        for (int i = 0; i < 5; i ++) {            cin >> map[i];            int count = 0;            for (int j = 0; j < 5; j ++) {                if (map[i][j] != '#') count ++;            }            hash = hash * 10 + count;         }        // cout << "hash:" << hash <<'\n';        if (hash == 32223) {            cout <<0;        } else if (hash == 11111) {            cout << 1;        } else if (hash == 22311) {            cout << 4;        } else if (hash == 31111) {            cout << 7;        } else if (hash == 31323) {            cout << 6;        } else if (hash == 32323) {            cout << 8;        } else if (hash == 32313) {            cout << 9;        } else {            if (map[1][3] != '#') {                if (map[3][1] != '#') cout << 2;                else cout << 3;            } else {                cout << 5;            }        }    }    }// 64 位输出请用 printf("%lld")3,字典树比较模板的题,可以学一下字典树怎么写的,然后在字典树路径下贪心找最优解#牛客AI配图神器# #include <iostream>using namespace std;const int N = 2e5 + 10;int tr[N * 60][2], cnt[N * 60][2], ind;void insert(int x, int mod) {    int p = 0;    for (int i = 31; i >= 0; i--) {        int v = x >> i & 1;        if (tr[p][v] == 0) tr[p][v] = ++ind;        cnt[p][v] += mod;        p = tr[p][v];    }}int getMaxXor(int x) {    int res = 0, p = 0;    for (int i = 31; i >= 0 ; i --) {        int v = x >> i & 1;        if (cnt[p][!v]) {            p = tr[p][!v];            res += 1 << i;        } else {            p = tr[p][v];        }    }    return res;}signed main() {    int n;    cin >> n;    int cnt = 0;    while (n --) {        int a, b;        cin >> a >> b;        if (a == 1) {            cnt ++;            insert(b, 1);        } else if (a == 2) {            cnt --;            insert(b, -1);        } else {            if (cnt == 0)             cout << -1 << '\n';            else cout << getMaxXor(b) << '\n';        }    }}// 64 位输出请用 printf("%lld")
在西伯利亚种土豆:这第二题直接暴力if else结果出bug了,调了半小时眼睛都快瞎了。还是大佬这方法简单
投递饿了么等公司9个岗位
点赞 评论 收藏
分享
头像
03-14 11:23
已编辑
北京邮电大学 管理咨询
211勇闯初创小公司头破血流系列3这件事不是发生在我身上的,但前同事们参与创作的积极性空前高涨,为了习惯,还是都采用第一人称的视角来看这出大戏。有一天老板在我们的眼皮底下接了一个电话,最终敲定了去北京出差的时间,下周一。他得意洋洋地说,这单下来保底五百万的流水,如果成了,我们都能得到五位数的提成。这对于一群刚上班的人来说是天大的诱惑,我们经历了周末的无偿加班,把他去北京所需要的文件都准备好了。只是在去北京的周一当天,老板睡过头了。整个上午都没见他的踪影,给他发文件也不会,打电话问问题也不接,直到中午才姗姗来迟。当然,这只是拉开了这场恐怖出差的序幕。只见他来了也不紧不慢的,手指在办公室转了一圈,...
姜大力:补充: 1.五百万的单子根本没有五百万,只是过去展示拼装的产品并简单考察。该项目只是竞标,项目内容是商业街区改造; 2.决策是当天上午10点半左右老板珊珊来迟后突发奇想去北京,中午1点在催促下着急出发,没有任何出差补助; 3.出发之前已经知道进京证不好使了,但还是执意要开车去; 4.实习生实打实连续开了***小事车,非常辛苦,工资在转正后只有两千五; (有疑问会继续补充)
点赞 评论 收藏
分享
牛客网
牛客企业服务