摘要:树状数组,其实很简单。只是MLE。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 #define MAXN 100005 7 8 short sum[10][10][MAXN]; 9 char bit[10][10]...
阅读全文
摘要:三分。 1 #include 2 #include 3 #include 4 5 typedef struct { 6 double x, y; 7 } Point_t; 8 9 Point_t A, B, C, D;10 const double eps = 1.0e-8;11 ...
阅读全文
摘要:初看01背包,果断TLE。是因为n和C都比较大。但是vi和ci却很小,转化为多重背包。 1 #include 2 #include 3 4 int map[15][15]; 5 int dp[10005]; 6 int n, C; 7 8 int max(int a, int b) { 9 ...
阅读全文
摘要:递推,推得f(n) = f(n-1) + f(n-3) + f(n-4)。然后转换成矩阵相乘,如下f(n-1) f(n-2) f(n-3) f(n-4) * 1 1 0 0 = f(n) f(n-1) f(n-2) f(n-3)0 0 0 0 0 0 1 0 0 0 ...
阅读全文
摘要:记忆化搜索。注意当除右下角0外,其余搜索到0则返回。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 #define MAXN 35 8 char map[MAXN][MAXN]; 9 __int...
阅读全文
摘要:很容易想到优先队列+拓扑排序。关键点是有限制条件者有限,无限制条件者在最后,条件相同者按序输出。因此采用逆序。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 #defin...
阅读全文
摘要:暴力打表。 1 #include 2 int a[25]={0,0,0,4,6,0,0,12,40,0,0,171,410,0,0,1896,5160,0,0,32757,59984,0,0,431095,822229}; 3 int main() { 4 while (scanf("%d...
阅读全文
摘要:简单字符串处理。 1 #include 2 #include 3 #include 4 #include 5 6 #define MAXN 25 7 char str[MAXN]; 8 int ten[15]; 9 10 int gcd(int m, int n) {11 if (...
阅读全文
摘要:枚举,假设这个数x=a*10^(i+1)+b*10^i+c,去掉b后y=a*10^i+c,x+y=n,则x+y=n(mod10^i),求出c,注意c 2 #include 3 #include 4 5 #define MAXN 105 6 int buf[MAXN]; 7 8 int com...
阅读全文
摘要:简单模拟,注意并不是完全按照FIFO的顺序。比如第i个人的id为k,那么就算第i+1人的id不为k,也会检查他后续的排队人是否有id为k的。 1 #include 2 #include 3 #include 4 5 #define MAXN 1005 6 7 typedef struct ...
阅读全文
摘要:基本数据结构主要包括:栈、队列、链表和有根树。10.1 栈和队列栈和队列都是动态集合,且在其上进行DELETE操作所移除的元素时预先设定的。在栈中,被删除的是最近插入的元素:栈实现的是一种后进先出(LIFO)策略。队列实现的是一种先进先出(FIFO)策略。栈栈上的INSERT操作称为压入(PUSH)...
阅读全文
摘要:在一个由n个元素组成的集合中,第i个顺序统计量(order statistic)是该集合中第i小的元素。用非形式化的描述来说,一个中位数(median)使它所属集合的“中点元素”。当n为奇数时,中位数是唯一的,位于i=(n+1)/2处。当n为偶数时,存在两个中位数,分别位于i=n/2和i=n/2+1...
阅读全文