UVAlive4255_Guess
题目很好很有意思。
告诉你n个序列中,任意一个连续子序列的和与0相比较的结果。
构造一个满足条件的序列。
对于从x->y这一段的和,如果大于0,那么sum[x]>sum[y-1],显然我们可以得到每一个sum的大小关系。由于这个满足条件的sum关系已经考虑了所有的源系列的大小关系,所以只要我们生成了一个满足条件的sum序列能够满足其大小关系,那么a[i]=sum[i]-sum[i-1]就一定是满足条件的。
根据拓扑排序我们可以知道每一个sum之间的大小关系,中间包含于sum[0]=0的大小关系,我们只要依次按照大小一个一个往里面填数字就好了。
召唤代码君:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std; int a[][],d[],eq[],Q[],top,totdone,tmp,father;
int f[];
bool vis[];
int n,T;
char s[]; int main()
{
int cur;
scanf("%d",&T);
while (T--)
{
memset(a,,sizeof a);
memset(d,,sizeof d);
scanf("%d",&n);
for (int i=; i<=n; i++) eq[i]=-,vis[i]=false;
scanf("%s",s);
cur=;
for (int i=; i<=n; i++)
for (int j=i; j<=n; j++,cur++)
{
if (s[cur]=='+')
{
a[i-][j]=;
d[j]++;
}
else if (s[cur]=='-')
{
a[j][i-]=;
d[i-]++;
}
}
top=totdone=;
while (totdone<n+)
{
tmp=;
for (int i=; i<=n; i++)
if (!vis[i] && d[i]<tmp) tmp=d[i]; queue<int> que;
for (int i=; i<=n; i++)
if (!vis[i] && d[i]==tmp) que.push(i); father=-;
while (!que.empty())
{
int i=que.front();
que.pop();
vis[i]=true;
totdone++;
if (father==-) { father=i,Q[++top]=i; }
else eq[i]=father;
for (int j=; j<=n; j++)
if (a[i][j]) d[j]--;
}
}
for (int i=; i<=top; i++)
if (Q[i]==)
{
tmp=i;
break;
}
if (eq[]!=-)
for (int i=; i<=n; i++)
if (Q[i]==eq[]) tmp=i;
cur=;
for (int i=tmp+; i<=top; i++) f[Q[i]]=cur++;
cur=-;
for (int i=tmp-; i>; i--) f[Q[i]]=cur--;
for (int i=; i<=n; i++)
if (eq[i]!=-) f[i]=f[eq[i]];
for (int i=; i<=n; i++)
{
printf("%d",f[i]-f[i-]);
if (i<n) printf(" ");
}
printf("\n");
}
return ;
}
UVAlive4255_Guess的更多相关文章
随机推荐
- bootStrap中Tab页签切换
关于$().tab()一般用来实现标签页和胶囊链接内容片段的切换,或是相关内容的页面导航: <ul class="nav nav-tabs" id="myTab&q ...
- jQuery插件编写基础之“又见弹窗”
本文将通过一个实例来引出jQuery插件开发中的一些细节,首先介绍下jQuery插件开发的一些基础知识. jQuery的插件开发主要分为两类: 1. 类级别,即在jQuery类本身上扩展方法,类似与 ...
- 大数据中Hadoop集群搭建与配置
前提环境是之前搭建的4台Linux虚拟机,详情参见 Linux集群搭建 该环境对应4台服务器,192.168.1.60.61.62.63,其中60为主机,其余为从机 软件版本选择: Java:JDK1 ...
- 记一个小bug的锅
人生中的第一个线上bug 我参与的第一个项目就出现了.但是自己还觉得这锅也不全是自己的,毕竟那么明显的bug出现在历史模块中(不是我写的新模块),难道测试部就没一点责任?代码走查人员就没一点责任?不过 ...
- jenkins 多任务串行执行
摘要 今天在新创建自动化部署项目的时候遇到了一个问题:我们的项目是maven聚合的所以在构建maven项目的时候要从parent开始build,但是这样会造成一个问题,我每次添加此parent项目下的 ...
- Unity Shader 学习之旅之SurfaceShader
Unity Shader 学习之旅之SurfaceShader unity shader 图形图像 如果大地的每个角落都充满了光明 谁还需要星星,谁还会 在夜里凝望 寻找遥远的安慰——江河 官方文档 ...
- Ubuntu解压zip包中文乱码
解决方法:通过unar 工具解压 步骤一: 安装unar: sudo apt-get install unrar 步骤二: 解压(以test.zip为例):unar test.zip 解压成功,乱码问 ...
- spring boot 配置全局日期类型转换器
1. 首先自定义一个类型转换器 import org.springframework.core.convert.converter.Converter; import org.springframew ...
- python-两个筛子数据可视化(直方图)
""" 作者:zxj 功能:模拟掷骰子,两个筛子数据可视化 版本:3.0 日期:19/3/24 """ import random impo ...
- 最小费用最大流模板(POJ 2135-Farm Tour)
最近正好需要用到最小费用最大流,所以网上就找了这方面的代码,动手写了写,先在博客里存一下~ 代码的题目是POJ2135-Farm Tour 需要了解算法思想的,可以参考下面一篇文章,个人觉得有最大流基 ...