bnu A Matrix 北京邀请赛A题
A Matrix
int f[][];
int p[];
int n;
void insert(int r, int x)
{
for (int i=1; 1; i++)
if (f[r][i]==0)
{
f[r][i]=x;
return ;
}
else if (f[r][i]>x)
{
int tmp=f[r][i];
f[r][i]=x;
insert(r+1, tmp);
return ;
}
}
void Permutation2Matrix()
{
for (int i=1; i<=n; i++)
insert(1, p[i]);
}
Input
- First line contains 2 integers N (1 ≤ N ≤ 105), M (1 ≤ M ≤ N) indicating length of the permutation and number of rows which do not contains 0 in the matrix.
- Then M lines, the ith line represent the ith row in the matrix.
- The first integer in each line is Pi, indicating the number of non-zero elements in this row. Then Pi integers, indicating those elements.
Output
Sample Input
2
3 2
2 1 2
1 3
2 1
2 2 1
Sample Output
Case #1: 1 3 2
Case #2: No solution
Source

#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cstdlib>
#include<vector>
using namespace std; vector<int>Q[];
vector<int>Hash[];
int hxl[],len; void dfs(int x,int y,int dep)
{
if(x>dep)return;
if(Hash[x][y]==-)
{
Hash[x][y]=-;
hxl[++len]=Q[x][y];
return;
}
dfs(x+,Hash[x][y],dep);
hxl[++len]=Q[x][y];
Hash[x][y]=-;
}
void solve(int n,int m)
{
for(int i=m;i>=;i--)
{
int k=Hash[i][];
int s=Hash[i-][];
for(int j=k;j>=;j--)
{
for(;s>=;s--)
if(Q[i][j]>Q[i-][s]){
Hash[i-][s]=j;
s--;
break;
}
}
}
for(int i=;i<m;i++)
{
int num=;
for(int j=;j<=Hash[i][];j++)
if(Hash[i][j]!=-)num++;
if(num!=Hash[i+][]){
printf(" No solution\n");
return;
}
}
len = ;
for(int i=;i<=m;i++)
{
for(int j=;j<=Q[i][];j++)
{
if(Hash[i][j]==-)hxl[++len]=Q[i][j];
else if(Hash[i][j]==-)continue;
else dfs(i,j,m);
}
}
for(int i=;i<=len;i++)
printf(" %d",hxl[i]);
printf("\n");
}
int main()
{
int T,n,m,x,y;
scanf("%d",&T);
for(int t=;t<=T;t++)
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
Q[i].clear();
Hash[i].clear();
}
bool flag=false;
for(int i=;i<=m;i++)
{
scanf("%d",&x);
Q[i].push_back(x);
Hash[i].push_back(x);
for(int j=;j<=x;j++)
{
scanf("%d",&y);
Q[i].push_back(y);
Hash[i].push_back(-);
if(j>&&Q[i][j]<=Q[i][j-]) flag=true;
}
if(i>&&Q[i][]>Q[i-][])flag=true;
}
printf("Case #%d:",t);
if(flag==true)printf(" No solution\n");
else{
solve(n,m);
}
}
return ;
}
bnu A Matrix 北京邀请赛A题的更多相关文章
- BNUOJ 34985 Elegant String 2014北京邀请赛E题 矩阵快速幂
题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=34985 题目大意:问n长度的串用0~k的数字去填,有多少个串保证任意子串中不包含0~k的 ...
- 2014 ACM/ICPC 北京邀请赛 部分 题解
题目链接:http://acm.bnu.edu.cn/bnuoj/problem.php?search=2014+ACM-ICPC+Beijing+Invitational+Programming+C ...
- hihocoder 1084 扩展KMP && 2014 北京邀请赛 Justice String
hihocoder 1084 : http://hihocoder.com/problemset/problem/1084 北京邀请赛 Just String http://www.bnuoj.co ...
- 2013长沙网络赛H题Hypersphere (蛋疼的题目 神似邀请赛A题)
Hypersphere Time Limit: 1 Second Memory Limit: 32768 KB In the world of k-dimension, there's a ...
- 2013 ACM/ICPC南京邀请赛B题(求割点扩展)
题目链接:http://icpc.njust.edu.cn/Contest/194/Problem/B B - TWO NODES 时间限制: 10000 MS 内存限制: 65535 KB 问题描述 ...
- XTU 1264 - Partial Sum - [2017湘潭邀请赛E题(江苏省赛)]
2017江苏省赛的E题,当时在场上看错了题目没做出来,现在补一下…… 题目链接:http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id ...
- bnu 29378 Adidas vs Adivon 基础题
Adidas vs Adivon Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java ...
- 2013 南京邀请赛 K题 yet another end of the world
/** 大意:给定一组x[],y[],z[] 确定有没有两个不同的x[i], x[j] 看是否存在一个ID使得 y[i]<=ID%x[i]<=z[i] y[j]<=ID%x[j]&l ...
- 2014 北京邀请赛ABDHJ题解
A. A Matrix 点击打开链接 构造,结论是从第一行開始往下产生一条曲线,使得这条区间最长且从上到下递减, #include <cstdio> #include <cstrin ...
随机推荐
- HTML调用servlet(一)
1.页面的数据表单 在使用Servlet处理用户请求之前,先准备一个页面,该页面用来提供数据表单.数据表单就是HTML中的<form>...</form>部分,当用户单击Sub ...
- set和map和pair 转自ACdreamers
set与map容器 分类: C/C++ 2013-08-25 19:21 560人阅读 评论(0) 收藏 ...
- 对于Mybatis在C#.Net中个人使用的总结(一) Mybatis 的结果映射
(图片中的文字上传之后就都看不清,我再图片的下边会用斜体字标清) 首先我在项目中使用Mybatis 是用XML完成映射的.至于XML这门语言,其实很简单的(对于入门来说,因为我是刚入门哈~),如果你还 ...
- 16---Net基础加强
更新中,敬请期待............ Xml介绍 xml读写练习 xml练习1 xml练习2
- centos中的qt设计师所在的包
由于暂时用不到qt的ide,所以想把它卸了,经过一番查找,其所在的包名是: qt-devel
- 【crunch bang】 增加“菜单项”
[右键菜单]->[Settings]->[Openbox]->[GUI Menu Editor] 挑选合适的位置,增加[菜单项],编辑内容.
- 收缩TempDB的办法(转载)
有时候在数据库上运行一个数据量很大的查询语句,会导致TempDB数据量剧增,具体查看下面链接文章: SqlServer 一个查询语句导致tempdb增大55G 找到TempDB剧增的问题后,接下来的问 ...
- Android 多线程通信 访问网络
package org.rongguang.testthread; import android.app.Activity; import android.os.Bundle; import andr ...
- 设置Tab键为四个空格
https://my.oschina.net/xunxun10/blog/110074
- 160922、配置:spring通过profile或@profile配置不同的环境(测试、开发、生产)
一.配置环境 applicationContext.xml中添加下边的内容(develop:开发环境,production:生产环境,test:测试环境) 注意:profile的定义一定要在文档的最下 ...