1077: [SCOI2008]天平
来源:互联网 发布:dnd跑团软件 编辑:程序博客网 时间:2024/04/28 22:15
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 305 Solved: 166
Description
你有n个砝码,均为1克,2克或者3克。你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系。
你把其中两个砝码A和B放在天平的左边,需要另外选出两个砝码放在天平的右边。问:有多少种选法使得天平的左
边重(c1)、一样重(c2)、右边重(c3)?(只有结果保证惟一的选法才统计在内)
Input
第一行包含三个正整数n,A,B(1<=A,B<=N,A和B不相等)。砝码编号为1~N。以下n行包含重量关系矩阵,
其中第i行第j个字符为加号“+”表示砝码i比砝码j重,减号“-”表示砝码i比砝码j轻,等号“=”表示砝码i和砝
码j一样重,问号“?”表示二者的关系未知。存在一种情况符合该矩阵
Output
仅一行,包含三个整数,即c1,c2和c3。
Sample Input
6 2 5
?+????
-?+???
?-????
????+?
???-?+
????-?
Sample Output
1 4 1
HINT
【数据规模】 4<=n<=50
解答:
dx[i][j]表示a[i]-a[j]的最大值
dn[i][j]表示a[i]-a[j]的最小值
分别floyed后枚举天平的另外一边,重点时判断
#include<cstdio>#include<cstring>using namespace std;int dx[55][55],dn[55][55];char s[55];int main() { int n,A,B,C,D; scanf("%d%d%d",&n,&A,&B); for(int i=1; i<=n; i++) { scanf("%s",s+1); for(int j=1; j<=n; j++) { if( (s[j]=='=') || (i==j) ) dx[i][j]=dn[i][j]=0; else if(s[j]=='-') dx[i][j]=-1,dn[i][j]=-2; else if(s[j]=='+') dx[i][j]=2,dn[i][j]=1; else dx[i][j]=2,dn[i][j]=-2; } } for(int k=1;k<=n;k++) for(int i=1;i<=n;i++)if(i!=k) for(int j=1;j<=n;j++)if(j!=i&&j!=k) if(dx[i][j]>dx[i][k]+dx[k][j]) dx[i][j]=dx[i][k]+dx[k][j]; for(int k=1;k<=n;k++) for(int i=1;i<=n;i++)if(i!=k) for(int j=1;j<=n;j++)if(j!=i&&j!=k) if(dn[i][j]<dn[i][k]+dn[k][j]) dn[i][j]=dn[i][k]+dn[k][j]; int c1,c2,c3; c1=c2=c3=0; for(C=1; C<=n; C++)if(C!=A&&C!=B) for(D=1; D<C; D++) if(D!=A&&D!=B) { if((dn[A][C]>dx[D][B])||(dn[B][C]>dx[D][A]))c1++; if((dx[C][A]==dn[C][A] && dx[D][B]==dn[D][B]&&dn[C][A]+dn[D][B]==0)|| (dx[D][A]==dn[D][A] && dx[C][B]==dn[C][B]&&dn[D][A]+dn[C][B]==0) ) c2++; if((dn[C][A]>dx[B][D])||(dn[D][A]>dx[B][C]))c3++; } printf("%d %d %d\n",c1,c2,c3); return 0;}
1 0
- 1077: [SCOI2008]天平
- [bzoj] 1077: [SCOI2008]天平
- [bzoj][SCOI2008]天平
- BZOJ1077: [SCOI2008]天平
- bzoj1077: [SCOI2008]天平
- BZOJ P1077[SCOI2008]天平
- 【BZOJ1077】【SCOI2008】天平
- bzoj 1077: [SCOI2008]天平 (差分约束)
- [BZOJ1077][SCOI2008]天平(差分约束)
- 【BZOJ】【P1077】【SCOI2008】【天平】【题解】【差分约束+乱搞】
- 天平
- BZOJ 1077 天平 (差分约束)
- [SCOI2008]配对
- 天平感悟
- 天平问题
- 天平称重
- 天平问题
- BZOJ1077 天平
- CodeForces 616D Longest k-Good Segment(尺取)
- AndroidStudio项目导入到Eclipse项目
- 基于隐马尔可夫模型的有监督词性标注
- javaMail小工具--发送邮件
- JSP与Servlet间数据传输(session登录注销)
- 1077: [SCOI2008]天平
- SynchronousQueue 同步队列
- DOM的学习笔记
- Socket 断线重连问题
- Unity笔记——物理引擎中碰撞器(Collider)的运用
- location的配置过程以及http流程中的使用情况
- mp4v2同时录制视频和声音播放时会在中途自动终止的解决方法
- 一段文字中插入一张图片(lable,textview为例)
- getApplication()、getApplicationContext()、getBaseContext()、MainActivity.this、this