首先通过差分约束系统建图,用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. 如何用ssh挂载远程目录

    如何用ssh挂载远程目录 标签: sshserver服务器linux网络 2011-06-24 10:05 2979人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  2. wget批量下载

    wget -i download.txt 这样就会把download.txt里面列出的每个URL都下载下来. wget -c http://the.url.of/incomplete/file 使用断 ...

  3. 【转】Spring Quartz的原理

    Quartz是一个大名鼎鼎的Java版开源定时调度器,功能强悍,使用方便. 一.核心概念 Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可. 1.Job 表示 ...

  4. 19.递归法和非递归法反转链表[ReverseLinkedList]

    [题目] 输入一个链表的头结点,反转该链表,并返回反转后链表的头结点. [非递归]  C++ Code  12345678910111213141516   listnode *Reverse_Ite ...

  5. 1.saltstack基础笔记

    环境: master: 节点node1:阿里云:121.42.195.15 centos6.6 minion: 节点node2:腾讯云:182.254.157.19 centos6.6 一.salts ...

  6. Maven的安装、配置及使用入门

    Maven的安装.配置及使用入门 本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与 ...

  7. Java的switch用法

    下面是switch的用法: var status = msg;        switch (status)    //status是表达式        {            case 0:st ...

  8. HDU 4704 Sum (高精度+快速幂+费马小定理+二项式定理)

    Sum Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%I64d & %I64u Submit Status  ...

  9. Java性能优化权威指南-读书笔记(三)-JVM性能调优-内存占用

    新生代.老年代.永久代的概念不多说,这三个空间中任何一个不能满足内存分配请求时,就会发生垃圾收集. 新生代不满足内存分配请求时,发生Minor GC,老年代.永久代不满足内存分配请求时,发生Full ...

  10. Android activity_main.xml删除边缘距离,充满屏幕

    删除android:paddingBottom.android:paddingLeft.android:paddingRight和android:paddingTop四个属性