uva1423 巧用拓扑排序
对于一个序列 a1 a2 ... an 我们可以计算出一个符号矩阵A, 其中Si,j 为 a1+...+aj 的正负号,(连加和大于0则Sij=+ 小于0 Sij=- 等于0 则Sij=0), 根据序列A不难算出上述符号矩阵。你的任务是求解它的“逆问题” , 及给出一个符号矩阵,找出一个对应的序列。输入保证存在一个满足条件的序列,其中每个整数的绝对值均不超过10
解 连续和转化为前缀和之差,设Bi=a1+...+ai 规定B0=0 则矩阵中的任意一项都等价于连个Bi 相减之后的正负号,例如 , 第x行y列的符号为正号 ax+...+ay>0 By-Bx-1>0, 转化为已知B0,B1,...,Bn,的一些大小关系,求他们的值,这个问题通过拓扑排序完成。
#include <iostream>
#include <cstdio>
#include <string.h>
#include<vector>
#include <algorithm>
using namespace std;
const int INF=;
char str[];
vector<int> same[];
vector<int> to[];
int dgreed[];
int G[];
bool use[];
int ans[];
void solve(int loc, int v){
for(int i=; i<same[loc].size(); ++i)
ans[ same[loc][i] ]=v;
}
int main()
{
int cas;
scanf("%d",&cas);
for(int cc=; cc<=cas; ++cc){
int n;
scanf("%d",&n);
scanf("%s",str);
int loc=;
memset(dgreed,,sizeof(dgreed));
memset(use,false,sizeof(use));
for(int i=; i<=n; ++i) to[i].clear(),ans[i]=INF,same[i].clear();
for(int i=; i<=n; ++i)
for(int j=i; j<=n; ++j ){
if(str[loc]==''){
same[i-].push_back(j);
same[j].push_back(i-);
}else if(str[loc]=='+'){
to[i-].push_back(j);
dgreed[j]++;
}else {
to[j].push_back(i-);
dgreed[i-]++;
}
loc++;
}
for(int i=; i<n+;++i){
int k=;
for(int j=; j<n+; ++j)
if(use[j]==false&&dgreed[j]==){
k=j; break;
}
G[i]=k; use[k]=true;
for(int j=; j<to[k].size(); ++j){
dgreed[to[k][j]]--;
}
}
loc=;
for(int i=; i<n+; ++i)
if(G[i]==) {
loc=i; break;
}
ans[]=;
int v=-;
solve(,);
for(int i=loc-; i>=; --i){
if(ans[ G[i] ] == INF){
ans[ G[i] ] =v--;
}
solve(G[i],ans[G[i]]);
}
v=;
for(int i=loc+; i<=n; ++i){
if(ans[ G[i] ] == INF){
ans[ G[i] ] =v++;
}
solve(G[i],ans[G[i]]);
}
for(int i=; i<=n ;++i)
printf("%d%c",ans[i]-ans[i-],i==n?'\n':' ');
}
return ;
}
uva1423 巧用拓扑排序的更多相关文章
- LA4255/UVa1423 Guess 拓扑排序 并查集
评分稍微有一点过分..不过这个题目确确实实很厉害,对思维训练也非常有帮助. 按照套路,我们把矩阵中的子段和化为前缀和相减的形式.题目就变成了给定一些前缀和之间的大小关系,让你构造一组可行的数据.这个东 ...
- [USACO12DEC]第一!First! (Trie树,拓扑排序)
题目链接 Solution 感觉比较巧的题啊... 考虑几点: 可以交换无数次字母表,即字母表可以为任意形态. 对于以其他字符串为前缀的字符串,我们可以直接舍去. 因为此时它所包含的前缀的字典序绝对比 ...
- 算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
- 有向无环图的应用—AOV网 和 拓扑排序
有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...
- 【BZOJ-2938】病毒 Trie图 + 拓扑排序
2938: [Poi2000]病毒 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 609 Solved: 318[Submit][Status][Di ...
- BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)
题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以 ...
- 图——拓扑排序(uva10305)
John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...
- Java排序算法——拓扑排序
package graph; import java.util.LinkedList; import java.util.Queue; import thinkinjava.net.mindview. ...
- poj 3687(拓扑排序)
http://poj.org/problem?id=3687 题意:有一些球他们都有各自的重量,而且每个球的重量都不相同,现在,要给这些球贴标签.如果这些球没有限定条件说是哪个比哪个轻的话,那么默认的 ...
随机推荐
- ssh&scp指定密钥
scp时指定密钥: scp -P22 -r -i ~/.ssh/dongjing-shanghai.pem root@kiri_pro01:/data/backup/back_from_japan ...
- python2.0 s12 day8 _ python线程&python进程
1.进程.与线程区别2.cpu运行原理3.python GIL全局解释器锁4.线程 1.语法 2.join 3.线程锁之Lock\Rlock\信号量 4.将线程变为守护进程 5.Event事件 6.q ...
- Solr4.0+IKAnalyzer中文分词安装
1.依赖: JDK1.6,Tomcat 5.5,Solr 4.0.0,IKAnalyzer 2012FF Tomcat虽然不是必须,但觉得上生产环境的话,还是得用Tomcat,便于统一管理和监控. T ...
- Java自动类型转换
■ 自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型. ■ 特例:可以讲整型常量直接赋给byte,short,char等类型变量,而不需要强制类型转换,只要不超出其表数范围. ■ 强制类型 ...
- 初学hadoop,windows下安装
先bb一下,woc开始使用Cygwin来模拟linux配置hadoop,然后各种错误,找着找着发现原来2.0+的hadoop可以直接在windows下配置.当时真是1w头神兽飞过. 下载hadoop ...
- PHP之ob_start()控制缓冲生成html
输出控制函数不对使用 header() 或 setcookie(), 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用. 我们先举一个简单的例子,让大家对Outp ...
- JS-制作留言提交系统(支持ctrl+回车)
弹出键值说明: //console.log(ev.keyCode)//回车:13//ctrl:17 <!DOCTYPE html> <html> <head> &l ...
- [HNOI2004] 打砖块
1292. [HNOI2004] 打砖块 ★★ 输入文件:brike.in 输出文件:brike.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 在一个凹槽中放 ...
- 【BZOJ1594】[Usaco2008 Jan]猜数游戏 二分答案+并查集
[BZOJ1594][Usaco2008 Jan]猜数游戏 Description 为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力. 游戏开始前,一头指定的奶牛会在 ...
- C /C ++中结构体的定义
c语言中结构体的定义: struct 结构体名{ 成员列表: ..... }结构体变量: 7.1.1 结构体类型变量的定义结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问 ...