首页 > 其他分享 >2024.09.14小红书

2024.09.14小红书

时间:2024-09-14 22:24:05浏览次数:10  
标签:14 小红书 graph 2024.09 int 异或 文章 节点 dis

1. 小红的文章匹配

小红书的第 i 篇文章有一个点赞数 ai 。小红认为,如果两篇不同的文章满足:点赞数通过位异或运算恰好得到 k ,那么这两篇文章是相似文章,
即ai xor aj=k 。现在小红收集到了 n 篇文章的点赞数,请帮助她计算出有多少对 (i,j) 是相似文章。输入描述
第一行输入两个整数n,k(1≤n≤,0≤k≤)代表文章总数与相似文章判断值。第二行输入 n 个整数 a1,a2,...,an(0≤ai≤) 代表每篇文章的点赞数。

两数之异或
int main(int argc, char *argv[]) {
    int n,k;
    cin>>n>>k;
    //异或是可逆的,相当于两数之和
    unordered_map<int,int> m;
    int res = 0;
    for(int i=0;i<n;i++){
        int num;
        cin>>num;
        if(m.count(num^k)) res+=m[num^k];
        m[num]++;
    }
    cout<<res;
    return 0;
}

2. 魔法阅览室

思维题
int w(int a,int b,int c)
{
    if (a>x || b>y || c>z) return 0;
    return (x-a+1)*(y-b+1)*(z-c+1);
}
int main()
{
    int T;
    cin>>T;
    while (T--)
    {
        cin>>x>>y>>z>>k;
        if (x>y) swap(x,y);
        if (y>z) swap(y,z);
        if (x>y) swap(x,y);
        long long ans=0;
        for (int i=1; i<=x; i++)
            for (int j=i; j<=y; j++)
            {
                int t=k/i/j;
                if (t<j) break;
                if (i*j*t!=k) continue;
                int s=max(w(t,i,j),w(t,j,i));
                int ss=max(w(i,t,j),w(j,t,i));
                int sss=max(w(i,j,t),w(j,i,t));
                ans+=max(s,max(ss,sss));
            }
        cout<<ans<<endl;
    }
    return 0;
}

3. 小红的树上询问

小红有一棵由 n 个节点、 n - 1 条无向边构成的树,每条边的权值为 wi。定义树上两个点 (u,v) 的权值为,从 u 到 v 的简单路径上,全部边权的异或和,特别的,当 u 和 v 为同一个点时,权值为 0 。
小红会提出 q 次询问,每次询问要求计算有多少个点到节点 u 的权值恰好为 k 。树是指这样的一张图,其上的任意两个点都连通,且不存在环。
简单路径是指两个节点之间的一条路径,其不包含任何重复的节点。也就是说,在简单路径上,每个节点只能出现一次。

有点类似换源dp,但实际上根据异或性质直接哈希转换即可

int main(int argc, char *argv[]) {
    int n,q;
    cin>>n>>q;
    vector<vector<pair<int,int>>> graph(n+1);
    for(int i=1;i<n;i++){
        int u,v,w;
        cin>>u>>v>>w;
        graph[u].push_back({v,w});
        graph[v].push_back({u,w});
    }
    unordered_map<int,int> m;//表示所有点到点1异或距离的个数
    m[0] = 1;
    vector<int> dis(n+1);//所有点到点1的异或距离
    function<void(int,int)> f = [&](int u,int p)->void{
        for(auto e:graph[u]){
            if(e.first==p) continue;
            dis[e.first] = dis[u]^e.second;
            m[dis[e.first]]++;
            f(e.first,u);
        }
    };
    f(1,-1);//从1节点,计算所有节点到1节点的异或距离,同时计数所有的异或距离个数
    for(int i=0;i<q;i++){
        int u;
        long long k;
        cin>>u>>k;
        long long target = k^dis[u];
        if(m.count(target)) cout<<m.count(target)<<endl;
        else cout<<0<<endl;
    }
}

标签:14,小红书,graph,2024.09,int,异或,文章,节点,dis
From: https://www.cnblogs.com/929code/p/18414773

相关文章

  • 2024.9.14
    DATE#:202409014ITEM#:DOCWEEK#:SATURDAYDAIL#:捌月拾贰TAGS<BGM="诀别无尽夏--YouzeeMusic"><theme=oi-contest><[NULL]><[空]><[空]>“每个夏天的句号都是窗外要烂掉的绿”A.上海时间限制:1s 内存限制:512MB 测评类型:传......
  • 0914
    CRC码是用来验错的,当2^R≥K+R+1时,CRC码可以纠正1位错误,即单比特错误详见下图纠错编码求解海明码:1)2K≥K+N+1,求解K,信息位(N位)+检验位(K位)组成海明码,注意校验位的位置2)将校验码Pi放在H2(i-1)的位置上3)分组形成检验关系。每个数据位使用多个检验位进行检验,且被检验数据位的海明......
  • 2024.9.14
    今日总结:1:约数个数和这道题主要是一道数学题,主要的推到过程需要用到莫比乌斯反演,但是在求第一步用分块处理出1~n内的f(i)的值,再用线性筛求出u(i)的值和他的前缀和,我卡在了最后一步对原式进行数论分块点击查看代码#include<bits/stdc++.h>usingnamespacestd;constint......
  • BZOJ4144 Petrol
    最小生成树+最短路+并查集维护题目#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=2e5+100,M=N*2;intn,m,s;inth[N],e[M],ne[M],w[M],idx;intdis[N],pos[N];boolvis[N];intf[N];inta[N]; boolans[N];intq;structNODE{......
  • 2024-09-14:用go语言,给定一个正整数数组 nums,定义一个加密函数 encrypt(x),其将一个整数
    2024-09-14:用go语言,给定一个正整数数组nums,定义一个加密函数encrypt(x),其将一个整数x的每一位数字都替换为x中的最大数字,然后返回加密后的数字。例如,encrypt(523)会返回555,encrypt(213)会返回333。现在需要计算数组中所有元素加密后的和,然后返回这个和。输入:nums=[10,2......
  • 360 9.14笔试
    第二题大模拟真的有点折磨了第一题给出m种饮料,每种饮料只有一杯,接下来有n个客人,每个客人有两种想喝的饮料,请问最多能满足多少位客人。数据范围比较小n=20,所以直接暴力求解#include<bits/stdc++.h>usingnamespacestd;intmain(){intn,m;cin>>n>>......
  • 虾皮9.14笔试
    三道都是简化的板子题第一题给出每个位置的过路费,求从左上角到右下角的最小花费是多少。只允许往下或者往右走。数据范围只有100直接暴力搜索即可。intminPathSum(vector<vector<int>>&grid){intm=grid.size();intn=grid[0].size();intres=......
  • 京东9.14笔试
    被美团挂的第二天早上神志不清,第三题写错了距离计算函数,人麻了第一题将数组划分成两个区间,要求区间和乘积最小。经典的前缀和+枚举即完成#include<bits/stdc++.h>usingnamespacestd;constintN=1e6+5;inth[N];intmain(){intn;cin>>n;......
  • SS240914A. 神灵庙(desire)
    SS240914A.神灵庙(desire)问一棵有\(n\)个叶子的任意形态的二叉树,左儿子边权是\(1\),右儿子边权是\(2\),给叶子任意顺序附上\(a_i\)的权值,问\(\sumdep_ia_i\)最小。首先如果树的形态确定了,显然是深度大的叶子选小的\(a_i\)。(注:这里的深度都是只带权到根的距离)因为是树......
  • 0914鲜花——开学以来
    开学了,这是好的,久违的一切都变得熟悉起来秋风清爽,感受到了与HL完全不同的心胸开阔我喜欢秋天的每一个你回头看看开学以来的两周,无疑是不好与好共存的有些事让我心碎又给我安慰有些事令我气愤又令我沉潜有些人令我重读又令我发现短短两周,变i的我品味了人间百态有重启模飞的......