首先通过差分约束系统建图,用Floyed算法求出任意两个砝码差值的上下界。

然后暴力枚举放在右边的砝码C,D,通过与A,B差值的上下界分类讨论统计方案。

时间复杂度$O(N^3)$。

#include<cstdio>
#define rep(i) for(i=0;i<=n+1;i++)
const int N=55,inf=1000;
int n,A,B,i,j,k,C,D,dx[N][N],dn[N][N],c1,c2,c3;char s[N][N];
inline void umin(int&a,int b){if(a>b)a=b;}
inline void umax(int&a,int b){if(a<b)a=b;}
int main(){
scanf("%d%d%d",&n,&A,&B);
rep(i)rep(j)if(i!=j)dx[i][j]=inf*2;
for(i=1;i<=n;i++)dx[i][0]=dx[n+1][i]=0;
dx[0][n+1]=2,dx[n+1][0]=-2;
for(i=1;i<=n;i++)for(scanf("%s",s[i]+1),j=1;j<=n;j++){
if(s[i][j]=='-')dx[j][i]=-1;
if(s[i][j]=='=')dx[i][j]=0;
}
rep(k)rep(i)rep(j)umin(dx[i][j],dx[i][k]+dx[k][j]);
rep(i)rep(j)if(i!=j)dn[i][j]=-inf*2;
for(i=1;i<=n;i++)dn[0][i]=dn[i][n+1]=0;
dn[0][n+1]=2,dn[n+1][0]=-2;
for(i=1;i<=n;i++)for(j=1;j<=n;j++){
if(s[i][j]=='-')dn[i][j]=1;
if(s[i][j]=='=')dn[i][j]=0;
}
rep(k)rep(i)rep(j)umax(dn[i][j],dn[i][k]+dn[k][j]);
for(C=1;C<=n;C++)if(C!=A&&C!=B)for(D=1;D<C;D++)if(D!=A&&D!=B){
if(dn[C][A]>dx[B][D]||dn[D][A]>dx[B][C])c1++;
if((dn[C][A]==dx[C][A]&&dn[B][D]==dx[B][D]&&dn[C][A]==dn[B][D])||
(dn[D][A]==dx[D][A]&&dn[B][C]==dx[B][C]&&dn[D][A]==dn[B][C]))c2++;
if(dx[C][A]<dn[B][D]||dx[D][A]<dn[B][C])c3++;
}
return printf("%d %d %d",c1,c2,c3),0;
}

  

BZOJ1077 : [SCOI2008]天平的更多相关文章

  1. 【BZOJ1077】天平(差分约束)

    [BZOJ1077]天平(差分约束) 题面 BZOJ 洛谷 题解 利用矩阵可以很容易得到两个点之间的最大差和最小差,再利用这个信息判断即可.差分约束用\(Floyd\)计算.时间复杂度\(O(n^3) ...

  2. 【洛谷】2474:[SCOI2008]天平【差分约束系统】

    P2474 [SCOI2008]天平 题目背景 2008四川NOI省选 题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A ...

  3. 洛谷P2474 [SCOI2008]天平

    P2474 [SCOI2008]天平 题目背景 2008四川NOI省选 题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A ...

  4. [SCOI2008]天平

    题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A 和B 放在天平的左边,需要另外选出两个砝码放在天平的右边.问:有多少种 ...

  5. 洛谷2474 [SCOI2008] 天平 差分约束->枚举

    题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A 和B 放在天平的左边,需要另外选出两个砝码放在天平的右边.问:有多少种 ...

  6. [SCOI2008]天平 差分约束

    ---题面--- 题解: 差分约束学得实在是太烂了,,,,QAQ 这里先记下: a - b >= x  ---> a >= b + x     ---->        b - ...

  7. [luogu2474 SCOI2008]天平(floyd差分约束)

    传送门 Solution 由于重量只有三种情况,那么想到用差分约束. 由于范围比较小,想到可以floyed求差分约束,暴力求天平另一边 Code #include <cstdio> #in ...

  8. BZOJ1077 并查集

    1077: [SCOI2008]天平 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 416  Solved: 224[Submit][Status][ ...

  9. 2021.07.23 P2474 天平(差分约束)

    2021.07.23 P2474 天平(差分约束) [P2474 SCOI2008]天平 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 已知A,B和每两个点点权,求点权i, ...

随机推荐

  1. git初学者这样就行了。

    Create a new repository on the command line touch README.md git init git add README.md git commit -m ...

  2. 速度之王 — LZ4压缩算法(三)

    LZ4使用 make / make clean 得到可执行程序:lz4.lz4c Usage: ./lz4 [arg] [input] [output] input : a filename Argu ...

  3. 解决php configure: error: Cannot find ldap libraries in /usr/lib.错误

    解决php configure: error: Cannot find ldap libraries in /usr/lib.错误 iitshare 分类:Linux,PHP,项目实施 | 标签:Ca ...

  4. How to install OpenResty

    How to install OpenResty 15 January 2014, 6:18 am   OpenResty, also called “ngx_openresty”, is a web ...

  5. 使用msgfmt编译多语言文件

    msgfmt --statistics --verbose -o django.mo django.po

  6. 75 int类型数组中除了一个数出现一次或两次以外,其他数都出现三次,求这个数。[2行核心代码]

    [本文链接] http://www.cnblogs.com/hellogiser/p/single-number-of-array-with-other-three-times.html [题目] i ...

  7. 多表利用DIH批量导入数据并建立索引注意事项

    如果希望同时对多个表进行全文检索,那我们该如何处理呢?利用DIH导入数据并建立索引时.schema.xml中配置了uniqueKey为id <uniqueKey>id</unique ...

  8. Java for LeetCode 162 Find Peak Element

    A peak element is an element that is greater than its neighbors. Given an input array where num[i] ≠ ...

  9. 原创centos7安装hadoop2.7(转载请注明出处)

    启用ip vi /etc/sysconfig/network-scripts/ifcfg-ONBOOT=yes 编辑DNS /etc/resolv.conf nameserver 114.114.11 ...

  10. iftop安装

    安装方法1.编译安装 如果采用编译安装可以到iftop官网下载最新的源码包. 安装前需要已经安装好基本的编译所需的环境,比如make.gcc.autoconf等.安装iftop还需要安装libpcap ...