当前位置: 首页 > news >正文

洛谷P2474 [SCOI2008] 天平 题解

思路学习的这一篇

step1

首先我们设 \(mn_{i,j}\)为砝码 \(i\) -砝码 \(j\) 的最小值(下文以\(a_i\)\(a_j\)代替)。
\(mx_{i,j}\)\(a_i-a_j\)的最大值。

当设\(a_i\)\(a_j\)的关系为\(g_{i,j}\)

\(g_{i,j}\)为=\(+\)时,

a[i]  a[j]    a[i]-a[j]3     1         22     1         13     2         1

明显,\(mx_{i,j}=2\),\(mn_{i,j}=1\)

\(g_{i,j}\)\(-\)时,

a[i]  a[j]    a[i]-a[j]1     3        -21     2        -12     3        -1

\(mx_{i,j}=-1\),\(mn_{i,j}=-2\)
\(g_{i,j}\)\(=\)
\(\because a_i=a_j\)
\(\therefore mn_{i,j}=mn_{i,j}=0\)

最后当\(g_{i,j}\)\(?\)
\(mx_{i,j}=2\),\(mn_{i,j}=-2\)(相当于\(+\)\(-\))的结合
综上

\[\begin{cases} mx_{i,j}=2,mn_{i,j}=1 & g_{i,j}为+\\ mx_{i,j}=-1,mn_{i,j}=-2 & g_{i,j}为-\\ mx_{i,j}=0,mn_{i,j}=0 & g_{i,j}为=\\ mx_{i,j}=2,mn_{i,j}=-2 & g_{i,j}为?\\ \end{cases} \]

step2

我们知道了\(mx\)\(mn\)的值,接下来题面说要唯一情况,所以我们要差分约束
\(mn_{i,j}\)记录的是\(a_i-a_j的最小差值\)。那我们可以找一个\(k\)

\[mn_{i,j}=a_i-a_j\\ \hspace{7em} =a_i-a_k+a_k-a_j\\ \hspace{5.7em}=mn_{i,k}+mn_{k,j} \]

因为题目要求唯一答案,\(mn_{i,j}\)要尽可能大
所以

\[mn_{i,j}=\max\limits_{k=1}^{n} mn_{i,k}+mn_{k,j} \]

同理

\[mx_{i,j}=\min\limits_{k=1}^{n} mx_{i,k}+mx_{k,j} \]

step3

\(A+B>a_i+a_j\)

\[A+B>a_i+a_j\\ \hspace{3em}A-a_i+B-a_j>0\rightarrow mn_{A,i}+mn_{B,j}>0\\ \hspace{3em}A-a_j+B-a_i>0\rightarrow mn_{A,j}+mn_{B,i}>0\\ \]

\(A+B<a_i+a_j\)类似

\[A+B<a_i+a_j\\ \hspace{3em}A-a_i+B-a_j<0\rightarrow mx_{A,i}+mx_{B,j}<0\\ \hspace{3em}A-a_j+B-a_i<0\rightarrow mx_{A,j}+mx_{B,i}<0\\ \]

\(A+B=a_i+a_j\)有点不同。因为既要满足\(mx\)相等,又要满足\(mn\)相等。

\[\hspace{-15em}\textcircled{1}\\ A+B=a_i+a_j\\ \hspace{8.2em}{A-a_i+B-a_j=0}\rightarrow{mx_{A,i}=mn_{A,i},mx_{B,j}=mn_{B,j}}\\ \hspace{-4.3em}{{A,i}+{B,j}=0} \]

\[\hspace{-15em}\textcircled{2}\\ A+B=a_i+a_j\\ \hspace{8.2em}{A-a_j+B-a_i=0}\rightarrow{mx_{A,j}=mn_{A,j},mx_{B,i}=mn_{B,i}}\\ \hspace{-4.3em}{{A,j}+{B,i}=0} \]

\(\because mx_{i,j}=mn_{i,j}\)
\(\therefore\)\(mx\) \(mn\)都行

step4

#include<bits/stdc++.h>
using namespace std;
const int N=55;
char g[N][N];
int mx[N][N],mn[N][N];
int n,A,B;
void csh()
{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(g[i][j]=='+')mx[i][j]=2,mn[i][j]=1;if(g[i][j]=='-')mx[i][j]=-1,mn[i][j]=-2;if(g[i][j]=='=')mx[i][j]=mn[i][j]=0;if(g[i][j]=='?')mx[i][j]=2,mn[i][j]=-2;if(i==j)mx[i][j]=mn[i][j]=0;}}
}
int main()
{cin>>n>>A>>B;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>g[i][j];}}csh();for(int k=1;k<=n;k++){	for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){mn[i][j]=max(mn[i][j],mn[i][k]+mn[k][j]);mx[i][j]=min(mx[i][j],mx[i][k]+mx[k][j]);}}}int c1=0,c2=0,c3=0;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){if(i==A||i==B||j==A||j==B)continue;if(mn[A][i]+mn[B][j]>0||mn[A][j]+mn[B][i]>0)c1++;if(mx[A][i]+mx[B][j]<0||mx[A][j]+mx[B][i]<0)c3++;if(mn[A][i]==mx[A][i]&&mn[B][j]==mx[B][j]&&mn[A][i]+mn[B][j]==0)c2++;else if(mn[A][j]==mx[A][j]&&mn[B][i]==mx[B][i]&&mn[A][j]+mn[B][i]==0)c2++;}}cout<<c1<<' '<<c2<<' '<<c3;return 0;
}
http://www.hskmm.com/?act=detail&tid=35049

相关文章:

  • 一天一款实用的AI工具,第8期,AI转素描风格
  • 2025年预应力张拉设备厂家推荐排行榜,千斤顶,预应力千斤顶,预应力张拉千斤顶,预应力张拉机,锚具,预应力锚具,桥梁施工锚具公司精选
  • 完整教程:【C++】string类
  • 2025年智能防爆灯厂家推荐排行榜,工矿灯,防爆工矿灯,LED防爆灯,防爆照明灯具源头厂家精选
  • 关于理工男对文学作品——《倾城之恋》
  • 计算机网络 命令telnet ping curl详解
  • Visual Studio 2022连接mysql数据库2,实现一个表的CRUD
  • Cypress 插件实战:让你的测试不再“偶尔掉链子”
  • Telnet发送邮件
  • 2025年实验室/手术室净化工程厂家推荐排行榜:涵盖无尘车间装修、洁净室建设、医院净化工程等全方位解决方案精选
  • 第五周第五天5.5
  • 软件设计中的需求分析——白日梦
  • 2025 石家庄全屋定制工厂推荐:河北森佰特木业,莫兰迪色系/工业风/意式/意式极简/中古风/侘寂风/现代简约/北欧风/奶油胡桃色全屋定制等风格任你选
  • 2025 钢制拖链源头厂家最新推荐排行榜:权威甄选优质品牌,破解选型难题助力企业精准采购
  • 机器学习可扩展性:从1到百万用户的架构演进
  • SOSDP
  • 2025年保洁公司推荐排行榜,驻场保洁/钟点保洁/开荒保洁/外包保洁/商场保洁/办公楼保洁/工厂保洁/医院保洁/企业保洁服务优选指南
  • 联通光猫烽火吉比特HG6145F获取超级密码
  • DBA必备脚本:Oracle获取绑定变量的字面SQL文本版版本替代
  • Newtonsoft.Json笔记 -JToken、JObject、JArray详解
  • 2025 最新活动跟拍直播公司推荐榜:广告影视圈权威评选,揭秘五大高性价比品牌覆盖西安及全国市场,会展 / 企业 / 赛事场景优选
  • 2025 年宣传片拍摄制作公司最新推荐排行榜:覆盖多领域优质服务商,助企业精准选靠谱合作伙伴
  • 02-02串口-USART模块
  • CF2110E Melody
  • 进化计算入门
  • 02-01串口理论知识
  • 赋能安全管控:NVR接入录像回放平台EasyCVR加油站监控应用场景与实际功能
  • .Net 自定义定时器
  • 2025年项目管理工具生态全景:技术主权与AI赋能的行业变革
  • 深度学习