2760: [JLOI2011]小A的烦恼

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 406  Solved: 258
[Submit][Status][Discuss]

Description

小A是B公司的一名PM(product market)。B公司越来越注重产品使用情况分析,而小A的工作就是整天对着一堆数据分析来分析去,没完没了。其中有一个操作是小A很头疼的,就是要把多个csv文件的数据拷到同一个excel文件中去。
有一天小A满怀期待地找到了你,一个高级程序员,她想让你写程序帮她完成这个简单重复性工作。这不是坑爹吗,直接操作excel还要用到第三方的库,还不如直接写到csv文件中,让她再手动去转成excel文件。经过内部沟通协调,最终定下了这个方案。
csv是一种excel可支持和格式,且存储方式非常简单。它实际上就是用“,”来分隔相邻的两个列。比如以下三行数据
a,a,a
b,,b
,c,c
表示的就是
a a a
b   b
  c c
现在小A想做的就是把各个文件按照从左往右的顺序拷到同一个文件当中。比如文件a的数据是
a1,b1,c1
a2,b2
文件b的数据是
a1,b1,c1,d1
a2,b2
a3,b3,c3
a4
那么她所希望的最终结果是
a     b      
a1 b1 c1 a1 b1 c1 d1
a2 b2   a2 b2    
      a3 b3 c3  
      a4      
这个结果在csv文件里就是
a,,,b,,,
a1,b1,c1,a1,b1,c1,d1
a2,b2,,a2,b2,,
,,,a3,b3,c3,
,,,a4,,,
以上结果的第一行是每一个文件的文件名,文件名与相应文件的第一列对齐。如果相应文件不止一列,那么其它列用空的单元格来补充。
输入的csv文件里保证了每一行的末尾都没有“,”,也就是说像a文件的第2行的第3列一样,如那一格是空的,那么在b2后面是没有“,”的。
输出的csv文件里因为是程序的输出结果,为了简化程序,如果末尾是空的,那么还是会显式输出“,”,如以上的结果所示。
输入文件保证至少有一行一列非空。
输出的文件要保证下一个文件的第一列要紧邻着上一文件的最后一个非空列的右面。最后一个文件只输出到最后一个非空列。

Input

第一行有一个整数N(1≤N≤100),表示有N个文件。

以下N个数据块的第一行有一个整数M (1≤M≤100)和一个字符串S (1≤length(S)≤100),M表示文件的行数,S表示文件名。

N个数据块的下面M行中,每一行是一个字符串T(1≤length(T)≤100),T只包含小写字母和“,”。

Output

输出把N个文件的数据合到一个文件的结果。

Sample Input

2
2 a
a1,b1,c1
a2,b2
4 b
a1,b1,c1,d1
a2,b2
a3,b3,c3
a4

Sample Output

a,,,b,,,
a1,b1,c1,a1,b1,c1,d1
a2,b2,,a2,b2,,
,,,a3,b3,c3,
,,,a4,,,

Solution

模拟题!

定了一个$flag$,表示第$i$行第$j$列这一格有没有东西。

每次将列数取max往后平移即可。

本来以为自己乱yy的$string$过不了的QAQ

结果调了5分钟就a掉了!!

气死$Abyssful$是我的人生目标!!

Code

#include<bits/stdc++.h>
using namespace std; int n, m, flag[][], cnt[], lin, row, num[];
char a[];
string s;
string qaq[][]; int main() {
scanf("%d", &n);
int len = , ma = ;
for(int i = ; i <= n; i ++) {
scanf("%d", &m);
scanf("%s", a);
flag[][++cnt[]] = ;
qaq[][cnt[]] = a;
int tmp = ;
for(int j = ; j <= m + ; j ++) {
scanf("%s", a);
int len = strlen(a);
num[j] = ;
for(int k = ; k < len; k ++) {
char t = a[k];
if(t != ',') s = s + t;
else {
num[j] ++;
cnt[j] ++;
qaq[j][cnt[j]] = s;
flag[j][cnt[j]] = ;
s.clear();
}
}
num[j] ++;
cnt[j] ++;
qaq[j][cnt[j]] = s;
flag[j][cnt[j]] = ;
s.clear();
tmp = max(num[j], tmp);
}
lin = max(lin, m + );
row += tmp;
for(int j = ; j <= ; j ++) cnt[j] = row;
}
for(int i = ; i <= lin; i ++) {
for(int j = ; j < cnt[i]; j ++) {
if(flag[i][j]) cout << qaq[i][j];
printf(",");
}
if(flag[i][cnt[i]]) cout << qaq[i][cnt[i]];
printf("\n");
}
}

【BZOJ】2760: [JLOI2011]小A的烦恼【字符串模拟】的更多相关文章

  1. 题解【洛谷P5483】[JLOI2011]小A的烦恼

    我们可以灵活运用\(C++\)的语法来解决此题. 解释一下代码中会出现的语法: \(string::iterator\ it\)表示定义了一个\(string\)类型的迭代器\(it\),\(^*it ...

  2. 「BZOJ 3280」小R的烦恼

    题目链接 戳我 \(Solution\) 这道题很像餐巾计划啊. 首先将每天拆成\(x\)和\(x'\),\(S->x\)流量为\(a_i\),费用为\(0\)表示一天下来有\(a_i\)个濒死 ...

  3. 【模拟】bzoj2760 [JLOI2011]小A的烦恼

    注意细节和初始化. #include<cstdio> #include<string> #include<algorithm> #include<iostre ...

  4. 【BZOJ】【3280】小R的烦恼

    网络流/费用流 和软件开发那题基本相同,只是多加了一个“雇佣研究生”的限制:不同价格的研究生有不同的数量…… 那么只需加一个附加源点,对每一种研究生连边 S->ss 容量为l[i],费用为p[i ...

  5. hunnu 小明的烦恼——找字符串

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11544&courseid=0 小明的烦恼——找字符串 ...

  6. BZOJ 3280: 小R的烦恼 & BZOJ 1221: [HNOI2001] 软件开发

    3280: 小R的烦恼 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 399  Solved: 200[Submit][Status][Discuss ...

  7. BZOJ3280: 小R的烦恼

    题解: 随便建一下图费用流就可以过吧... 代码: #include<cstdio> #include<cstdlib> #include<cmath> #incl ...

  8. 《Mysql 公司职员学习篇》 第一章 小A的烦恼

    第一章  小A的烦恼 ----- 为什么学习数据库 和 如何选择数据库 小A是某公司的职员,公司数据部的员工,平常的大小工作,完全离不开EXCELL,而最近小A却越来越苦恼,不由的向好朋友小Y吐槽.小 ...

  9. hiho#1513 : 小Hi的烦恼 五维偏序

    hiho#1513 : 小Hi的烦恼 五维偏序 链接 hiho 思路 高维偏序用bitset,复杂度\((\frac{n^2}{32})\) 代码 #include <bits/stdc++.h ...

随机推荐

  1. raw数据类型

    Oracle中用于保存位串的数据类型是RAW,LONG RAW(推荐使用BLOB). RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大327 ...

  2. git summary

    Git 使用经验 缘起 一直想写一篇博文,记录我在使用git时遇到的问题以及解决办法.由于项目忙,偶尔的记录不连续,不成系统.今天有时间记录下来,方便自己以后查看. git 简介及其优势 简单来说,g ...

  3. openlayers常用操作

    1.坐标转换 根据当前坐标系与目标坐标系进行转换ol.proj.transform(coordinate, source, destination);  //coordinate:数组:source: ...

  4. 洛谷P3119 草鉴定

    这个题调了一天.. 传送门 读完题目之后我们不难想出这个题是个tarjan缩点问题,因为尽量多的经过草场,所以一号点所在的强连通分量里左右的点都是不需要在进行走逆向边,所能到达的. 然后问题就落在怎么 ...

  5. (三)HttpClient 抓取图片

    第一节: HttpClient 抓取图片 这里pom.xml需要用到io输入输出: <dependency> <groupId>commons-io</groupId&g ...

  6. python3项目之数据可视化

    数据可视化指的是通过可视化表示来探索数据,它与数据挖掘紧密相关,而数据挖掘指的是使用代码来探索数据集的规律和关联. 数据科学家使用Python编写了一系列令人印象深刻的可视化和分析工具,其中很多也可供 ...

  7. 关于更新SQLserver统计信息的存储过程

    1.建立t_mon_table_stat 用于存过需要更新统计信息的表 2.查找需要更新统计信息的表 insert into t_mon_table_stat SELECT DISTINCT SP.r ...

  8. How to omit h1 title heading in HTML export

    How to omit h1 title heading in HTML export */--> Introduce how to omit h1 title in the exported ...

  9. 1497: [NOI2006]最大获利

    新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一项,就需要完成前期市场研 ...

  10. 【LOJ】#2722. 「NOI2018」情报中心

    https://loj.ac/problem/2722 题解 考场上想了60分,但是由于自己不知道在怎么zz,我连那个ai<bi都没看到,误以为出题人没给lca不相同的部分分,然后觉得lca不同 ...