摘要: 刷了好几道高斯消元的题,感觉掌握的应该差不多了,这道还算比较经典。(感觉高斯消元就是模板题)题目描述:多组数据,N个开关,给出N个开关操作前和操作后的状态,再给出有联系的开关,每行两个数I J,表示如果操作第 I 个开关,第J个开关的状态也会变化。解法:高斯消元,建立一个N*N的方程组,由开关间的状态可以确定方程组的系数,方程组的bn为初状态和末状态异或得出。View Code 1 Source Code 2 3 Problem: 1830 User: celia01 4 Memory: 704K Time: 0MS 5 Language: G++ Result: Accepte... 阅读全文
posted @ 2012-04-06 23:54 celia01 阅读(1757) 评论(0) 推荐(0) 编辑
摘要: 题目描述:求八数码的解,输出x的移动方式(输出步数最少的解,但是也可能会有多解,所以是special judge)如果判断8数码有没有解可以用逆序数求,找出规律即可求解解法一:搜索(没写过)解法二:康托展开,一种hash的方法。int try_to_insert(int s){ int code = 0; for(int i=0;i 9 #include 10 #include 11 #include 12 #include 13 #include 14 #define see(x) cout=0&&newx=0&&newy0) Path(ans);102 el 阅读全文
posted @ 2012-04-06 23:28 celia01 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 题目连接:http://poj.org/problem?id=1077题目描述:给出一个迷宫,#表示墙,S表示起点,E表示终点。求从S到E的优先靠左边的墙走、优先靠右边的墙走和S到E的最短路径。解法:求优先靠左靠右的路径,用dfs,求最短路径用bfs即可。dfs中可以用nx = x+move[(i+4)%4][0];ny = y+move[(i+4)%4][1];处理很巧妙View Code 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define see(x) cout q; 19 int bfs(){ 2... 阅读全文
posted @ 2012-04-06 23:03 celia01 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 除了准备离散考试外,算是第一次仔细学习图论和网络流的相关知识了。以前只知道用最大二分匹配的模板,今天就把理论知识好好总结一下,以免以后忘记。从网上搜罗了一些知识,有一下几篇文章讲的很不错:http://imlazy.ycool.com/post.1603708.htmlhttp://old.blog.edu.cn/user3/Hailer/archives/2007/1829623.shtmlhttp://www.cnblogs.com/syxchina/archive/2011/07/10/2197204.htmlhttp://zh.wikipedia.org/wiki/%E5%8C%B.. 阅读全文
posted @ 2012-04-02 20:18 celia01 阅读(1166) 评论(0) 推荐(0) 编辑
摘要: 今天重新看整数划分想到了poj1664,写一下解题报告,免得总忘。归结为各种分配问题:M个苹果放入N个盘子里【1】M相同,N相同,可为空:允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。【其实这跟将一个整数m分成n个整数之和是类似的】:贴上自己当时的代码:View Code #include<cstdio>#include<iostream>#include<cstdlib>using namespace std;int f (int m, int n){ if (m<0) return 0; if (n 阅读全文
posted @ 2012-02-19 22:37 celia01 阅读(3447) 评论(1) 推荐(0) 编辑
摘要: 取石子游戏的变体。题意:有m堆石子,事先给定一个集合S,每次只能从一堆中取石子,且取的石子个数必须是S中的数。没有石子可取或者不能按规则取石子即为输。给定初始情况,判断最开始的局面是必败L,还是必胜W局面。这题如果知道SG函数,就很好解了。由sg的基础知识可知,某一局面的sg值为0则对应P局面,反之对应N局面,所以把最终局面的sg值求出来就可以了。这里在用到一个定理: 设gi为子游戏Gi的SG函数,那么组合游戏G的SG函数为:g(x1,x2,x3,...xn) = g1(x1) xorg2(x2) xor... xorgn(xn)先考虑只有一堆的情况,在把各堆的sg值异或就可以了。这是一个求. 阅读全文
posted @ 2012-02-01 18:41 celia01 阅读(414) 评论(0) 推荐(0) 编辑
摘要: DescriptionThe Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 #include#include#include#include#define see(x) coutk)和p[j]共同筛出来了。对筛素数的代码,略加几行代码,就可以顺带求出欧拉函数phi[x]了。用到了递推式:对于p|x。若p2|x,则phi(x) = phi(x/p)*p;否则phi(x) = phi(x/p)*(p-1) 阅读全文
posted @ 2012-02-01 17:38 celia01 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://maoyu2010.blogbus.com/logs/103213871.html花了一天的时间学了点博弈,算是懂了一点点基础的知识吧,下面分享一点我的经验,仅供不懂博弈的菜鸟尽快入门,大牛请无视。首先来玩个游戏,引用杭电课件上的:(1)玩家: 2 人; (2)道具: 23 张扑克牌; (3)规则: 游戏双方轮流取牌; 每人每次仅限于取1 张、 2 张或 3 张牌; 扑克牌取光,则游戏结束; 最后取牌的一方为胜者。想一下。。首先申明一点,博弈的讨论是在大家都玩的最好的情况下讨论的。(如果2 个玩家智商有差别,那就没法 阅读全文
posted @ 2012-01-27 21:27 celia01 阅读(450) 评论(0) 推荐(0) 编辑
摘要: struct point{ node a, b;}p[N];1、选择不相交区间 【例1】数轴上有n个开区间(ai,bi)。选择尽量多个区间,使得这些区间两两没有公共点。 【Solution】 bool cmp(point x, point y){ if(x.b!=y.b) return x.a<y.a; else return x.b<y.b; } sort(p,p+n,cmp); 再一次选区间2、区间选点问题 【例2】数轴上有n个闭区间[ai,bi]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。 【Solut... 阅读全文
posted @ 2012-01-26 15:33 celia01 阅读(552) 评论(0) 推荐(0) 编辑
摘要: 看了下训练安排表。年后的开始训练的两天29、31都会是图论和网络流,而自己最薄弱的就是图论和数据结构了。数据结构以及字符串那一块考代码能力比较强,只能承认那是自己的弱项了,但是图论和网络流就一定要趁这几天好好补过来了。 快乐的七天,一半时间用来好好玩乐,一半时间就用来切题学习,看离散,以及做四级真题吧。关于刷题,就以数论+组合数学+图论(网络流)为主吧。数学主要是为了之后出题,自己在各方面搜罗题目就ok,而图论就要好好的学习一番了。至少每一大类保证刷两道以上吧,其余的还有一些可以自己另找题目。转自:http://hi.baidu.com/zfy0701/blog/item/b8332b5... 阅读全文
posted @ 2012-01-20 20:14 celia01 阅读(197) 评论(0) 推荐(0) 编辑