codeforce Gym 100342J Triatrip (bitset)

傻逼题,但是为什么别人的O(n^3)不会T?只是因为用了bitset优化。。。

附上一张bitset基本操作的表

#include<bits/stdc++.h>
using namespace std;

const int maxn = 1500+2;

char g[maxn][maxn];

bitset<maxn> b1[maxn],b2[maxn],res;

#define local
int main()
{
#ifdef local
    freopen("triatrip.in","r",stdin);
    freopen("triatrip.out","w",stdout);
#endif // local
    int n; scanf("%d",&n);
    for(int i = 0; i < n; i++){
        scanf("%s",g[i]);
    }
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            if(g[i][j] == ‘+‘) b1[i][j] = 1, b2[j][i] = 1;

    long long ans = 0;
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++) if(b1[i][j]){
            res = b1[j]&b2[i];
            ans += res.count();
        }

    printf("%I64d\n",ans/3);
    return 0;
}
时间: 2024-08-09 14:48:14

codeforce Gym 100342J Triatrip (bitset)的相关文章

Gym - 100342J Triatrip (bitset求三元环个数)

https://vjudge.net/problem/Gym-100342J 题意:给出一个邻接矩阵有向图,求图中的三元环的个数. 思路: 利用bitset暴力求解,记得最后需要/3. 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<cstdio> 5 #include<vector> 6 #include<stack> 7 #incl

Gym 101246H ``North-East&#39;&#39;(LIS)

http://codeforces.com/gym/101246/problem/H 题意: 给出n个点的坐标,现在有一个乐队,他可以从任一点出发,但是只能往右上方走(包括右方和上方),要经过尽量多的点.输出它可能经过的点和一定会经过的点. 思路: 分析一下第一个案例,在坐标图上画出来,可以发现,他最多可以经过4个点,有两种方法可以走. 观察一下,就可以发现这道题目就是要我们求一个LIS. 首先,对输入数据排一下顺序,x小的排前,相等时则将y大的优先排前面. 用二分法求LIS,这样在d数组中就可

[洛谷P4424][HNOI/AHOI2018]寻宝游戏(bitset)

P4424 [HNOI/AHOI2018]寻宝游戏 某大学每年都会有一次Mystery Hunt的活动,玩家需要根据设置的线索解谜,找到宝藏的位置,前一年获胜的队伍可以获得这一年出题的机会. 作为新生的你,对这个活动非常感兴趣.你每天都要从西向东经过教学楼一条很长的走廊,这条走廊是如此的长,以至于它被人戏称为infinite corridor.一次,你经过这条走廊时注意到在走廊的墙壁上隐藏着nn 个等长的二进制的数字,长度均为mm .你从西向东将这些数字记录了下来,形成一个含有nn 个数的二进制

codeforce No to Palindromes!(枚举)

1 /* 2 题意:给定一个字符串中没有任何长度>1的回文子串!求按照字典序的该串的下一个字符串 3 也不包含长度>1的任何回文子串! 4 5 思路:从最低位进行枚举,保证第i位 不与 第 i-1位和第 i-2位相同就好了!那么因为前边i-1 6 位没有长度>1的回文子串,那么前i位也不会出现!最后将最后边的字符按照相同的原则补齐就好了! 7 */ 8 #include<iostream> 9 #include<cstdio> 10 #include<cst

2007-2008 Winter Petrozavodsk Camp, Andrew Stankevich Contest 28 (ASC 28)J. Triatrip(bitset优化)

https://codeforc.es/gym/100342 bitset存边搞一搞 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N=2e3+5; 5 bitset<N>in[N],out[N],t; 6 char s[N][N]; 7 int n; 8 int main(){ 9 freopen("triatrip.in","

Gym - 100345H Settling the Universe Up(bitset)

https://vjudge.net/problem/Gym-100345H 题意: 给出一个图,求图中u能到达v的对数,并且u<v.并且会有更新和查询操作. 思路: bitset直接暴力,对于每次更新操作之后,再重新计算一遍即可.bitset是真的强大啊! 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #include<cstdio> 5 #include<ve

codeforce Gym 100418K Cards (概率,数学)

题意:麦田的故事,n张牌,取x张牌,记住前x张牌最大的值m,继续往后取,遇到第一张比m大的牌就停下来.求一个x使得最后的牌在整副牌里是最大的期望最大. 假设最大的牌是A,A在各种位置出现的概率就是相等的,在A固定的情况下,在它前面的牌中最大的牌B,出现在各个位置的概率也是相等的.所以就是要求一个X,使得 下面这个矩形框中的概率和最大. 样例,n=5 #include<bits/stdc++.h> int main() { int n;scanf("%d",&n);

codeforce Gym 101102A Coins (01背包变形)

01背包变形,注意dp过程的时候就需要取膜,否则会出错. 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MAXW 15005 #define N 155 #define LL long long #define MOD 1000000007 int w1[N],w2[N]; LL dp1[MAXW],dp2[MAXW]; int main(

[Bzoj3687]简单题(bitset)

3687: 简单题 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1150  Solved: 565[Submit][Status][Discuss] Description 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和.3.子集的算术和的算术和.4.子集的算术和的异或和.    目前为止,小呆已经解决了前三个问题,还剩下最后一个问题还没有解决,他决定把这个问题交给你,未来的集训队队员来实