题解 [ABC258G] Triangle
枚举 的算法是显然的。
考虑优化掉一个 ,如果枚举 ,那么显然需要找出有多少个 同时满足 ,我们可以将 和 看作两个二进制数,那么同时等于 的位置就是并起来等于 的位置, 维护即可。
那么 的条件,只需要在 中维护 后面的位即可。
代码:
#include<bits/stdc++.h> using namespace std; typedef long long LL; LL read() { LL sum=0,flag=1; char c=getchar(); while(c<'0'||c>'9') {if(c=='-') flag=-1; c=getchar();} while(c>='0'&&c<='9') {sum=sum*10+c-'0'; c=getchar();} return sum*flag; } const int N=3100; int n,m; string s[N]; bitset<N> a[N]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>s[i]; s[i]=" "+s[i]; for(int j=i+1;j<=n;j++) if(s[i][j]=='1') a[i][j]=1; } LL ans=0; for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { if(s[i][j]=='1') { ans+=(a[i]&a[j]).count(); } } } cout<<ans; return 0; }
标签:
题解
, 数据结构优化——bitset
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效