![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
POJ
今天没吃药
这个作者很懒,什么都没留下…
展开
-
POJ2479 - Maximum sum (动规)
题目链接 : poj2479 - Maxinum sum思路最大连续子列和代码思路题目要求的是,两段不相交的连续子列,使其加和最大。基础问题就是最大连续子列和,只要分别求得正序和逆序的最大和,然后枚举一边中间点,就可以得到结果。最大连续子列和解法有多种,这里用一种比较简单的动规的方法。 令 num[i]num[i] 表示序列中第 i 个数字, F(i)F(i) 为以第 i 个数字结尾的序列中原创 2015-08-30 01:39:40 · 506 阅读 · 0 评论 -
POJ1611 - The Suspects (并查集的应用)
题目链接思路并查集的简单应用,用负数来判断是否到达边界,直接用根元素里的数字的绝对值来确定当前集合的大小。代码#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int maxn = 30010;int par[maxn];int get_par(int cur){ if(p原创 2015-10-07 23:56:06 · 322 阅读 · 0 评论 -
POJ1308 - Is It A Tree? (并查集)
题目链接思路要想构成一棵树,那么就要满足,每一次的连边都是在两个不同的集合间进行的,这个用并查集就可以做。 还要将所有的节点都要连起来,所以记录一下节点数和边数,利用set就可以得到不同的节点个数,然比较是否满足节点数等于边数加一。 再对空树进行特判。代码#include <algorithm>#include <set>#include <cstdio>#include <cstring原创 2015-10-08 00:00:24 · 367 阅读 · 0 评论 -
POJ1861 - Network (并查集,最小生成树)
题目链接思路按照最小生成树来做就行,不要受样例的影响。代码#include <algorithm>#include <cstring>#include <cstdio>using namespace std;int par[1010];int get_par(int a){ if(par[a]<0) return a; else return par[a] = get_par原创 2015-10-07 23:58:36 · 386 阅读 · 0 评论 -
POJ2524 - Ubiquitous Religions (并查集的基础应用)
题目链接思路并查集,询问有多少个集合。代码#include <iostream>#include <cstring>#include <cstdio>#include <set>using namespace std;const int maxn = 50100;int par[maxn];int find(int a){ if(par[a]<0) return a; el原创 2015-10-07 23:57:02 · 326 阅读 · 0 评论 -
POJ2777 - Count Color (线段树 区间更新)
POJ2777 - Count Color解题思路代码解题思路这道题看上去是一道普通的区间更新问题,但入手还是挺多坑的。因为所要查询的是给定区间内不同颜色的个数,这就需要在每一层节点都要保存该区间的涂色情况,如果仅仅记录个数,是无法在较上一层进行汇总的,如果在每一个节点都用数组进行存储,那么对空间和运算时间都是很消耗的。所幸颜色种类比较少,所以我们可以像函数中的标志参数那样,用不同位上的 1 来表原创 2015-08-20 01:20:30 · 466 阅读 · 0 评论 -
POJ3264 - Balanced Lineup (线段树 基本操作)
题目链接 : POJ3264 - Balanced Lineup思路代码思路这道题是一个线段树的基本应用,将树节点设置为如下:struct Node{ int l, r; // 区间的起点和终点 int ls, rs; // 左右孩子,所处的位置 int maxn, minn; // 区间最大最小值}代码#include <algorithm>#include <原创 2015-08-30 01:29:25 · 405 阅读 · 0 评论 -
POJ2709 - Painter (贪心)
题目链接 : poj2709:Painter思路代码思路由于需要尽可能少的购买套餐,所以就要避免浪费。每种颜色的数量是不同的,为了避免某一种颜色剩余的过多,也就是有一些颜色会过早被用光,所以在每次取颜料来配置灰色时(利用 贪心 的思想),都要在剩余量最多的几种颜料中来取。 要每次都达到最优(也就是在剩余量最多中来取),所以每次的取量,不能过大。过大会导致不能达到最优,每次的进量只能为1。 具原创 2015-08-30 01:38:31 · 543 阅读 · 0 评论 -
POJ3070 - Fibonacci (矩阵快速幂)
题目链接:POJ3070 - Fibonacci解题思路代码解题思路给了一种新的斐波那契数列的求解思路,需要对一个矩阵连乘,可以类推数的快速幂来进行求解代码#include <iostream>using namespace std;const int mod = 10000;struct matrix{ int data[2][2]; matrix operator*(mat原创 2015-08-26 17:20:42 · 479 阅读 · 0 评论 -
POJ3468 - A Simple Problem with Integers (线段树 区间更新)
POJ3468 - 解题报告 (线段树 区间更新)poj3468 - A Simple Problem with IntegersPOJ3468 - 解题报告 线段树 区间更新思路面对的问题解决的方法具体的操作代码思路 线段树的应用,区间更新 和 区间查询,比较困难的就是区间更新了。面对的问题线段树之所以能够快速进行区间操作,是因为它的每一个区间分解得到的终止区间都是 O(logn原创 2015-08-30 01:27:31 · 726 阅读 · 0 评论 -
POJ2676 - Sudoku (深搜)
题目链接思路题意就是让完成数独游戏。 从第一个格子开始,依次尝试各种可能。当前节点填入的数字,不能与当前行,当前列,当前九宫格中现存的数字重复。这是最基本的思路,很容易超时,不过这道题的数据比较特别。倒着搜,也就是从最后一个节点开始尝试,会非常快。下面这个是从前面搜的,思路比较简单,几乎是飘过。 还有一道几乎一样的题,POJ - 2918代码#include <iostream>#includ原创 2015-10-13 23:28:26 · 592 阅读 · 0 评论