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. vim加密文件

    一.加密文件内容 vim gt-1.sh 输入:X 注意是大写的X 输入密码 然后,保存 再次访问,需要输入密码 如果输入密码错误,内容显示为乱码 用cat或more查看文件内容,显示为乱码:用vi重 ...

  2. [NOI2007]货币兑换 「CDQ分治实现斜率优化」

    首先每次买卖一定是在某天 $k$ 以当时的最大收入买入,再到第 $i$ 天卖出,那么易得方程: $$f_i = \max \{\frac{A_iRate_kf_k}{A_kRate_k + B_k} ...

  3. unity 2d 游戏优化之路 遇坑记录

    情景说明:  unity 出的Android包,在目前一些主流机型跑都没有问题,但是在 小米3 这种比较老的机器上跑,报如下错误 GLSL compilation failed, no infolog ...

  4. HDU 3374 String Problem(KMP+最大(最小)表示)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3374 题目大意:给出一个字符串,依次左移一个单位形成一堆字符串,求其字典序最小和最大的字符串需要左移多 ...

  5. Python获取指定文件夹下的文件名

    本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名. 一.os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. os.walk(top, t ...

  6. 【笔记】Python简明教程

    Python简明教程,此资源位于http://woodpecker.org.cn/abyteofpython_cn/chinese/ s=u'中文字符' #u表示unicode,使用u之后能正常显示中 ...

  7. sp_executesql动态执行sql语句并将结果赋值给一变量

    需求场景: 需动态拼接sql语句进行执行,并将执行的结果赋值给一指定变量. 样例代码如下: SELECT @tableName = TAB_NAME FROM dbo.NMR_BLYWBDY WHER ...

  8. 如何在k8s集群里快速运行一个镜像?

    在docker里,快速run一个镜像,很简单的. k8s的世界,与之类似. 但要注意一下,如果镜像本身没有提供command命令,这个容器由于前台输出完成,很快就退出了. 所以,遇到这种镜像,就最好自 ...

  9. OpenCV 颜色空间转换参数CV_BGR2GRAY改变

    OpenCV的颜色空间转换函数:   C++: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )   参数d ...

  10. Web前端开发最佳实践(9):CSS代码太太乱,重复代码太多?你需要精简CSS代码

    前言 提高网站整体加载速度的一个重要手段就是提高代码文件的网络传输速度.之前提到过,所有的代码文件都应该是经过压缩了的,这可提高网络传输速度,提高性能.除了压缩代码之外,精简代码也是一种减小代码文件大 ...