摘要: 大白书上的题目,比较巧妙的是其分析,为了求某个i点做裁判的时候的情况数,只要知道左边有多少比它小的记为ansc,右边有多少比它小的记为ansd,则总种数,必定为ansc*(右边总数-ansd)+ansd*(左边总数-ansc)。为了速度求出ansc和ansd,用到树状数组,这倒不是很难得地方,每次读到a[i],更新a[i]值+1即可。反过来求一次即可求出来 ansd注意最后数据可能超过32位整数,因此用long long树状数组的使用还有些不熟练。。。要继续加强#include #include #include using namespace std;int x[100005];long l 阅读全文
posted @ 2014-03-11 23:46 KRisen 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 上次周赛碰到这个题目,居然都没思路,真是不应该啊,起码也应该想到枚举法。因为题目只允许每一row进行reverse操作,而每两列可以进行交换操作,所以首先把row的变化固定下来,即枚举第一列与第1-m列进行交换,之后逐个检查每一行第一列的状态 与 终态是否一致,不一致的话则该行就一定要进行reverse操作了,这样下来,每次枚举就把row的reverse变化给固定下来,接下来只要枚举 接下来的2-m行互相的列变换即可,只需一个嵌套循环即可,总的循环也只是三重 而n和m仅有100,规模承担的起一个简单的枚举暴力题 虽然说还是带有一点技巧的,怎么比赛的时候就没想出来呢!!!#include #in 阅读全文
posted @ 2014-03-11 23:40 KRisen 阅读(334) 评论(0) 推荐(0) 编辑