hdu 6411 带劲的and和 题解(思维,好题,并查集)

【锂离子电池力学耦合及相场法模拟技术与应用】 8. 电化学仿真软件的使用与案例分析 (1) 各向异性纳米线锂化应力分析(实例讲解1) (2) 化学反应及死锂现象研究(案例分析2)(3) 锂化循环损伤计算(案例分析3)6. 4. 电池材料的力学与电化学耦合性能分析(1) 耦合效应对电池性能的影响(2) 耦合模型的验证与应。5. 5. 电池颗粒、极片、电芯尺度力-电-化-热多场耦合模型概述力学-7. 颗粒尺度耦合模型在电池失效分析中的应用。2. 2. 电池电极材料的分类与特性。5. (2) 耦合模型的验证与应用。电化学耦合模型与仿真。 阅读详情

原题链接:
hdu

题意简述

给定一个无向图,点数1e5,点权1e9,设 f ( u , v ) f(u,v) f(u,v)表示: u , v u,v u,v能否联通(珂以间接)。
求:对于任意 u , v u,v u,v,加和 f ( u , v ) ∗ ( u & v ) ∗ m a x ( u , v ) f(u,v)*(u\&v)*max(u,v) f(u,v)∗(u&v)∗max(u,v)。

思路

和上一篇类似的求和风格。首先,我们要知道啥时候 f ( u , v ) = 1 f(u,v)=1 f(u,v)=1,就是 u , v u,v u,v一个联通块里面。考虑使用并查集维护联通块,然后把每个联通块里的点存到 v e c t o r &lt; i n t &gt; vector&lt;int&gt; vector<int>中。

接着就是求后面了。 m a x ( u , v ) max(u,v) max(u,v)的思路已经知道了,我们对于每个联通块的元素排序,枚举 i i i,去找 i i i和前面的答案。这样就能保证 m a x ( u , v ) = i max(u,v)=i max(u,v)=i了。

接下来就是要求前面所有元素和 i i i的 a n d and and和。如何求这个 a n d and and和呢?我的老师教导我,遇到这种位运算的东西,就按位求答案。我们设 c n t [ k ] cnt[k] cnt[k]表示:前面的数中,多少个数二进制第 k k k位是 1 1 1。

注释(如果不想看,大可跳过):
x x x的第 y y y位是 1 1 1被这么定义: ( ( x &gt; &gt; y ) &amp; 1 ) = = 1 ) ((x&gt;&gt;y)\&amp;1)==1) ((x>>y)&1)==1)

那么,当我们枚举到 i i i的第 j j j位的时候,如果 i i i有第 j j j位,就会有 c n t [ j ] cnt[j] cnt[j]个数和 i i i取 a n d and and时,在第 j j j位上有答案。此时对答案的贡献就是 ( 1 &lt; &lt; j ) ∗ c n t [ j ] (1&lt;&lt;j)*cnt[j] (1<<j)∗cnt[j]。

然后这样枚举就好了。复杂度是 O ( 32 ∗ n ) O(32*n) O(32∗n)。
代码:

#include<bits/stdc++.h>
using namespace std;
namespace Flandle_Scarlet
{
    #define N 100100
    #define mod 1000000007ll
    #define ll long long
    #define MEM(x,a) memset(x,a,sizeof(x))
    #define CLS(x) memset(x,0,sizeof(x))
    class DSU//并查集
    {
        public:
            int Father[N],Cnt[N];
            void Init()
            {
                for(int i=0;i<N;i++)
                {
                    Father[i]=i;
                    Cnt[i]=1;
                }
            }
            int Find(int x)
            {
                return (x==Father[x])?x:(Father[x]=Find(Father[x]));
            }
            void Merge(int x,int y)
            {
                int ax=Find(x),ay=Find(y);
                Father[ax]=ay;
            }
    }D;

    int a[N];
    int n,m;
    void R1(int &x)
    {
        x=0;char c=getchar();int f=1;
        while(c<'0' or c>'9') f=(c=='-')?-1:1,c=getchar();
        while(c>='0' and c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
        x=(f==1)?x:-x;
    }
    void Input()
    {
        R1(n),R1(m);
        D.Init();
        for(int i=1;i<=n;++i)
        {
            R1(a[i]);
        }
        for(int i=1;i<=m;++i)
        {
            int u,v;
            R1(u),R1(v);
            D.Merge(u,v);
        }
    }

    vector<int>nodes[N];
    int cnt[32];//cnt[i]:how many (1<<i) appeared previously
    //我习惯在写代码的时候加英文注释,懒得删了
    void Soviet()
    {
        for(int i=1;i<=n;++i)//记得清空
        {
            nodes[i].clear();
        }
        for(int i=1;i<=n;++i)//枚举并查集,并保存好每个vector
        {
            int an=D.Find(i);
            nodes[an].push_back(a[i]);
        }
        ll ans=0;
        for(int i=1;i<=n;++i)
        {
            if (nodes[i].size()==0) continue;

            CLS(cnt);//每次都要初始化!!!
            sort(nodes[i].begin(),nodes[i].end());//排序,方便处理max

            for(int j=0;j<nodes[i].size();++j)
            {
                int val=nodes[i][j];
                for(int k=0;k<32;++k)//枚举每一位,记录cnt值
                {
                    if (val==0) break;
                    if (val&1) ++cnt[k];
                    val>>=1;
                }
            }
            for(int j=nodes[i].size()-1;j>=0;--j)
            {
                int val=nodes[i][j];
                int tmp=val;
                for(int k=0;k<32;++k)
                {
                    if (tmp==0) break;
                    if (tmp&1)
                    {
                        --cnt[k];
                        ll sum=1;
                        sum*=val;sum%=mod;
                        sum*=(1ll<<k);sum%=mod;
                        sum*=cnt[k];sum%=mod;
                        ans+=sum;ans%=mod;
                        //ans*=val*(1<<k)*cnt[k];
                    }
                    tmp>>=1;
                }
            }
        }
        ans=(ans%mod+mod)%mod;
        printf("%lld\n",ans);
    }

    void IsMyWife()
    {
        if (0)
        {
            freopen("","r",stdin);
            freopen("","w",stdout);
        }
        int t;R1(t);
        while(t--)
        {
            Input();
            Soviet();
        }
    }
};
int main()
{
    Flandle_Scarlet::IsMyWife();
    return 0;
}

回到总题解界面

unitree-G1外接 USB 麦克风完整配置指南 首先,将type-c麦克风插入G1机器人的USB口后,记录下USB麦克风的卡号(card)和设备号(device),通常显示为 card 1: Device [USB Audio Device] 阅读详情

相关推荐

从波形到代码:手把手调试GaN图腾柱PFC的过零点切换与软启动策略

本文详细解析了GaN图腾柱无桥Boost PFC电路在过零点切换与软启动策略中的调试方法。通过波形分析、代码实现和寄存器配置,提供了解决误开通、震荡波形等问题的实用方案,帮助工程师优化电源设计效率与可靠性。

weixin_30831529的博客 424

【HDU 6411】带劲的and和 【并查集 + 二进制拆位】

度度熊专门研究过“动态传递闭包问题”,他有一万种让大家爆蛋的方法;但此刻,他只想出一道简简单单的题——至繁,归于至简 度度熊有一张n个点m条边的无向图,第i个点的点权为viviv_i。 如果图上存在一条路径使得点i可以走到点j,则称i,j是带劲的,记f(i,j)=1;否则f(i,j)=0。显然有f(i,j)=f(j,i)。 度度熊想知道求出: ∑n−1i=1∑nj=i+1f(i,j)×m...

lzs_lazy 423

无人机芯片模块技术要点分析

恶劣环境下信号稳定性:无人机在恶劣环境下工作时,遥感系统采集的信号往往很不稳定,视频信号处理芯片需要具备强抗干扰能力,能辨别脉冲脉宽为50ns以上、幅度为0V~4.5V的输入信号。这种架构能兼顾强大的运算能力和灵活的接口控制。芯片小型化:麻省理工学院的研究人员已设计出仅20平方毫米的微型芯片,可处理无人机飞行所需的惯性数据和相机图像,为微型无人机的发展奠定了基础。光子集成芯片(PIC) :研究显示,与电子芯片相比,光子计算芯片在延迟、计算容量和能效上都有数量级的提升,有望解决当前无人机系统的计算瓶颈。

YUNZHUO666的博客 1404

HDU 6411 带劲的and和

题目传送门 代码: #include&lt;bits/stdc++.h&gt; using namespace std; typedef long long LL; const int maxn=100000+100; const int mod=1e9+7; int fa[maxn]; int ans[maxn]; int cnt[50]; vector&lt;int&gt;G[ma...

kaven 1355

Unity多渠道APK打包:同一工程稳定输出不冲突安装包

Android应用多渠道分发是移动开发的基础场景,其核心在于解决包名唯一性、渠道可识别性与构建可重复性三大问题。原理上,Unity安卓打包本质是三阶段流程:生成Android工程、Gradle编译、APK签名,而包名冲突根源在生成阶段对PlayerSettings的强依赖。技术价值体现在规避人工配置失误、支撑CI/CD自动化、满足华为/小米等商店合规要求。典型应用场景包括应用宝、TapTap、B站等渠道独立包管理,以及AB测试、灰度发布等运营需求。本文聚焦Unity原生方案,通过BuildPlayerOpt

weixin_33736048的博客 794

从零搭建ECG心电图仪:模拟前端电路设计与噪声对抗实战

在电子工程和生物医学信号处理领域,微弱信号的采集与放大是核心挑战。其基本原理在于利用高精度模拟电路,从强大的环境噪声中提取出有用的差分信号。这项技术的核心价值在于将理论上的传感器信号转化为稳定、可靠的可用数据,是连接物理世界与数字系统的关键桥梁。在医疗监护、工业传感和科学测量等场景中,高性能的模拟前端设计直接决定了整个系统的精度与可靠性。本文聚焦于生物电信号采集这一具体应用,深入探讨如何运用差分放大器、低通滤波器和陷波滤波器等经典模块,构建一个能够有效对抗工频干扰和接触噪声的实用电路,最终实现从人体体表清晰

weixin_30616969的博客 459

hdu6411—带劲的and和(2018百度之星复赛)

题目链接:传送门   带劲的and和 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 219    Accepted Submission(s): 113 Problem Description 度度熊专门研究过“动态传递闭包问...

zhiyuanjiang的博客 422

PotPlayer 史诗级更新!实时字幕生成+实时翻译,看片真的无敌了!

potplayer已经更新实时字幕生成+实时字幕翻译功能

阿虚同学的博客 1万+

HDU6411 带劲的and和(2018百度之星复赛,并查集,位运算,思路)

Problem Description 度度熊专门研究过“动态传递闭包问题”,他有一万种让大家爆蛋的方法;但此刻,他只想出一道简简单单的题——至繁,归于至简。 度度熊有一张n个点m条边的无向图,第i个点的点权为vi。 如果图上存在一条路径使得点i可以走到点j,则称i,j是带劲的,记f(i,j)=1;否则f(i,j)=0。显然有f(i,j)=f(j,i)。 度度熊想知道求出...

riba2534的博客 664

[特殊字符] 智能补货(AI-driven Replenishment)完整实施方案

补货量=预测需求+安全库存−当前库存补货量 = 预测需求 + 安全库存 - 当前库存补货量=预测需求+安全库存−当前库存。:基于 LSTM/Transformer 预测未来 30/60/90 天的销量。

nbsaas-boot基于Request-Response的企业级快速开发框架 967

华为MetaERP国资委语境下的 DRP(全域数字化资源管理平台/Digitalized Resource-management Platform)与传统 ERP(以 SAP、Oracle 为代表)的

【摘要】国资委推动的DRP(全域数字化资源管理平台)正在重构央国企数智化转型路径,其本质是通过"ERP管交易+DRP管管控"的双层架构实现升维替代。与传统ERP相比,DRP具有三大突破:采用国产分布式数据库实现全级次穿透监管、构建数据中台打破信息孤岛、以实时分析替代事后报表。当前政策明确2026-2030年分阶段建设目标,这将重塑产业格局——倒逼传统ERP厂商转型,为云原生/AI/信创企业创造新机遇。需注意DRP并非简单替代ERP,而是通过治理模式变革实现"交易系统做薄、管控中

金牌架构师 286

HDU 6411(并查集+位运算)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6411   题目大意:建一个图,然后算出可以互相到达的点的最大值乘以二者位运算的结果的和。   题目思路:先通过并查集把可以互相到达的点放在一起。然后对每个并查集内部进行排序,因为是最大值乘以二者位运算结果的和,所以排序后就是后面的值乘以与前面所有值的位运算结果的和。然后就是对位运算的理解。举个...

smilestruggler_Fly To Higher 447

【RT-DETR涨点改进】全网独家-特征融合改进篇 | AAAI 2025 顶会| 高效涨点,RT-DETR利用CDFA对比度特征聚合模块,适用于目标检查(全网独家创新)

本文提出了一种基于CDFA模块的多级特征融合优化RT-DETR模型,用于解决医学图像分割中的软边界模糊、小目标和共现现象等问题。CDFA模块通过对比度特征聚合、局部特征增强和多级注意力机制,有效提升模型性能。研究提供了三种改进方案(rtdetr-r18/y50/l-CDFA),并在多个医学数据集上验证了其有效性。核心创新包括语义信息解耦、对比驱动特征融合和尺寸感知解码器。实验结果表明,该方法在分割精度和鲁棒性方面达到SOTA水平。

Ai缝合怪、助力小伙伴高效发论文 509

2018 百度之星程序设计大赛 复赛(hdu 6409 6410 6411)

比赛题目链接 A题: #include&lt;stdio.h&gt; #include&lt;iostream&gt; #include&lt;algorithm&gt; #include&lt;math.h&gt; #include&lt;cstring&gt; #include&lt;queue&gt; #include&lt;stack&gt; #include&lt;list

c3po 604

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

HDU 6411 带劲的and和【枚举贡献】

HDU 6411 带劲的and和; 分析:写了好久了,突然想补一下博客。。。 公式看完过后,就是求一个联通图内任意两点之间的max(vi,vj)×(vi&amp;amp;vj)。直观感受是n*n的做法,从枚举贡献的角度出发。对于任意的vi,它所带来的贡献是:1,比它小的vj的max(vi,vj)=vi,(vi&amp;amp;vj)=排序后的二进制累加和;2,比它小的vj的max(vi,vj)=vj,对应的v...

王小二的博客 306

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

计算机网络笔记and题解

上次博客就写了一点划分子网和子网掩码相关的计算 然后还要一个重要的五分类编址CIDR(也就是构造超网) 无分类编址CIDR(Classless Inter-Domain Routing)正式名字是无分类域间路由选择 特点: (1)CIDR消除了传统的A类、B类和C类地址以及划分子网的概念。CIDR把32位的IP地址划分为前后两部分,前面部分是“网络前缀”,用来指明网络,后面部分则用来指明主...

qq_43627239的博客 1552

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HDU 6349 ( 三原色图 )(两个最小生成树)

三原色图 Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 140    Accepted Submission(s): 47   Problem Description 度度熊有一张 n 个点 m 条边的无向图,所有点按照 1,...

LSD20164388的博客 678

hdu 4507 吉哥系列故事——恨7不成妻 题解(数位DP(超难))

原题链接: HDU:点我QωQ 题意简述 定义一个正整数和777有关,满足以下三个之一: 某一位是777 数位和是777的倍数 原数是777的倍数 那么就和777有关。给定QQQ和QQQ个区间[l,r][l,r][l,r],请求出l,rl,rl,r里面和777无关的数的平方和。 数据 输入 第一行是一个Q(Q&lt;=50)Q(Q&lt;=50)Q(Q<=50) 接下来Q...

LightningUZ的博客 540

hdu 3234 Exclusive-OR 题解(并查集,思维)

该死的期末复习终于结束了。。。 暑假来了\color{#ff0000}{暑假来了}暑假来了!!! 所以我就珂以非常开心的写博客了。 原题链接: hdu 题意简述 多组数据。你有一个没有确定的数列。有一些操作,格式: I p v第ppp个是vvv(如果某个位置有很多个值,就是矛盾的) I p q v(没错也是I,所以要用sscanf判一下空格数量)第ppp个异或第qqq个为vvv(这个异或值也可能会...

LightningUZ的博客 521

hdu 4035 maze 题解(期望,树形DP)

原题链接: hdu 题意简述 lxhgwwlxhgwwlxhgww在一个树上,初始在根,即111号节点。有三种情况: eie_iei​概率 直接胜利 (李胜利:叫我干嘛) kik_iki​概率 回到根 否则等概率选择一个点(珂能是父亲,也珂能是儿子),继续 求胜利的期望步数。 数据 输入 多组数据。先是一个TTT,表示T(T&lt;=30)T(T&lt;=30)T(T<=...

LightningUZ的博客 442

HDU 2196 题解

题意简述 给一个树(带权值,给定方法:第iii行两个数v,wv,wv,w,分别表示iii接到哪个点和边长),请依次输出从i(1&lt;=i&lt;=n)i(1&lt;=i&lt;=n)i(1<=i<=n)点开始能到的最长路长度。 数据 输入: 5 1 1//这是第2行,所以表示2和1之间有一个长度为1的边 2 1//同理,这个表示3—2[边长=1] 3 ...

LightningUZ的博客 439

HDU 4578 Transformation 题解(线段树)

题意简述 给定一个数列,要支持区间加,乘,赋值,和区间求一次,二次,三次方和。 数据 输入 第一行两个正整数n,mn,mn,m。nnn表示序列长度,mmm表示操作数。一个操作包含四个整数,o,l,r,xo,l,r,xo,l,r,x,o=1,2,3o=1,2,3o=1,2,3分别对应在[l,r][l,r][l,r]内加/乘/改为xxx。o=4o=4o=4表示询问[l,r][l,r][l,r]之间的x...

LightningUZ的博客 436

hdu 3461 Code Lock 题解 (思维,并查集)

原题链接: HDU 题意简述 给定nnn,表示密码长度为nnn。 给定mmm和mmm个区间,每个区间是珂以翻转的,即整体+k+k+k之后是相同的密码。注意,z+1=az+1=az+1=a。比如,如果一个长度为222的密码,111到222珂以翻转,那么ab,bc,cd,de⋯zaab,bc,cd,de\cdots zaab,bc,cd,de⋯za都是相同的密码。 问有多少种不同的密码。对109+71...

LightningUZ的博客 396

hdu 2795 Billboard 题解 (线段树)

原题链接: hdu 题意简述 有一个h∗wh*wh∗w的板子,和nnn条广告。每条广告的高度都是111,给定宽度。nnn条广告会被依次放到这个板子上,对于每条广告,会找到最上面的一行去放。在这最上面的一行里,又会找最左边的位置放。给定nnn个宽度,请输出nnn行,表示每个广告会被放在第几行。如果这个广告没有合适的位置放置,输出−1-1−1。 输入 多组数据。对于每组: h w n //如上所示 w...

LightningUZ的博客 351

HDU 6370 Werewolf 题解(并查集+图论+DFS)

题意简述 一群人玩♂游♂戏。游戏中有两种人,村民和狼人,村民只会说真话,狼人随便(真或假均珂)。给定一些关系,表示第iii个玩家说第jjj个玩家是狼人/村民。请分别找出确定是村民/狼人的个数。 数据 输入 多组数据。第一行是一个TTT,表示有TTT组数据。每组数据中有一个n(n&lt;=105)n(n&lt;=10^5)n(n<=105),表示有多少人。接下来nnn行,第ii...

LightningUZ的博客 349

poj 1989 & hdu 2712 & 洛谷5093 题解(贪心,思维,好题)

原题链接: poj hdu 洛谷 题意简述 给定一个序列,长度为n(&lt;=1e5)n(&lt;=1e5)n(<=1e5),所有数都在[1,k][1,k][1,k]范围内。请你在序列中找到一个长度最短的没有出现的子序列(不一定连续的那种)。 思路 题解里面有个奆佬是这么说的: 我们把原序列分组(一组是一段连续的子序列),一个组里包含[1,k][1,k][1,k]中的所有数...

LightningUZ的博客 345
上一篇: 洛谷5094 & poj 1990 [USACO2004OPEN]MooFest 题解(树状数组)
下一篇: 洛谷 2320 & bzoj 1192 题解 (思维,构造)
LightningUZ
博客等级 码龄9年 33粉丝 254原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值