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","r",stdin);//没这两行就wa 服了
10     freopen("triatrip.out","w",stdout);
11     scanf("%d",&n);
12     for(int i=1;i<=n;i++){
13         scanf("%s",s[i]+1);
14     }
15     for(int i=1;i<=n;i++){
16         for(int j=1;j<=n;j++){
17             if(s[i][j]==‘+‘){
18                 in[i][j]=1;
19                 out[j][i]=1;
20             }
21         }
22     }
23     ll ans=0;
24     for(int i=1;i<=n;i++){
25         for(int j=1;j<=n;j++){
26             if(s[i][j]==‘+‘){
27                 t=(in[j])&(out[i]);
28                 ans+=t.count();
29             }
30         }
31     }
32     cout<<ans/3<<endl;
33 }

原文地址:https://www.cnblogs.com/ccsu-kid/p/11470268.html

时间: 2024-08-08 17:39:51

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

2011-2012 Winter Petrozavodsk Camp, Andrew Stankevich Contest 41 (ASC 41)——莫队算法——Data Mining

/* 莫队算法是离线算法,用来解决已知l,r问你l,r里面值的问题 对块进行排序,后面的块通过前面的块左移右移得到,所以可能有的情况能得到O(1)或者较低的复杂度 排序的时候除以跟好n(?) 本题题意:从l到r区间内问有多少个不同的数,询问很多 */ #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<cmath> #include<ve

2018-2019 Summer Petrozavodsk Camp, Oleksandr Kulkov Contest 2解题报告

C 签到题,计算前缀和,把所有的负项加入到一个set中,如果当前前缀和小于0,则从set中从小到大弹出负项,并且把弹出的项加回到前缀和中. #include <bits/stdc++.h> using namespace std; #define ll long long ll input(){ ll x=0,f=0;char ch=getchar(); while(ch<'0'||ch>'9') f|=ch=='-',ch=getchar(); while(ch>='0'&

2015 UESTC Winter Training #7【2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest】

2015 UESTC Winter Training #7 2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest 据说这套题写出3题就是金牌水平了... Problem D. Group Stage 足球比赛,现在有n(2<= n <=100)支球队.要从中选拔m(1<= m <=n-1)支球队,每支球队互相比赛一场,即比赛n*(n-1)/2场,胜者得3分,平局各得1分.最后从大到小列出排名,如果有

Petrozavodsk Winter-2013. Ural FU Contest Problem D. Five Palindromes manacher、一个串切割成5个回文子串、优化

Ural Federal University Contest, SKB Kontur Cup Petrozavodsk Winter Training Camp, Saturday, February 2, 2013 Problem D. Five Palindromes Input file: input.txt Output file: output.txt Time limit: 2 seconds (3 seconds for Java) Memory limit: 256 mebib

Petrozavodsk Summer-2016. Warsaw U Contest, XVI Open Cup Onsite.

Petrozavodsk Summer-2016. Warsaw U Contest, XVI Open Cup Onsite. Problem A. Gambling Problem B. Colourings Problem C. Counter-manifestation Problem D. Championships 持续删除度数小于d的点 找出最大联通块 Problem E. Neon Problem F. Robots Problem G. Equation Problem H.

【二分】Petrozavodsk Winter Training Camp 2017 Day 1: Jagiellonian U Contest, Monday, January 30, 2017 Problem A. The Catcher in the Rye

一个区域,垂直分成三块,每块有一个速度限制,问你从左下角跑到右上角的最短时间. 将区域看作三块折射率不同的介质,可以证明,按照光路跑时间最短. 于是可以二分第一个入射角,此时可以推出射到最右侧边界上的位置,看什么时候恰好射到右上角即可. 这份sb代码貌似挂精度了. #include<cstdio> #include<iostream> #include<cmath> using namespace std; #define EPS 0.0000000001 int T,

【计算几何】【极角排序】【二分】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem J. Triangles

平面上给你n(不超过2000)个点,问你能构成多少个面积在[A,B]之间的Rt三角形. 枚举每个点作为直角顶点,对其他点极角排序,同方向的按长度排序,然后依次枚举每个向量,与其对应的另一条直角边是单调的,可以用一个pointer做出来,然后可以得出那些同方向的向量的区间(这个代码好像有点问题,可能会退化,最好确定了一个LL之后,对一个方向的不要重复算RR.这里如果也改成二分就比较好,复杂度不会退化).然后通过二分可以得到A使得面积在[A,B]间的有哪些(其实这个因为也是单调的,好像也没必要二分,

【线段树】【扫描线】Petrozavodsk Winter Training Camp 2018 Day 5: Grand Prix of Korea, Sunday, February 4, 2018 Problem A. Donut

题意:平面上n个点,每个点带有一个或正或负的权值,让你在平面上放一个内边长为2l,外边长为2r的正方形框,问你最大能圈出来的权值和是多少? 容易推出,能框到每个点的 框中心 的范围也是一个以该点为中心的相同大小的框. 于是,把每个点的框拆成4条线.从下往上扫过去,最下面的线,给[R,R]区间加上该点的权值,然后上面再给[L,L]减去,然后上面再给[L,L]加上,然后再往上在给[R,R]减去即可.每次扫完一行,就用线段树的全局最大值尝试更新答案. 两个坑点:首先,由于线段树里存储的是离散后的点,所

2015-2016 Petrozavodsk Winter Training Camp, Makoto rng_58 Soejima Сontest 4题解

传送门 被\(jz\)姐姐带着飞--代码的话直接在上面找吧 \(A\) 发现这样的数不会很多,直接把所有的都打表打出来就行了 \(B\) 转换成切比雪夫距离后,每个点分别向\(x,y\)坐标最大最小的点连边,跑个最大生成树就行了 \(C\) 最终的柿子一定行如\(s\pm t=2a_{i_1}-2a_{i_2}+...\),那么直接\(bfs\)出所有可能的结果,然后根据奇偶性判断一下就行了 原文地址:https://www.cnblogs.com/yuanquming/p/11715366.h