[SCOI2008]天平
题目描述
你有n个砝码,均为1克,2克或者3克。你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系。你把其中两个砝码A 和B 放在天平的左边,需要另外选出两个砝码放在天平的右边。问:有多少种选法使得天平的左边重(c1)、一样重(c2)、右边重(c3)?(只有结果保证惟一 的选法才统计在内)
输入输出格式
输入格式:
第一行包含三个正整数n,A,B(1<=A,B<=N,A 和B 不相等)。砝码编号
为1~N。以下n行包含重量关系矩阵,其中第i行第j个字符为加号“+”表示砝
码i比砝码j重,减号“-”表示砝码i比砝码j 轻,等号“=”表示砝码i和砝码
j一样重,问号“?”表示二者的关系未知。存在一种情况符合该矩阵。
输出格式:
仅一行,包含三个整数,即c1,c2和c3。
输入输出样例
14 8 4
?+???++?????++
-??=?=???????=
??????????=???
?=??+?==??????
???-???-???-??
-=????????????
-??=???=?-+???
???=+?=???????
??????????????
??????+???????
??=???-????-??
????+?????+???
-?????????????
-=????????????
18 12 11
说明
4<=n<=50
A+B>C+D <=> A-C>D-B 由此我们可以使用差分约束
用数组Max[i][j],Min[i][j]分别表示 i-j 的最大值和最小值,使用Floyd
对这个数组用Floyd,就可以求出最终两点间的大小关系
Max[i][j]=min(Max[i][j],Max[i][k]+Max[k][j])
Min[i][j]=max(Min[i][j],Min[i][k]+Min[k][j])
拿Max来说明:比如i-j<=2,i-k<=1,k-j<=0
那么显然i-j条件就变成i-j<=1
于是判断就可以枚举两个砝码
如果Min[s1][i]>Max[j][s2]那么显然大小关系是确定的
就有s1-i>j-s2 => s1+s2>i+j 于是c1可以+1
c2和c3同理
zyys(贼有意思)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int Max[][],Min[][];
char s[];
int n,s1,s2,c1,c2,c3;
int main()
{int i,j,k,l;
cin>>n>>s1>>s2;
for (i=;i<=n;i++)
{
scanf("%s",s);
l=strlen(s);
for (j=;j<l;j++)
{
if (s[j]=='='||i==j+)
Max[i][j+]=,Min[i][j+]=;
else
if (s[j]=='+')
Max[i][j+]=,Min[i][j+]=;
else
if (s[j]=='-')
Max[i][j+]=-,Min[i][j+]=-;
else
if (s[j]=='?')
Max[i][j+]=,Min[i][j+]=-;
}
}
for (k=;k<=n;k++)
for (i=;i<=n;i++)
if (i!=k)
{
for (j=;j<=n;j++)
if (i!=j&&k!=j)
{
Max[i][j]=min(Max[i][j],Max[i][k]+Max[k][j]);
Min[i][j]=max(Min[i][j],Min[i][k]+Min[k][j]);
}
}
for (i=;i<=n;i++)
if (i!=s1&&i!=s2)
{
for (j=;j<i;j++)
if (j!=s1&&j!=s2)
{
if (Min[s1][i]>Max[j][s2]||Min[s1][j]>Max[i][s2])
c1++;
if (Max[s1][i]<Min[j][s2]||Max[s2][i]<Min[j][s1])
c3++;
if ((Max[s1][i]==Min[s1][i]&&Max[j][s2]==Min[j][s2]&&Max[s1][i]==Max[j][s2])||(Max[s1][j]==Min[s1][j]&&Max[i][s2]==Min[i][s2]&&Max[s1][j]==Max[i][s2])) c2++;
}
}
cout<<c1<<' '<<c2<<' '<<c3;
}
[SCOI2008]天平的更多相关文章
- 【洛谷】2474:[SCOI2008]天平【差分约束系统】
P2474 [SCOI2008]天平 题目背景 2008四川NOI省选 题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A ...
- 洛谷P2474 [SCOI2008]天平
P2474 [SCOI2008]天平 题目背景 2008四川NOI省选 题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A ...
- 洛谷2474 [SCOI2008] 天平 差分约束->枚举
题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A 和B 放在天平的左边,需要另外选出两个砝码放在天平的右边.问:有多少种 ...
- BZOJ1077 : [SCOI2008]天平
首先通过差分约束系统建图,用Floyed算法求出任意两个砝码差值的上下界. 然后暴力枚举放在右边的砝码C,D,通过与A,B差值的上下界分类讨论统计方案. 时间复杂度$O(N^3)$. #include ...
- [SCOI2008]天平 差分约束
---题面--- 题解: 差分约束学得实在是太烂了,,,,QAQ 这里先记下: a - b >= x ---> a >= b + x ----> b - ...
- [luogu2474 SCOI2008]天平(floyd差分约束)
传送门 Solution 由于重量只有三种情况,那么想到用差分约束. 由于范围比较小,想到可以floyed求差分约束,暴力求天平另一边 Code #include <cstdio> #in ...
- 2021.07.23 P2474 天平(差分约束)
2021.07.23 P2474 天平(差分约束) [P2474 SCOI2008]天平 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 已知A,B和每两个点点权,求点权i, ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
随机推荐
- 2017-2018-1 Java演绎法 第二周 作业
团队任务:讨论Android上的游戏软件 参考现代软件工程 第一章 [概论]练习与讨论: 软件有很多种,也有各种分类办法,本次团队任务是讨论选取Android上的一个游戏软件,考虑到每位组员接触的游戏 ...
- 网页设计入门<一>
俗话说:技多不压身.实习周,网页设计是之一,边学边总结... 本次网页设计基于Adobe Dreamweaver CS6开发平台,根据实习老师的暴力指导,为什么说暴力呢? 没有基础,没有预告,打开软件 ...
- css变化代码
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- Column Addition~DP(脑子抽了,当时没有想到)
Description A multi-digit column addition is a formula on adding two integers written like this:
- kali linux 2.0 web 渗透测试 电子书
原创 2017-05-31 玄魂工作室 玄魂工作室 打起精神,重新开启订阅号的原创文章写作工作,但是需要点时间,请耐心等待. 求资料的同学,没有及时回复的,请再次留言,我会尽快处理.今天分享两本电子书 ...
- Python内置函数(34)——map
英文文档: map(function, iterable, ...) Return an iterator that applies function to every item of iterabl ...
- restful架构风格设计准则(五)用户认证和session管理
读书笔记,原文链接:http://www.cnblogs.com/loveis715/p/4669091.html,感谢作者! Authentication REST提倡无状态约束,这就要求:用户状态 ...
- Linux实战案例(2)实例讲解使用软连接的场景和过程
=================================== 使用场景:使用软连接简化版本切换动作 进入操作目录, cd /opt/modules/ ==================== ...
- 记录下项目中常用到的JavaScript/JQuery代码二(大量实例)
记录下项目中常用到的JavaScript/JQuery代码一(大量实例) 1.input输入框监听变化 <input type="text" style="widt ...
- JavaScript作用域那些事
作用域 (1).作用域也叫执行环境(execution context)是JavaScript中一个重要的概念.执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为.在JavaScript ...