2021.07.23 P2474 天平(差分约束)
2021.07.23 P2474 天平(差分约束)
[P2474 SCOI2008]天平 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题意:
已知A,B和每两个点点权,求点权i,j,使得A+B>i+j的方案数ans1,A+B==i+j的方案数ans2,A+B<i+j的方案数ans3。
分析:
A+B>i+j可以化为A-i>j-B||i-A<B-j;A+Bi+j可以化为A-ij-B||i-A==B-j;A+B<i+j可以化为A-i<j-B||i-A>B-j。当然,i也可以与B搭配,j也可以与A搭配。所以对于每个条件都有两个式子。接下来,欢迎差分约束上台表演!maxn(i,j)表示从点i到点j之间最大值,minn(i,j)表示从点i到点j最小值。
代码如下:
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
int n,A,B,maxn[55][55],minn[55][55],ans1,ans2,ans3;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
int main(){
n=read();A=read();B=read();
string a;
for(int i=1;i<=n;i++){
cin>>a;
for(int j=0;j<a.size();j++){
if(i==j+1||a[j]=='=')maxn[i][j+1]=minn[i][j+1]=0;
else if(a[j]=='-')maxn[i][j+1]=-1,minn[i][j+1]=-2;//二者差最大为2,最小为1,这里i<j,用负号
else if(a[j]=='+')maxn[i][j+1]=2,minn[i][j+1]=1;//二者差最大为2,最小为1,这里i>j,用正号
else maxn[i][j+1]=2,minn[i][j+1]=-2;//这里是最大差2
}
}
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
if(i==k)continue;
for(int j=1;j<=n;j++){
if(i==j)continue;
maxn[i][j]=min(maxn[i][k]+maxn[k][j],maxn[i][j]);//求最大值的最小值,为了满足更多约束条件
minn[i][j]=max(minn[i][k]+minn[k][j],minn[i][j]);//求最小值的最大值,为了满足更多约束条件
}
}
}
for(int i=1;i<=n;i++){
if(i==A||i==B)continue;
for(int j=1;j<i;j++){
if(j==A||j==B)continue;
if(minn[A][i]>maxn[j][B]||minn[B][i]>maxn[j][A])++ans1;//A+B>i+j
else if(minn[i][A]>maxn[B][j]||minn[i][B]>maxn[A][j])++ans3;//A+B<i+j
//此处换为 else if(maxn[A][i]<minn[j][B]||maxn[B][i]<minn[j][A])++ans3; 也可以
else if((maxn[A][i]==minn[j][B]&&minn[A][i]==maxn[j][B]&&maxn[A][i]==minn[A][i])//A+B==i+j
||(maxn[B][i]==minn[j][A]&&minn[B][i]==maxn[j][A]&&maxn[B][i]==minn[B][i]))++ans2;
//当只有唯一一个确定的值才能正式确定“=”
}
}
cout<<ans1<<" "<<ans2<<" "<<ans3;
return 0;
}
2021.07.23 P2474 天平(差分约束)的更多相关文章
- 2021.07.23 P3275 糖果(差分约束)
2021.07.23 P3275 糖果(差分约束) [P3275 SCOI2011]糖果 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.为了满足更多更多约束条件,合适地 ...
- 洛谷2474 [SCOI2008] 天平 差分约束->枚举
题目描述 你有n个砝码,均为1克,2克或者3克.你并不清楚每个砝码的重量,但你知道其中一些砝码重量的大小关系.你把其中两个砝码A 和B 放在天平的左边,需要另外选出两个砝码放在天平的右边.问:有多少种 ...
- [SCOI2008]天平 差分约束
---题面--- 题解: 差分约束学得实在是太烂了,,,,QAQ 这里先记下: a - b >= x ---> a >= b + x ----> b - ...
- 2021.07.19 P2294 狡猾的商人(差分约束)
2021.07.19 P2294 狡猾的商人(差分约束) [P2294 HNOI2005]狡猾的商人 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.差分约束最长路与最短 ...
- 【BZOJ1077】天平(差分约束)
[BZOJ1077]天平(差分约束) 题面 BZOJ 洛谷 题解 利用矩阵可以很容易得到两个点之间的最大差和最小差,再利用这个信息判断即可.差分约束用\(Floyd\)计算.时间复杂度\(O(n^3) ...
- 2021.08.16 P1260 工程规划(差分约束)
2021.08.16 P1260 工程规划(差分约束) 重点: 1.跑最短路是为了满足更多约束条件. P1260 工程规划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 造 ...
- [luogu2474 SCOI2008]天平(floyd差分约束)
传送门 Solution 由于重量只有三种情况,那么想到用差分约束. 由于范围比较小,想到可以floyed求差分约束,暴力求天平另一边 Code #include <cstdio> #in ...
- 洛谷 P7515 - [省选联考 2021 A 卷] 矩阵游戏(差分约束)
题面传送门 emmm--怎么评价这个题呢,赛后学完差分约束之后看题解感觉没那么 dl,可是现场为啥就因为种种原因想不到呢?显然是 wtcl( 先不考虑"非负"及" \(\ ...
- UVA 11478 Halum(用bellman-ford解差分约束)
对于一个有向带权图,进行一种操作(v,d),对以点v为终点的边的权值-d,对以点v为起点的边的权值+d.现在给出一个有向带权图,为能否经过一系列的(v,d)操作使图上的每一条边的权值为正,若能,求最小 ...
随机推荐
- jdk源码阅读笔记
1.环境搭建 http://www.komorebishao.com/2020/idea-java-jdk-funyard/ 2. 好的源码阅读资源 https://zhuanlan.zhihu.co ...
- 创建一个简单的Eureka注册中心
微服务和分布式已经成了一种极其普遍的技术,为了跟上时代的步伐,最近开始着手学习SpringCloud,就从Eureka开始.他们俩就不做介绍了,网上的说明一堆,随便打开一个搜索引擎输入关键字都足够了解 ...
- sleep 方法和 wait 方法有什么区别?
这个问题常问,sleep 方法和 wait 方法都可以用来放弃 CPU 一定的时间,不同点 在于如果线程持有某个对象的监视器,sleep 方法不会放弃这个对象的监视器, wait 方法会放弃这个对象的 ...
- 创建POJO
创建一个名为student.java的POJO. 第一步,在包里面创建一个student类,右键点击包,点击新建,再点击创建一个类. 第二步,输入类名,点击完成. 第三步,输入数据类型和主键名,再写一 ...
- java后端使用token处理表单重复提交
保证接口幂等性,表单重复提交 前台解决方案:提交后按钮禁用.置灰.页面出现遮罩后台解决方案: 使用token,每个token只能使用一次1.在调用接口之前生成对应的Token,存放至redis 2 ...
- 爬虫-ip代理
代理(proxy) 代理服务器:实现请求转发,从而可以实现更换请求的ip地址 代理的匿名度: 透明:服务器知道你使用了代理并且知道你的真实ip 匿名:服务器知道你使用了代理,但是不知道你的真实ip 高 ...
- eclipse开发工具之"导入项目"
1.选择菜单栏"file""下的"import" 2.选择Maven 在选中"Existing Maven Projects",然 ...
- CPU架构:CPU架构详细介绍
1 概述 CPU架构是CPU商给CPU产品定的一个规范,主要目的是为了区分不同类型的CPU.目前市场上的CPU分类主要分有两大阵营,一个是intel.AMD为首的复杂指令集CPU,另一个是以IBM.A ...
- 《自动控制原理》个人笔记(来自ppt课件)
控制的含义 控制(CONTROL)----某个主体使某个客体按照一定的目的动作.主体–人:人工控制: 机器:自动控制客体–指一件物体,一套装置,一个物化过程,一个特定系统. 人工控制与自动控制 人在控 ...
- 前端面试题整理——手写方法解析URL参数
//拆分字符串形式 function queryToObj() { const res = {} const search = location.search.substr(1);//去掉前面的&qu ...