P2905 [USACO08OPEN] Crisis on the Farm G
题目描述
约翰和他的奶牛组建了一只乐队“后街奶牛”,现在他们正在牧场里排练。奶牛们分成一堆一堆,共 $N$ 堆。每一堆里,$30$ 只奶牛一只踩在另一只的背上,叠成一座牛塔。牧场里还有 $M$ 个高高的草垛。
作为出色的指挥家,约翰可以通过口哨指挥奶牛们移动。他的口哨有四个音,分别能使所有的牛塔向东南西北四个方向移动一格。
每一次,当一个牛塔到达了一个草垛所在的格子,牛塔最上方的奶牛就会跳到草垛上,而且不再下来,而其他奶牛仍然呈塔状站在草垛所在的格子里。当牛塔只剩一只奶牛时,这只奶牛也会跳到草垛上。
突然,约翰大惊失色:原来邻家的奶缸爆炸了!滚滚而下的牛奶正朝着约翰的牧场冲来,不久就要将牧场淹没。约翰必须马上行动,用口哨声挽救奶牛们的生命。他要指挥奶牛尽量多地跳上草垛,草垛上的奶牛将不会被淹死。
约翰还有 $K$ 次吹口哨的机会。那他最多还能救多少奶牛呢?请计算最多能挽救的奶牛数,以及达到这个数目约翰需要吹的口哨调子序列。序列用 $\mathtt{E,W,S,N}$ 表示东西南北。如果有多种序列能达到要求,输出字典序最小的。
输入格式
第一行三个正整数 $N,M,K$。
下面 $N$ 行,每行两个正整数 $X_i,Y_i$,表示一个奶牛堆的坐标 $(X_i,Y_i)$。
下面 $M$ 行,每行两个正整数 $X_i,Y_i$,表示一个草垛的坐标 $(X_i,Y_i)$。
输出格式
第一行输出一个整数表示最多能挽救的奶牛数。
第一行输出一个长度为 $K$ 的字符串表示达到这个数目约翰需要吹的字典序最小的口哨调子序列。
说明/提示
样例解释:
$3$ 声哨子吹完后,$3$ 个草堆各挽救了一只奶牛。
---
对于 $100\%$ 的数据,$1\le K\le 30$,$1\le N,M,X_i,Y_i\le 1000$。