哪位能帮忙用动态规划写下面,我的思路是把这些游客分成k个团体,然后看每个团的票对不对。可是我无法区分导游在前面和在后面的情况,然后结果就有错。这样想来可能是思路错了。
题目描述
节假日的景区总是十分热闹,游客们分成了许多个团体,每个团体的导游可能在第一位或最后一位,他手上拿着这个团体的所有门票(导游本身不需要门票,其他游客每人需要一张门票)。每个团体之间可能隔着空隙也可能紧挨在一起。但检票员ILECY发了愁,面对眼前排得长长的队伍,他给你一串代表队伍的数列,数列中代表导游的数字表示该导游手上持有的门票数,而代表游客的数字表示该游客的编号。请你帮忙统计这些团体是否都购买了正确数量的门票。
例如 4 7 3 5 2 1 9 2 这个队伍的门票数是正确的,红色团体的导游在第一位,蓝色团体的导游在最后一位。 还有 3 1 3 0 0 1 9 2 这个队伍的门票数是正确的,红色团体的导游在第一位,蓝色团体的导游在最后一位,中间隔了一个空位。
输入
共两行
第一行包含一个数字 n,(1<=n<=10^7)表示队伍的总长度
第二行包含 n 个数字a1到ai (0<=ai<=10^9),表示队伍的情况,0 可以代表隔了一个空位或一个人的编号
输出
如果队伍中所有团体都购买了正确数量的门票,输出"YES",否则输出"NO"
样例输入
9
2 5 6 0 0 2 8 4 3
提示
样例解释
2 5 6为一个团体,导游在第一位;
2 8 4 3为一个团体,导游在第四位。
如果算法复杂度没有问题却时间超限,请使用更快的读入方法