题目大意:一个未知的整数序列,给出其任意一个区间和的正负,还原这个序列。任意一个满足条件的序列即可。

题目分析:将连续区间和转化为前缀和之差,sumx-1与sumy的大小关系已知,以此建立一条有向边,做拓扑排序。根据sum0=0,可以构造出所有的前缀和,再取两前缀和之差便得答案。

代码如下:

# include<iostream>
# include<cstdio>
# include<queue>
# include<vector>
# include<cstring>
# include<algorithm>
using namespace std; char p[15][15];
int in[15],ans[15],mp[15][15],mp1[15][15];
vector<int>v;
queue<int>q; void kahn(int n)
{
v.clear();
while(!q.empty()) q.pop();
for(int i=0;i<=n;++i)
if(in[i]==0)
q.push(i);
while(!q.empty())
{
int u=q.front();
q.pop();
v.push_back(u);
for(int i=0;i<=n;++i){
if(mp[u][i]){
mp[u][i]=0;
--in[i];
if(in[i]==0)
q.push(i);
}
}
}
} void solve(int n)
{
ans[0]=0;
int pos;
for(int i=0;i<=n;++i){
if(v[i]==0){
pos=i;
break;
}
}
for(int i=pos-1;i>=0;--i){
if(!mp1[v[i]][v[i+1]])///如果跟相邻点没有明确的大小关系,则取相等。。下同。。。
ans[v[i]]=ans[v[i+1]];
else
ans[v[i]]=ans[v[i+1]]-1;
}
for(int i=pos+1;i<=n;++i){
if(!mp1[v[i-1]][v[i]])
ans[v[i]]=ans[v[i-1]];
else
ans[v[i]]=ans[v[i-1]]+1;
}
} int main()
{
int T,n;
scanf("%d",&T);
while(T--)
{
memset(in,0,sizeof(in));
memset(mp,0,sizeof(mp));
memset(mp1,0,sizeof(mp1));
scanf("%d",&n);
getchar();
for(int i=0;i<n;++i){
for(int j=i+1;j<=n;++j){
p[i][j]=getchar();
if(p[i][j]=='+'){
mp1[i][j]=mp[i][j]=1;
++in[j];
}
if(p[i][j]=='-'){
mp1[j][i]=mp[j][i]=1;
++in[i];
}
}
}
kahn(n);
solve(n);
for(int i=1;i<=n;++i)
printf("%d%c",ans[i]-ans[i-1],(i==n)?'\n':' ');
}
return 0;
}

  

最新文章

  1. OEL上使用yum install oracle-validated 简化主机配置工作
  2. MySQL入门04-MySQL主从配置
  3. 解析ActionResult子类JsonResult
  4. C#数组
  5. android 入门-控件 测量状态栏高度
  6. MVC 区域功能
  7. [转]分布式文件系统FastDFS架构剖析
  8. winform自定义文件程序-- 不允许所请求的注册表访问权(ZSSQL)
  9. phpcms V9 数据模型基类(转)
  10. 如何在局域网安装Redmine(转贴)
  11. CodeForces 722A
  12. Oracle添加含有脏数据的约束
  13. javascript计算对象的长度
  14. 原生 JS 实现一个瀑布流插件
  15. javascript小记一则:今天在写VS2005——.NET程序时,写的一个JS图片示例案例
  16. 自定义编写js格式化数字的函数
  17. MySQL数据库分区操作【RANGE】
  18. 用django实现一个资产管理的系统
  19. Chromium网页Layer Tree创建过程分析
  20. [转]python新手必碰到的问题---encode与decode,中文乱码--转载

热门文章

  1. python将图片转化为字符图
  2. 20165324 实验二《Java面向对象程序设计》实验报告
  3. 参数或变量中有语法错误。 服务器响应为: mail from address must be same as authorization user
  4. ionic 打包
  5. 『NiFi 学习之路』自定义 —— 组件的自定义及使用
  6. spark examples 导入idea并测试
  7. Hibernate与autoCommit
  8. js实现excel的解析
  9. 如何用纯 CSS 创作一个摇摇晃晃的 loader
  10. idea+maven本地仓库更新问题