今天先整理一下昨天没写完的高斯消元题。
开关问题,[POJ1830],和昨天写的开关灯问题基本一样,每个灯都与某些灯关联。输入是这样:输入第一行有一个数K,表示以下有K组测试数据。
每组测试数据的格式如下: 第一行 一个数N(0 < N < 29)
第二行 N个0或者1的数,表示开始时N个开关状态。
第三行 N个0或者1的数,表示操作结束后N个开关的状态。
接下来 每行两个数I J,表示如果操作第 I 个开关,第J个开关的状态也会变化。每组数据以 0 0 结束。
输出是:如果有可行方法,输出总数;否则输出“Oh,it's impossible~!!”
这里只写一下思路:
对于每盏灯的初始状态start,末状态end,可以列出一个方程:
start ^ (所有可能改变其的灯) * 1 ^ (所有不可能改变其状态的灯) * 0 = end;
两边同时异或start,得
(所有可能改变其状态的灯) * 1 ^ (所有不可能改变其状态的灯) * 0 = start ^ end;
列出N个方程组,N个未知量,然后直接模板求出自由变元数,方案数为自由变元数目free_num的组合数 1 << free_num。(移位)
今天不想再写题解了。
集训就一直在看数学部分的博客,最开始几天看的还比较轻松,后面就感觉有点儿无从下手,置换群、高斯消元、快速幂、费马小定理都看了一部分,因为单纯用一个知识点的题太少,总是那种和其他部分结合的题,我想看懂这个题解就需要再去补另外那些我不熟悉的知识点,所以感觉一直穿梭在各种知识点以及各种题解之间,有些混乱。
现在感觉在一个瓶颈,数学博客每个分块的题解我都多多少少看了一些,是知其云不知其所以云。
考虑刷一下之前那个数学网站的题,大概还是做题更能调动积极性。或者翻一下之前老师上传的有关数学部分的课件。再或者换一个人的博客看。
状态也需要调整一下。最近奶奶住院,我一直是机房和医院两处跑,饭空都是买着饭去医院吃,吃完再回机房继续写,确实受些影响,好在已经从重症监护室转出来了。
以上~