码迷,mamicode.com
首页 > 其他好文 > 详细

解题:SCOI 2008 天平

时间:2018-10-24 10:55:24      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:pre   hid   ble   ef6   cst   hide   ref   int   lan   

题面

我们很容易想到差分约束,但是我们建出来图之后好像并不好下手,因为我们只能得到砝码间的大小关系,并不能容易地得到每个砝码的具体重量。

于是我们有了一种神奇的思路:既然得不到具体重量我们就不求具体重量了,只求出砝码间的关系即可,因为砝码只有三种还是可以讨论的。具体来说我们用$maxx[i][j]$表示$i-j$的最大值,$mini[i][j]$表示$i-j$的最小值,然后跑Floyd得出砝码间的关系,最后直接$n^2$枚举砝码检查即可

技术分享图片
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 const int N=55,M=2550;
 6 int maxx[N][N],mini[N][N];
 7 int n,a,b,cnt,ans1,ans2,ans3;
 8 char rd[N];
 9 int main()
10 {
11     scanf("%d%d%d",&n,&a,&b);
12     for(int i=1;i<=n;i++)
13     {
14         scanf("%s",rd+1);
15         for(int j=1;j<=n;j++)
16             if(rd[j]==+) maxx[i][j]=2,mini[i][j]=1;
17             else if(rd[j]==-) maxx[i][j]=-1,mini[i][j]=-2;
18             else if(rd[j]===||i==j) maxx[i][j]=mini[i][j]=0;
19             else maxx[i][j]=2,mini[i][j]=-2;
20     }
21     for(int k=1;k<=n;k++)
22         for(int i=1;i<=n;i++)
23             for(int j=1;j<=n;j++)
24                 if(i!=j&&i!=k&&j!=k)
25                 {
26                     maxx[i][j]=min(maxx[i][j],maxx[i][k]+maxx[k][j]);
27                     mini[i][j]=max(mini[i][j],mini[i][k]+mini[k][j]);
28                 }
29     for(int i=1;i<=n;i++)
30         if(i!=a&&i!=b)
31             for(int j=i+1;j<=n;j++)
32                 if(j!=a&&j!=b)
33                 {
34                     ans1+=(mini[a][i]>maxx[j][b]||mini[a][j]>maxx[i][b]);
35                     ans3+=(maxx[a][i]<mini[j][b]||maxx[a][j]<mini[i][b]); 
36                     ans2+=(maxx[a][i]==mini[a][i]&&maxx[j][b]==mini[j][b]&&maxx[a][i]==mini[j][b])||
37                           (maxx[a][j]==mini[a][j]&&maxx[i][b]==mini[i][b]&&maxx[a][j]==mini[i][b]);
38                 }
39     printf("%d %d %d",ans1,ans2,ans3);
40     return 0;
41 }
View Code

 

解题:SCOI 2008 天平

标签:pre   hid   ble   ef6   cst   hide   ref   int   lan   

原文地址:https://www.cnblogs.com/ydnhaha/p/9841470.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!