BZOJ1077 : [SCOI2008]天平
首先通过差分约束系统建图,用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]天平的更多相关文章
- 【BZOJ1077】天平(差分约束)
[BZOJ1077]天平(差分约束) 题面 BZOJ 洛谷 题解 利用矩阵可以很容易得到两个点之间的最大差和最小差,再利用这个信息判断即可.差分约束用\(Floyd\)计算.时间复杂度\(O(n^3) ...
- 【洛谷】2474:[SCOI2008]天平【差分约束系统】
P2474 [SCOI2008]天平 题目背景 2008四川NOI省选 题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A ...
- 洛谷P2474 [SCOI2008]天平
P2474 [SCOI2008]天平 题目背景 2008四川NOI省选 题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A ...
- [SCOI2008]天平
题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A 和B 放在天平的左边,需要另外选出两个砝码放在天平的右边.问:有多少种 ...
- 洛谷2474 [SCOI2008] 天平 差分约束->枚举
题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A 和B 放在天平的左边,需要另外选出两个砝码放在天平的右边.问:有多少种 ...
- [SCOI2008]天平 差分约束
---题面--- 题解: 差分约束学得实在是太烂了,,,,QAQ 这里先记下: a - b >= x ---> a >= b + x ----> b - ...
- [luogu2474 SCOI2008]天平(floyd差分约束)
传送门 Solution 由于重量只有三种情况,那么想到用差分约束. 由于范围比较小,想到可以floyed求差分约束,暴力求天平另一边 Code #include <cstdio> #in ...
- BZOJ1077 并查集
1077: [SCOI2008]天平 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 416 Solved: 224[Submit][Status][ ...
- 2021.07.23 P2474 天平(差分约束)
2021.07.23 P2474 天平(差分约束) [P2474 SCOI2008]天平 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 已知A,B和每两个点点权,求点权i, ...
随机推荐
- 如何用ssh挂载远程目录
如何用ssh挂载远程目录 标签: sshserver服务器linux网络 2011-06-24 10:05 2979人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- wget批量下载
wget -i download.txt 这样就会把download.txt里面列出的每个URL都下载下来. wget -c http://the.url.of/incomplete/file 使用断 ...
- 【转】Spring Quartz的原理
Quartz是一个大名鼎鼎的Java版开源定时调度器,功能强悍,使用方便. 一.核心概念 Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可. 1.Job 表示 ...
- 19.递归法和非递归法反转链表[ReverseLinkedList]
[题目] 输入一个链表的头结点,反转该链表,并返回反转后链表的头结点. [非递归] C++ Code 12345678910111213141516 listnode *Reverse_Ite ...
- 1.saltstack基础笔记
环境: master: 节点node1:阿里云:121.42.195.15 centos6.6 minion: 节点node2:腾讯云:182.254.157.19 centos6.6 一.salts ...
- Maven的安装、配置及使用入门
Maven的安装.配置及使用入门 本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与 ...
- Java的switch用法
下面是switch的用法: var status = msg; switch (status) //status是表达式 { case 0:st ...
- HDU 4704 Sum (高精度+快速幂+费马小定理+二项式定理)
Sum Time Limit:1000MS Memory Limit:131072KB 64bit IO Format:%I64d & %I64u Submit Status ...
- Java性能优化权威指南-读书笔记(三)-JVM性能调优-内存占用
新生代.老年代.永久代的概念不多说,这三个空间中任何一个不能满足内存分配请求时,就会发生垃圾收集. 新生代不满足内存分配请求时,发生Minor GC,老年代.永久代不满足内存分配请求时,发生Full ...
- Android activity_main.xml删除边缘距离,充满屏幕
删除android:paddingBottom.android:paddingLeft.android:paddingRight和android:paddingTop四个属性