上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 50 下一页
摘要: 题意:给定一个N*M 的网格,每个网格上有一个硬币,或上或下,游戏结束的条件为说有的硬币都朝上,选择一个以N,M为右下角,右上角为朝上硬币的矩形,使得里面所有的硬币都翻转,游戏结束的步数是奇数还是偶数解题思路:典型的博弈问题,如果右下角为 朝上,则翻完所有的硬币必定为基数,不然则偶数解题代码: 1 #include 2 #include 3 #include 4 int a[105][105]; 5 int n , m ; 6 int main() 7 { 8 int t ; 9 scanf("%d",&t);10 while(t--)11 {12 ... 阅读全文
posted @ 2013-08-02 19:03 dark_dream 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题意:每一个“hehe”子串都可以看成另一个意思,问一个句子最多能有多少个意思解题思路:dp,如果有连续的hehe 把每个hehe当成一个石头,那么就可以抽象成从n个连续的时候中抽出k个石头,且两两不相邻,对于从第二个石头开始的石头,他的结果取决于 取或不取 它前面那个石头的结果 所以 dp[1][i] = d[2][i-1] ; dp[2][i] = d[1][i-1] 所以 dpsum[I] = dpsum[i-1] + dpsum[i-2];是个斐波那契数列。解题代码: 1 #include 2 #include 3 #include 4 #include 5 #define ... 阅读全文
posted @ 2013-08-02 17:45 dark_dream 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 题意:区间更新,区间求和解题思路:本来以为自己搞出了区间更新A这题很简单呢,没想到这里面还有这么多学问,不过幸好坚持没有看解题报告和代码,自己对线段树的理解又更深了一层!主要是向下更新的时候有问题,自己调试的时候又出现了一个非常sb的常识性错误,然后就wrong到现在,主要的解题思路还是线段树的区间操作解题代码: 1 #include 2 #include 3 #include 4 #define MAXN 200005 5 struct node 6 { 7 long long left ,right,mid; 8 long long num ; 9... 阅读全文
posted @ 2013-08-02 17:12 dark_dream 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个长度为n的区间,动态改变某个区间的值,问你最后整个区间的合是多少解题思路:第一个区间覆盖的线段树问题,很自豪自己YY出了延迟标记(覆盖需要利用的延迟标记) 哈哈,就是利用的延迟标记覆盖区间,然后树根的值就是整个区间的值,每次覆盖后pushup就行解题代码: 1 #include 2 #include 3 #include 4 #define MAXN 100005 5 struct node 6 { 7 int left ,right,mid; 8 int num ; 9 int cover;10 } tree[MAXN*4];11 int L(in... 阅读全文
posted @ 2013-07-31 20:41 dark_dream 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 题意:约瑟夫环游戏,第 p个出来的人有F(p)(求p的反素数)个糖果,问糖果最多的人的名字和它有多少个糖果,如果最多的有几个人,输出最先出来的那个人解题思路:这个题目有很多细节要注意,首先,顺时针的话大的是在他的左边,然后就是要注意它的步数是否是大于人数的,利用线段树的基本性质搜索它的位置就行了解题代码: 1 #include 2 #include 3 #include 4 #define MAXN 500005 5 int n, k ; 6 int a[MAXN]; 7 struct node 8 { 9 int left ,right ,mid ; 10 ... 阅读全文
posted @ 2013-07-31 18:04 dark_dream 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个队列,有n个人,每个人按顺序插入到队列中的某个位置,问最后的队列序列解题思路:无力吐槽自己的智商了,神题,完全利用了线段树的性质进行搜索 解题代码: 1 // File Name: poj2182.c 2 // Author: darkdream 3 // Created Time: 2013年07月29日 星期一 22时05分45秒 4 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #define MAXN 200005 12 struct node 13 {... 阅读全文
posted @ 2013-07-31 01:27 dark_dream 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题意:每个奶牛都有一个编号,1- N 从第二个牛开始给出前面比她编号小的牛的个数,问你求牛的编号序列解题思路:线段树+ 二分查找 (多个相同的数二分边界问题需要注意) 解题代码: 1 #include 2 #include 3 #include 4 #define MAXN 8005 5 struct node 6 { 7 int left , right,mid ; 8 int num; 9 }tree[MAXN*4]; 10 int L(int c) 11 { 12 return 2 * c; 13 } 14 int R(int c) 15 { 16 ... 阅读全文
posted @ 2013-07-30 10:39 dark_dream 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个h*w广告牌,给定n个1*wi 的公告,贴公告的规则是,如果上面能贴尽量往上面贴,如果如果左边能贴尽量往左边贴,问你每个广告牌所在的行数;解题思路,对n建树,然后动态维持区间最大值,查找更新!解题代码: 1 #include 2 #include 3 #include 4 #include 5 #define MAXN 200005 6 struct node 7 { 8 int left ,right ,mid; 9 long long num;10 }tree[4*MAXN];11 int h , w, n ;12 int L(int c)13 {14 ... 阅读全文
posted @ 2013-07-29 16:45 dark_dream 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个序列,求出这个序列和它的循环序列里面逆序对的最小值解题思路:线段树,这里建树不应该用数组来建树,而是建一个空树,然后边插入,变查找,类似于一个hash树,快速找比它大的数字。循环队列的逆序对为可以dp得出解题代码: 1 #include 2 #include 3 #define MAXN 5005 4 struct node 5 { 6 int left ,right,mid ; 7 int num; 8 }tree[4*MAXN]; 9 int L(int c) 10 { 11 return 2*c; 12 } 13 int R(int c)... 阅读全文
posted @ 2013-07-29 15:46 dark_dream 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个序列,动态更新值,然后多次询问,求每段和解题思路:线段树基本操作解题代码: 1 #include 2 #include 3 #include 4 #include 5 #define MAX 50005 6 int a[MAX]; 7 int ans = 0 ; 8 int L(int c) 9 { 10 return c * 2; 11 } 12 int R(int c) 13 { 14 return c * 2 + 1; 15 } 16 17 struct node 18 { 19 int left , right ,mid; 2... 阅读全文
posted @ 2013-07-27 20:27 dark_dream 阅读(159) 评论(0) 推荐(0) 编辑
上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 50 下一页