解题:SCOI 2008 天平
我们很容易想到差分约束,但是我们建出来图之后好像并不好下手,因为我们只能得到砝码间的大小关系,并不能容易地得到每个砝码的具体重量。
于是我们有了一种神奇的思路:既然得不到具体重量我们就不求具体重量了,只求出砝码间的关系即可,因为砝码只有三种还是可以讨论的。具体来说我们用$maxx[i][j]$表示$i-j$的最大值,$mini[i][j]$表示$i-j$的最小值,然后跑Floyd得出砝码间的关系,最后直接$n^2$枚举砝码检查即可
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=;
int maxx[N][N],mini[N][N];
int n,a,b,cnt,ans1,ans2,ans3;
char rd[N];
int main()
{
scanf("%d%d%d",&n,&a,&b);
for(int i=;i<=n;i++)
{
scanf("%s",rd+);
for(int j=;j<=n;j++)
if(rd[j]=='+') maxx[i][j]=,mini[i][j]=;
else if(rd[j]=='-') maxx[i][j]=-,mini[i][j]=-;
else if(rd[j]=='='||i==j) maxx[i][j]=mini[i][j]=;
else maxx[i][j]=,mini[i][j]=-;
}
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(i!=j&&i!=k&&j!=k)
{
maxx[i][j]=min(maxx[i][j],maxx[i][k]+maxx[k][j]);
mini[i][j]=max(mini[i][j],mini[i][k]+mini[k][j]);
}
for(int i=;i<=n;i++)
if(i!=a&&i!=b)
for(int j=i+;j<=n;j++)
if(j!=a&&j!=b)
{
ans1+=(mini[a][i]>maxx[j][b]||mini[a][j]>maxx[i][b]);
ans3+=(maxx[a][i]<mini[j][b]||maxx[a][j]<mini[i][b]);
ans2+=(maxx[a][i]==mini[a][i]&&maxx[j][b]==mini[j][b]&&maxx[a][i]==mini[j][b])||
(maxx[a][j]==mini[a][j]&&maxx[i][b]==mini[i][b]&&maxx[a][j]==mini[i][b]);
}
printf("%d %d %d",ans1,ans2,ans3);
return ;
}
解题:SCOI 2008 天平的更多相关文章
- 解题:SCOI 2008 配对
题面 如果没有两个数不能相同这个限制就两个数组排序后贪心即可.现在加上这个限制,注意到每个数组中的数是两两不同的,所以每次一定能在前面或后面一个数中找一个换过来,这样每次考虑相邻三个数转移就可以了,注 ...
- scoi 2008 && bzoj 1076 奖励关
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3223 思路:15?好,状压,OK. 这是转移方程 if((s[k]&j)==s[k] ...
- [BZOJ 1079][SCOI 2008]着色方案
1079: [SCOI2008]着色方案 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2237 Solved: 1361[Submit][Stat ...
- 【SCOI 2008】奖励关
Problem Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关. 在这个奖励关里,系统将依次随机抛出 \(k\) 次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之 ...
- 解题:SCOI 2007 蜥蜴
题面 拆点跑最大流 所有能跑出去的点连向汇点,容量为inf 原点连向所有初始有蜥蜴的点,容量为1 每根柱子拆成两个点“入口”和“出口”,入口向出口连容量为高度的边,出口向别的有高度的柱子的入口连容量为 ...
- [ SCOI 2008 ] 着色方案
\(\\\) \(Description\) 给出\(K\)种颜料各自的个数\(C_i\),每一个颜料只够涂一个格子,求将颜料用完,涂一排格子,每个格子只能涂一次的条件下,相邻两个格子的颜色互不相同的 ...
- [SCOI 2008] 奖励关
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1076 [算法] f[i][S]表示当前第i次抛出宝物,目前集合为S,所能获得的最高分 ...
- SCOI 2008 【奖励关】
早上的考试一道都做不出,被教做人,心态爆炸ing...... 题目描述: 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必 ...
- 解题:CTSC 2008 祭祀
题面 洛谷要求输出方案,懒得写了,但是还是放一下链接看看吧 (虽然现在二分图已经过气了=.=) 要求最长反链,最长反链=最小链覆盖,先Floyd传递闭包之后链覆盖就变成了边覆盖,然后最小边覆盖=总点数 ...
随机推荐
- appium自动化环境搭建
1.java开发环境JDK 2.android SDK(platform/platform tools/tools/build tools) 3.python下载安装(pip) 4.appium下载安 ...
- WebGL中使用window.requestAnimationFrame创建主循环
今天总结记录一下WebGL中主循环的创建和作用.我先说明什么是主循环,其实单纯的webgl不存在主循环这个概念,这个概念是由渲染引擎引入的,主循环就是利用一个死循环或无截止条件的递归达到定时刷新can ...
- Mysql基础操作语句
SQL 简单的增删改查 不区分大小写, 表名和字段名可不加引号 查询语句 SELECT * FROM `table_name`; -- 注释 CTRL+/ : 注释 CTRL+/ : 取消注释 /* ...
- 搭建RTSP服务器时nginx的nginx.conf文件配置
worker_processes 1; events { worker_connections 1024;} http { include mime.types; default_type appli ...
- 【转】: 塞尔达组在GDC2017演讲的文字翻译:显示的力量
塞尔达系列推出新作的时候,美术风格都有明显变化.本作的风格比起写实,笔触轻快变化幅度大是其特征.2011年公开的技术演示中,画面风格要更加写实.最终版则更接近于卡通.5年里到底发生了什么呢? ▲2 ...
- shell基础 -- grep、sed、awk命令简介
在 shell 编程中,常需要处理文本,这里介绍几个文本处理命令. 一.grep 命令 grep 命令由来已久,用 grep 命令来查找 文本十分方便.在 POSIX 系统上,grep 可以在两种正则 ...
- 特征点检测--基于CNN:TILDE: A Temporally Invariant Learned DEtector
TILDE: A Temporally Invariant Learned DEtector Yannick Verdie1,∗ Kwang Moo Yi1,∗ Pascal Fua1 Vincent ...
- springboot集成jpa,在postgresql数据库中创建主键自增表
依赖文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/ ...
- python实现lower_bound和upper_bound
由于对于二分法一直都不是很熟悉,这里就用C++中的lower_bound和upper_bound练练手.这里用python实现 lower_bound和upper_bound本质上用的就是二分法,lo ...
- AutoCAD2015激活码和密钥
CAD2015序列号和密钥 序列号: 666-69696969 产品密钥: 001G1 序列号: 356-72378422 产品密钥: 206G1 安装说明 ...