博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UvaLive4255 Guess
阅读量:6432 次
发布时间:2019-06-23

本文共 1121 字,大约阅读时间需要 3 分钟。

题意:给你一个上三角矩阵S。S[i][j]取值为‘+’‘-’‘0’。表示序列的和从num[i]+...+num[j]的取值分别为正负0。

思路:把前缀和看做点。把矩阵的正负看做点之间的边。然后对这些点进行拓扑排序。要注意的是取值为0的特殊情况。

/*ID: onlyazh1LANG: C++TASK: Guess*/#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef unsigned long long ll;const int maxn=30;int n;int sum[maxn];int deg[maxn];vector
G[maxn];void TopSort(){ int low=-10; queue
Que; for(int i=0;i<=n;i++) if(!deg[i]) Que.push(i); while(!Que.empty()){ int x=Que.front(); Que.pop(); sum[x]=low; for(int u=0,sz=G[x].size();u
>T; while(T--){ for(int i=0;i
>n; char str[maxn];cin>>str; for(int i=1;i<=n;i++) for(int j=i;j<=n;j++){ if(str[cnt]=='-'){ G[j].push_back(i-1); deg[i-1]++; } else if(str[cnt]=='+'){ G[i-1].push_back(j); deg[j]++; } cnt++; } TopSort(); cnt=0; for(int i=1;i<=n;i++) for(int j=i;j<=n;j++){ if(str[cnt]=='0') sum[i-1]=sum[j]; cnt++; } for(int i=1;i<=n;i++){ if(i-1) cout<<" "; cout<
View Code

 

转载于:https://www.cnblogs.com/onlyAzha/p/5209448.html

你可能感兴趣的文章
2950交换机SI与EI区别
查看>>
Java 数据类型
查看>>
U大师U盘装系统——安装ghost系统教程(V1.2.0版)
查看>>
webpack.config.js 参数详解
查看>>
FALog
查看>>
Farpoint Spread 常用属性
查看>>
ciscocatalyst6500引擎内存与flash经典
查看>>
JVM性能优化
查看>>
Facebook Haystack图片存储架构
查看>>
Java Web开发 - 持久型/存储型XSS漏洞
查看>>
zabbix1.8.3 安装配置
查看>>
RH124-06 文件系统权限
查看>>
源码安装 php+nginx 构建BBS平台 (以CentOS6为例)
查看>>
Wireshark 过滤器语法总结
查看>>
Cloned virtualized domain controller(克隆虚拟化部署的域控制器)
查看>>
我的友情链接
查看>>
MySQL 插入数据
查看>>
GridView-右键菜单(Menu)
查看>>
你使用DBA数据库吗?
查看>>
mongoDB-权限控制
查看>>