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, ...
随机推荐
- Scrapy and Selenium
How to scrapy js? scrapy结合webkit抓取js生成的页面 http://www.cnblogs.com/Safe3/archive/2011/10/19/2217965.ht ...
- iOS 和 Android 中的后台运行问题
后台机制的不同,算是iOS 和 Android的一大区别了,最近发布的iOS7又对后台处理做了一定的更改,找时间总结一下编码上的区别,先做个记录. 先看看iOS的把,首先需要仔细阅读一下Apple的官 ...
- Python多线程(3)——Queue模块
Queue模块支持先进先出(FIFO)队列,支持多线程的访问,包括一个主要的类型(Queue)和两个异常类(exception classes). Python 2 中的Queue模块在Python ...
- codeforces 483A. Counterexample 解题报告
题目链接:http://codeforces.com/problemset/problem/483/A 题目意思:给出一个区间 [l, r],要从中找出a, b, c,需要满足 a, b 互质,b, ...
- UBUNTU中如何获得root权限
在终端中输入: sudo passwd root Enter new UNIX password: (在这输入你的密码) Retype new UNIX password: (确定你输入的密码) pa ...
- java静态与非静态区别
这里的静态,指以static关键字修饰的,包括类,方法,块,字段. 非静态,指没有用static 修饰的. 静态有一些特点: 1.全局唯一,任何一次的修改都是全局性的影响 2.只加载一次,优先于非静态 ...
- 【读书笔记】读《JavaScript模式》 - 函数复用模式之类式继承模式
实现类式继承的目标是通过构造函数Child()获取来自于另外一个构造函数Parent()的属性,从而创建对象. 1.类式继承模式#1 —— 默认方式(原型指向父函数实例) function Paren ...
- php 面向对象的方式访问数据库
<body> <?php //面向对象的方式访问数据库 //造对象 $db = new MySQLi("localhost","root",& ...
- 远程登录 - telnet、mstsc等工具的使用及遇到的问题
刚开始是看到老师在用mstsc远程登录oj服务器桌面对“远程登录”一系列的方法开始感兴趣.下面是我的学习笔记及遇到的一些问题的整理. Mstsc - 百度百科:http://baike.baidu.c ...
- Xamarin.Android开发实践(十一)
Xamarin.Android之使用百度地图起始篇 一.前言 如今跨平台开发层出不穷,而对于.NET而言时下最流行的当然还是 Xamarin,不仅仅能够让我们在熟悉的Vs下利用C#开发,在对原生态类库 ...