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 ...
随机推荐
- C# 动态链接库的创建
首先在C#工程下面安装第三方插件包 安装方法:Tools --> Library Package Manager --> Package Manager Console Install-P ...
- CSS_03_01_CSS类选择器
第01步:编写css样式:class_01.css @charset "utf-8"; /* CSS Document */ div.class01{ background-col ...
- PTPX中的report 选项
Report的生成 report_power表示产生power report,update_power表示进行power analysis. report_power命令可以生成四种形式的report ...
- delphi 读取excel 两种方法
http://www.cnblogs.com/ywangzi/archive/2012/09/27/2705894.html 两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打 ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON 3D Position Of Circles
zw版[转发·台湾nvp系列Delphi例程]HALCON 3D Position Of Circles procedure TForm1.action();var ho_Image, ho_Elli ...
- 实施费用也能DIY--走出软件作坊:三五个人十来条枪 如何成为开发正规军(九)[转]
上次咱们讲完了开发费用的计算,很多人在后面跟帖在那里算费用. 有人说:你把程序员都不当人,94天,一天都不休息啊. 我想答曰:94天,是工作时间.不算双休日在里面.也就是说,实际的开发周期长度是94+ ...
- Sublime中增加格式化代码的快捷键
[Preferences]->[Key Bindings]->[User]中,添加如下: { "keys": ["alt+shift+f"], &q ...
- 使用uiautomatorviewer和uiautomator来做android的UI测试
来自:http://university.utest.com 作者:Angelos Nakulas (All Authored Courses) 译者:Elaine00 目录 简介 什 ...
- SDK Manager failed to install 'java.exe' locking directory
转自:http://stackoverflow.com/questions/13587478/sdk-manager-failed-to-install-java-exe-locking-direct ...
- 获取url中的参数\+发送ajax请求根路径|+获取复选框的值
//获取url中的参数function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "=( ...