Guess
题意:对于一个序列,我们可以计算出一个符号矩阵,其中Sij为ai+...+aj的正负号,现在给你一个矩阵的上三角,求一个满足的序列
题解:对于这一题,按照白书上讲的,可以转化成前缀和来做。B【i】表示B[1]+B[2]+....+B[i]的和,sij=B[j]-B[i-1];如果Sij>0,就B[J]-B[I-1]>0,那么i-1和j建立一条边,相反的就j到i-1建边,如果等于0,不用考虑的,因为是n*(n-)/2个数,每个点和其他点都有关系,所以肯定会搜到。建好图之后,直接topsort 就可以得到一组B的值,然后相邻的相减,就可以得到一组a的值。这里,为方便,加入一个0点,并且B[0]=0;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int b[],n;
int deg[];
bool map[][];
void init(){
memset(deg,,sizeof(deg));
memset(b,,sizeof(b));
memset(map,,sizeof(map));
}
void topsort(){
b[]=;
queue<int>Q;
for(int i=;i<=n;i++){
if(deg[i]==){
deg[i]--;
Q.push(i);
b[i]=;
}
}
while(!Q.empty()){
int u=Q.front();
Q.pop();
for(int i=;i<=n;i++){
if(map[u][i]){
deg[i]--;
if(deg[i]==){
b[i]=b[u]+;
deg[i]--;
Q.push(i);
}
}
}
}
}
char temp;
int main(){
int test;
scanf("%d",&test);
while(test--){
scanf("%d",&n);
init();
for(int i=;i<n;i++){
for(int j=i+;j<=n;j++){
cin>>temp;
if(temp=='+'){
deg[j]++;
map[i][j]=;
}
else if(temp=='-'){
deg[i]++;
map[j][i]=;
}
}
}
topsort();
for(int i=;i<=n;i++){
if(i<n)printf("%d ",b[i]-b[i-]);
else
printf("%d\n",b[i]-b[i-]);
}
}
}
随机推荐
- docker 镜像中包含数据库环境和运行环境
需求: 一个镜像中要包含数据库环境和运行环境 Apache 环境 + mariadb 已经在拉取了Apache的运行环境 - 拉取代码 git https://github.com/timhaak/d ...
- Qt解析XML文件(QXmlStreamReader)
(2013-08-03 10:53:53) 转载▼ 如何使用QXmlStreamReader来解析格式良好的XML,Qt的文档中指出,它是一种更快.更方便的Qt自己的SAX解析器(QXml ...
- GNU GRUB version 0.97 (630K lower /2053824K upper memory)
昨天把老板的IBM X61笔记本拿过来多系统,结果本以为很容易,直接ghost,结果悲剧发生啦,开机之后提示GNU GRUB version 0.97 (630K lower /2053824K up ...
- 四种数据持久化方式(下) :SQLite3 和 Core Data
在上文,我们介绍了iOS开发中的其中2种数据持久化方式:属性列表.归档解档. 本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文 ...
- json-lib-2.4-jdk15.jar maven
最近自己将一个web项目装换到使用mevan自动管理. 遇到了一个json包导入的问题.最终解决如下: <!-- https://mvnrepository.com/artifact/net.s ...
- SQL Server中的20个系统变量
1.@@CONNECTIONS返回自上次启动 Microsoft SQL Server以来连接或试图连接的次数.示例:下面的示例显示了到当前日期和时间为止试图登录的次数.SELECT GETDATE( ...
- AspNetPage 使用案例
.首先在DBHelper创建一个方法,用于执行存储过程 public static DataTable ExecuteProc(string sql,params SqlParameter[] par ...
- Java 基础(一)
Java不只是一种语言,更是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供诸如安全性.跨操作系统的可移植性以及自动垃圾收集等服务的执行环境. javaSE: 整个java技术的核 ...
- 控制寄存器 CR*
控制寄存器(CR0-CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性,如图4-3所示.CR0中含有控制处理器操作模式和状态的系统控制标志:CR1保留不用:CR2含有导致页错误的线性地址:C ...
- 微信小程序,大多数人误解的8个问题
作者:王安,数字天堂DCloud公司创始人兼CEO 注:本文内容包含技术.商业,不懂技术的读者可以只看商业相关的内容.本文仅代表作者一家之言,如有不同意见,欢迎留言讨论~ 8个误解 坊间所传的信息很多 ...