题目


分析

非传统差分约束??

注意只有结果保证惟一的选法才统计在内

这就为差分约束提供了依据

以左边重为例,假设现在选择的砝码为\(i,j\),

那么\(\because A+B>i+j\therefore A-i>j-B\)

既然结果保证唯一,那么也就是\(min(A-i)>max(j-B)\)

右边重同理,也就是\(max(A-i)<min(j-B)\)

同样重也很显然,就是

\(min(A-i)=max(A-i),min(j-B)=max(j-B),max(A-i)=min(j-B)\)

讲到这里该怎么做,floyd现身了,考虑维护最短路和最长路,

  1. 等号也就是\(i-j\leq 0,i-j\geq 0\)
  2. 大于号也就是\(i-j\leq -1,i-j\geq -2\)
  3. 小于号也就是\(i-j\leq 2,i-j\geq 1\)
  4. 问号也就是\(i-j\geq -2,i-j\leq 2\)

按照这个floyd建图分别跑最短路和最长路即可

这和传统的SPFA有什么区别呢,可以发现它求的是多源最短路,

那么Floyd要比SPFA更加方便


代码

#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int N=51; char s[N];
int n,A,B,dmn[N][N],dmx[N][N],ans1,ans2,ans3;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline signed min(int a,int b){return a<b?a:b;}
inline signed max(int a,int b){return a>b?a:b;}
signed main(){
scanf("%d%d%d",&n,&A,&B);
for (rr int i=1;i<=n;++i){
scanf("%s",s+1),s[i]='=';
for (rr int j=1;j<=n;++j)
switch (s[j]){
case '=':{
dmn[i][j]=0,dmx[i][j]=0;
break;
}
case '+':{
dmn[i][j]=1,dmx[i][j]=2;
break;
}
case '-':{
dmn[i][j]=-2,dmx[i][j]=-1;
break;
}
case '?':{
dmn[i][j]=-2,dmx[i][j]=2;
break;
}
}
}
for (rr int k=1;k<=n;++k)
for (rr int i=1;i<=n;++i)
for (rr int j=1;j<=n;++j)
if ((i^k)&&(i^j)&&(k^j))
dmn[i][j]=max(dmn[i][j],dmn[i][k]+dmn[k][j]),//下界
dmx[i][j]=min(dmx[i][j],dmx[i][k]+dmx[k][j]);//上界
for (rr int i=1;i<=n;++i)
for (rr int j=1;j<i;++j)
if ((i^j)&&(i^A)&&(i^B)&&(j^A)&&(j^B)){
if (dmn[A][i]>dmx[j][B]||dmn[B][i]>dmx[j][A]) ++ans1;
if (dmn[i][A]>dmx[B][j]||dmn[i][B]>dmx[A][j]) ++ans3;
if ((dmn[A][i]==dmx[A][i]&&dmn[j][B]==dmx[j][B]&&dmn[A][i]==dmx[j][B])||
(dmn[A][j]==dmx[A][j]&&dmn[i][B]==dmx[i][B]&&dmn[A][j]==dmx[i][B]))
++ans2;
}
return !printf("%d %d %d",ans1,ans2,ans3);
}

#差分约束,Floyd#洛谷 2474 [SCOI2008]天平的更多相关文章

  1. 洛谷2474 [SCOI2008] 天平 差分约束->枚举

    题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A 和B 放在天平的左边,需要另外选出两个砝码放在天平的右边.问:有多少种 ...

  2. 洛谷P2474 [SCOI2008]天平

    P2474 [SCOI2008]天平 题目背景 2008四川NOI省选 题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A ...

  3. 差分约束算法————洛谷P4878 [USACO05DEC] 布局

    题目: 不难看出题意主要是给出ml+md个格式为xi-xj<=ak的不等式,xi-xj为i,j俩头牛的距离,要我们求x1-xn的最大值. 经过上下加减我们可以将这几个不等式化成x1-xn< ...

  4. 【最短路·差分约束】洛谷P1250

    题目描述 一条街的一边有几座房子.因为环保原因居民想要在路边种些树.路边的地区被分割成块,并被编号成1..N.每个部分为一个单位尺寸大小并最多可种一棵树.每个居民想在门前种些树并指定了三个号码B,E, ...

  5. 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)

    洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...

  6. BZOJ1079或洛谷2476 [SCOI2008]着色方案

    一道记忆化搜索 BZOJ原题链接 洛谷原题链接 发现对于能涂木块数量一样的颜色在本质上是一样的,所以可以直接压在一个状态,而这题的数据很小,直接暴力开\(6\)维. 定义\(f[a][b][c][d] ...

  7. 洛谷P2405 non天平

    题目背景 non最近正在为自己的体重而苦恼,他想称量自己的体重.于是,他找来一个天平与许多砝码. 题目描述 砝码的重量均是n的幂次,n^1.n^2.n^3.n^4.n^5的……non想知道至少要多少个 ...

  8. 洛谷 P2473 [SCOI2008]奖励关 解题报告

    P2473 [SCOI2008]奖励关 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出\(k\)次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝 ...

  9. 洛谷 P2507 [SCOI2008]配对

    P2507 [SCOI2008]配对 题目背景 四川NOI2008省选 题目描述 你有 n 个整数Ai和n 个整数Bi.你需要把它们配对,即每个Ai恰好对应一个Bp[i].要求所有配对的整数差的绝对值 ...

  10. 洛谷P2507 [SCOI2008]配对

    题目背景 四川NOI2008省选 题目描述 你有 n 个整数Ai和n 个整数Bi.你需要把它们配对,即每个Ai恰好对应一个Bp[i].要求所有配对的整数差的绝对值之和尽量小,但不允许两个相同的数配对. ...

随机推荐

  1. Java 使用 itext 向PDF插入数据和图片

    Java 使用 itext 向PDF插入数据和图片 一.下载Adobe Acrobat DC 二.制作模板 1.准备一个word模板,并转换成PDF格式 2.使用Adobe Acrobat DC打开P ...

  2. python中如何使两个序列相加不改变内存地址的几种方式

    # 方式1 a = [1,2,3] print(a) # 4551311680 a.extend([4,5]) print(a) # 4551311680 # 方式2 b = [1,2,3] prin ...

  3. linux下MariaDB安装

    一条命令安装Mariadb 首先在/etc/yum.repos.d下创建一个MariaDB.repo文件 vim /etc/yum.repos.d/MariaDB.repo 添加以下配置 [maria ...

  4. isort包

    记录 为什么会使用到这个包,原因是之前在本地开发的时候,导包的时候可能由于不规范,其实你自己看着挺规范的,但是呢后续组长进行打包的时候,代码出现了不规范的情况,导致打包失败.原因就是导包不规范造成的. ...

  5. Ubuntu如何卸载mysql

    首先在终端中查看MySQL的依赖项:dpkg --list|grep mysql 卸载: sudo apt-get remove mysql-common 卸载:sudo apt-get autore ...

  6. 【Azure API 管理】APIM中的Policy是否有调用速率的方法(熔断机制)

    问题描述 APIM中的Policy是否有调用速率的方法(熔断机制) 问题解答 APIM的限制速率的方式有以下方式: 检查 HTTP 标头 - 强制 HTTP 标头必须存在和/或强制采用 HTTP 标头 ...

  7. 使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化

    本文整理自 NebulaGraph PD 方扬在「NebulaGraph x KubeBlocks」meetup 上的演讲,主要包括以下内容: NebulaGraph 3.x 发展历程 NebulaG ...

  8. 使用 RKE 方式搭建 K8s 集群并部署 NebulaGraph

    本文由社区用户 Albert 贡献,首发于 NebulaGraph 论坛,旨在提供多一种的部署方式使用 NebulaGraph. 在本文,我将会详细地记录下我用 K8s 部署分布式图数据库 Nebul ...

  9. 手把手教你用 NebulaGraph AI 全家桶跑图算法

    前段时间 NebulaGraph 3.5.0 发布,@whitewum 吴老师建议我把前段时间 NebulaGraph 社区里开启的新项目 ng_ai 公开给大家. 所以,就有了这个系列文章,本文是该 ...

  10. 【Flink入门修炼】2-2 Flink State 状态

    什么是状态?状态有什么作用? 如果你来设计,对于一个流式服务,如何根据不断输入的数据计算呢? 又如何做故障恢复呢? 一.为什么要管理状态 流计算不像批计算,数据是持续流入的,而不是一个确定的数据集.在 ...