ed

How to add text after last pattern match using ed

♀尐吖头ヾ 提交于 2019-12-01 12:14:38
问题 This is how I am adding text before first pattern, I want to add after last pattern FILE_NAME="folder/myfile.c++" STR_TO_ADD="string that i want to add" PATTERN="banana" ed $FILE_NAME 2>NULL 1>NULL<<EOF /^$PATTERN -1 a $STR_TO_ADD . wq EOF file banana apple banana one two three Expected output banana apple banana string that i want to add one two three 回答1: Go to last line of file and search pattern in backward direction. FILE_NAME="folder/myfile.c++" STR_TO_ADD="string that i want to add"

洛谷P2071 座位安排

旧时模样 提交于 2019-11-28 19:27:40
题目背景 公元二零一四年四月十七日,小明参加了省赛,在一路上,他遇到了许多问题,请你帮他解决。 题目描述 已知车上有N排座位,有N*2个人参加省赛,每排座位只能坐两人,且每个人都有自己想坐的排数,问最多使多少人坐到自己想坐的位置。 输入格式 第一行,一个正整数N。 第二行至第N*2+1行,每行两个正整数Si1,Si2,为每个人想坐的排数。 输出格式 一个非负整数,为最多使得多少人满意。 题解:显然可以点可以分为两个集合,左集合是人,右集合是座位,把每一列座位拆成两个点,然后想让最多人满意, 就把当前人和他满意的排数的两个点连一条边,跑一个二分图最大匹配即可。 #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; struct node { int ed,nxt; }; node edge[4005*16]; int n,cnt,first[4005],ans; bool used[4005*2]; int match[4005*2]; inline void add_edge(int s,int e) { cnt++; edge[cnt].ed=e; edge[cnt].nxt=first[s]; first[s]=cnt; return; }

AcWing 野餐规划

て烟熏妆下的殇ゞ 提交于 2019-11-28 01:42:59
AcWing 野餐规划 Description 一群小丑演员,以其出色的柔术表演,可以无限量的钻进同一辆汽车中,而闻名世界。 现在他们想要去公园玩耍,但是他们的经费非常紧缺。 他们将乘车前往公园,为了减少花费,他们决定选择一种合理的乘车方式,可以使得他们去往公园需要的所有汽车行驶的总公里数最少。 为此,他们愿意通过很多人挤在同一辆车的方式,来减少汽车行驶的总花销。 由此,他们可以很多人驾车到某一个兄弟的家里,然后所有人都钻进一辆车里,再继续前进。 公园的停车场能停放的车的数量有限,而且因为公园有入场费,所以一旦一辆车子进入到公园内,就必须停在那里,不能再去接其他人。 现在请你想出一种方法,可以使得他们全都到达公园的情况下,所有汽车行驶的总路程最少。 Input 第一行包含整数n,表示人和人之间或人和公园之间的道路的总数量。 接下来n行,每行包含两个字符串A、B和一个整数L,用以描述人A和人B之前存在道路,路长为L,或者描述某人和公园之间存在道路,路长为L。 道路都是双向的,并且人数不超过20,表示人的名字的字符串长度不超过10,公园用“Park”表示。 再接下来一行,包含整数s,表示公园的最大停车数量。 你可以假设每个人的家都有一条通往公园的道路。 Output 输出“Total miles driven: xxx”,其中xxx表示所有汽车行驶的总路程。 Sample Input