- 博客(44)
- 资源 (1)
- 问答 (3)
- 收藏
- 关注
转载 P问题、NP问题、NPC问题、NP难问题的概念
原文出处:http://blog.sina.com.cn/s/blog_5212bec30100o03y.html你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已
2016-05-03 14:09:02
556
原创 UVA 494 Kindergarten Counting Game
#include #include #include using namespace std;// 错误思路一:用gets,空间不确定//int main ()//{// char s[100000];// while (gets(s))// {// int n = strlen(s);// int k = 0;// int index_i = 0;// for
2016-03-22 12:02:07
264
原创 排序算法总结
一、排序中的思想方法 1.分治 快速排序 归并排序 基数排序 2.变无序为有序,使用某种数据结构对数据进行预处理(即将数据按一定规则组织起来,方便高效地排序) 二叉排序树 堆排序 Trie 3.将几种思想方法进行综合 希尔排序:先处理使其基本有序,在使用插入排序其效率就会提升很多
2014-03-09 16:18:06
482
转载 [HDU 4666]Hyperspace[最远曼哈顿距离][STL]
转自:http://blog.csdn.net/iyundi/article/details/10528119 1. multiset实现/* **********************************************Author : kuangbinCreated Time: 2013/8/13 18:25:38File Name : F
2013-11-02 20:11:49
455
原创 STL set 用法之 —— 自定义结构体
例:#include #include #include using namespace std;struct A{string str;int score;};bool operator<(const A& lhs, const A& rhs) { return lhs.score<rhs.score;}void test(){sets;A a,b,c;
2013-10-19 20:39:58
2527
转载 前辈博客
Twilightgod CUST http://blog.csdn.net/twilightgodAekdycoin FZU http://hi.baidu.com/aekdycoinForeverlin HNU http://hi.baidu.com/forverlin1204/blogMatrix67 PKU http://www.matrix67.com/blog/watas
2013-09-08 00:05:05
447
转载 线段树题型汇总
线段树题目线段树//zoj 1610 线段覆盖//poj 2777 线段覆盖//poj 2528 需要离散化,建树不同,需要处理不同->注意这组数据 3 1 10 1 3 6 10 the ans is 3.//hdu 1754 求区间最大值//hdu 1166 求区间和//hdu 1698 成段更新//poj 3468 成段更新//ural 1019 覆
2013-09-07 23:01:54
434
原创 HDU1215 七夕节(另一种思想)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1215 题目大意:求所有正整数N的因子之和; 题目分析:这题没什么难的,主要借此来说一下另一种别致的思想:1)表面上看,我们眼中默认的整体是所有输入的数,默认的子问题是每次输入的数,默认的部分一个一个的找因数;这样虽然我们站在的总体是一样的,但我们把整体分解成了子问题
2013-09-06 00:31:25
480
转载 素数筛法求素数(线性时间)
摘自:http://blog.csdn.net/once_hnu/article/details/63022831)普通方法判断素数:O(n*sqrt(n))2)筛法求素数:线性时间,即O(n)// 1:这是最原始的筛法,还有待优化 #define Max 1000000bool prime[Max];void IsPrime(){ prime[0]=prime[1]=
2013-09-05 22:22:03
457
原创 hdu4278 Faulty Odometer(反常规则水题--八进制)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4278 题目描述:1)一个损坏的里程表,计数时会自动跳过3和8,其他正常;2)给出里程表的示数,求实际的里程数; 题目分析:1)这个题刚开始我的错误思路:分别每位求跳过多少次,比如说在150在十位上跳过3次,因为3_,8_,13_各跳过一次, 最后需要在
2013-09-03 08:02:47
649
原创 HDU4588 Count The Carries(数字统计与数字规律)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4588 题目描述:1)给两个数a,b;2) 将a,b之间的数化为二进制相加;(包括a,b)3)求总共的进位个数; 解题思路:1)进位首先是在算术相应位对齐相加过程中产生的;2)所以要模拟算术相加过程 ,总结怎样得到进位个数;3)所以,另外考虑到时间上的可能性
2013-08-18 23:55:36
837
原创 HDU4596 Yet another end of the world(数学公式推演+数论定理--2013南京邀请赛)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4596 题目描述:1)给N组数,每组X,Y,Z三个数2)是否存在一个数ID使得同时满足:Yi3) Y 解题思路:数学题尽量用公式表示,利用公式推演出熟悉的式子,利用现成的已知的定理去解决,即使不知道这个定理怎么去证明,自己解不出的题,就交给N多年前的前辈门吧,直
2013-08-18 08:43:18
1157
原创 HDU4666 Hyperspace(数学推理+数据结构)
问题领悟:1)求两点的曼哈顿距离2)求n个点中最大的曼哈顿距离(朴素算法:O(n^2) ) [在不考虑删除操作的情况下]3)加入删除操作,如果前面已求得的最大距离若有一个被删去,则需要重新计算最大曼哈顿距离,最坏情况时间复杂度可达O(n^3) ;远远超出。问题思考:1)首先能不能找到问题的一种朴素算法,使复杂度为O(n^2)的,在10s时间下可以试试;2)期待这类O(
2013-08-14 20:43:05
519
原创 HDU4671 Backup Plan(构造序列-多校七)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4671解题回顾: 以m为列数,n为行数: 1)当n时:贪心,只需将前n个数分别排在每行首位,最后一个数排在第二位即可; 2)当n>=m时:先考虑第一位:先给每个服务器分配n/m个数据库,再给前n%m个服务器各分配
2013-08-14 15:13:45
499
原创 POJ1159 Palindrome(最大回文串长度)
回文串:给一个串,求最少增添几个字符能使之成为回文串例如:Ab3bd 首尾增添2个d A 成为Adb3bdA 或dAb3bAd解法:动态规划;1)和杭电多校一题统计回文串的题很像,考虑能不能直接套用;2)还是先从动态规划的基本元素分析吧;设状态:dp[i][j]为第i位与第j位之间的串需要多少个最少字符才能组成回文串3)尝试写状态方程并判断最优子结构性质,无
2013-08-13 00:37:05
518
原创 POJ1260 Pearls(多重捆绑成0-1背包)
该怎样去思考?1)有n种物品,2)每选一种都要多加上10件,3)每种物品有件数要求,也可选价格更高的代替,问:求最少的耗费如果暂时忽略掉条件2)3)的价格替换;那么装化为多重背包问题?1.背包问题:1)容量为总个数,且必须装满;2)每件物品权值均为1;2.从具体问题分析:主要是在选和不选上浪费那10个额外的物品的钱,如果没有这个条件的话,那当然是尽量
2013-08-13 00:32:38
567
原创 MU Puzzle(推理找规律)(多校第六场))
【题目链接】:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1008&cid=460 【解题思路】:这题初看起来情况很复杂,动态性很高,但注意到一个很特殊的地方,就是他每次都是以MI这个为起点的,只要先从这个往下推,看得出的串有什么规律就行了。这类题就是推导出数学式子,然后利用数学公式推导出条件。
2013-08-11 11:21:44
984
原创 Unshuffle(深搜加剪枝-hdu4665)
【题目解法】:深搜加剪枝:为什么n=2000的2^2000种情况可以用深搜?1)我想应该是这题的条件比较强,必须保证已选的序列必须前面的部分完全相等才行,这是一个很强的剪枝条件,应该不用等到构造完序列而很快就能把不符合的剪掉;2)另外题目中说只要找到任何一组就行了,所以一旦找到符合的就直接结束DFS,因此不会全部遍历枚2^2000种情况,这也是一个有效的剪枝条件;3)另外还
2013-08-11 09:27:36
716
1
原创 Cut Pieces (数学分析---杭电第六场)
【题目链接】http://acm.hdu.edu.cn/showproblem.php?pid=4655 Problem DescriptionSuppose we have a sequence of n blocks. Then we paint the blocks. Each block should be painted a single color and block i
2013-08-10 00:28:29
726
原创 图的深搜和广搜模板(多校联合第一场Park Visit)
#include #include #include #include #include using namespace std;int ans,end;vector graph[100001];int visited[100001] = {0};typedef struct{ int v,n;}Node; void dfs(int v){ vector::
2013-07-29 15:14:14
1094
原创 深度优先模板(POJ2488)
#include #include int dir[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}};int flag[100][100],cnt,m,n;struct node{ char letter; int num;}arr[1000];void dfs(int a,int b,int c
2013-07-29 11:34:59
457
原创 广度优先搜索模板(poj2251)
我的广度优先搜索的大致框架。。【代码】:#include #include #include #include using namespace std;typedef struct{ int x,y,z; int n;}Point;int dir[6][3]={-1,0,0,1,0,0,0,-1,0,0,1,0,0,0,-1,0,0,1};char map[3
2013-07-28 21:49:44
616
原创 poj 3295 Tautology(经典构造算法题)
思路:1)使用递归模拟,用备忘录优化,否则超时 另外:学到了一个不用递归即可枚举构造0-1序列的方法for(i=0;i<32;i++) for(j=0;j<5;j++) arr[j]=(i>>j)%2; 【源程序】:#include "stdio.h"#include "string.h"int arr[101],flag,note[1
2013-07-27 13:59:36
406
原创 大数模板(以poj2109为应用实例)
主函数函数之外部分为大数模板,题目相关只在主函数中涉及。#include #include #include #include #include #include #define abs(a) ((a)>=0?(a):-(a)) using namespace std; //---------------------------------大数模板-----------
2013-07-26 13:32:12
395
原创 Flip Game(poj1753_阵列的枚举)
题目:http://poj.org/problem?id=1753 思路1:0MS1)递归枚举第一行,16种情况;2) 然后分别通过下一行的翻转来使上一行全‘b’或全'w';3)一旦第一行16种情况的其中一种形成,则下面的翻转情况就唯一确定了,所以枚举量为16;4)最后检查最后一行是否全‘b’或全‘w’来判断满不满足全‘b’或全‘w’。思路2:还可使用高斯消元法做
2013-07-26 09:23:05
382
转载 最长递增子序列(LIS) nlog(n)算法
转自: http://www.felix021.com/blog/read.php?1587 今天回顾WOJ1398,发现了这个当时没有理解透彻的算法。看了好久好久,现在终于想明白了。试着把它写下来,让自己更明白。最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS。排序+LCS算法 以及 DP算法就忽略了,这两个太容
2013-07-24 13:52:58
452
原创 暑期集训心得
7.23(暑期集训第三天): 收获:1.大概知道了哪些题自己能做,哪些题自己做不出来,这样就不至于比赛时妄想面面俱到,结果面面不到的尴尬场面;2.平时训练的题真是太水了,真到比赛时觉得赛题真是天方深不可测!完全比比赛低了不止一个档次!所以我决定以 后拿真是的赛题来训练!3.写程序怎样才能一次AC?怎样才能不漏洞百出?怎样才能不会给自己设一个死活都找不出来的陷阱?怎样才
2013-07-23 20:21:47
480
原创 Radar Installation(POJ1328转化为活动安排问题)
【题目链接】:点击打开链接 【解题思路】:刚开始没思路,但感觉是挺简单的动态问题,要么是贪心,要么动态,凭直觉认之为贪心(水平有限,暂时只能凭感觉) 但如何贪心呢?无从下手啊,如果先按横坐标再按纵坐标排序,那最终距离X轴的距离并不是与之一样同序的,所以暂时 没有想法。。。 后来
2013-07-23 20:06:33
513
原创 POJ 1002 487-3279(排序or不排序)
一.排序 1.快排,顺序统计 2.堆排序优化 二.不排序 3,开10000000的数组,直接哈希映射,不用排序 4.使用trie树,不用排序,深搜遍历输出
2013-07-16 14:07:42
516
转载 树状数组
树状数组树状数组是对一个数组改变某个元素和求和比较实用的数据结构。两中操作都是O(logn)。 在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。 但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。 可以说,每次修改A[i]后,调整前缀和S[]在最坏情况
2013-07-16 13:50:00
351
转载 堆排序
堆排序 堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节
2013-07-16 11:46:59
305
转载 归并排序
(1)分析: 算法时间复杂度:平均:O(nlogn) 最坏:O(nlogn) (2)实现: //将有二个有序数列a[first...mid]和a[mid...last]合并。void mergearray(int a[], int first, int mid, int last, int temp[]){ int
2013-07-16 11:37:43
390
转载 线段树入门
Mythology2008-01-17 13:59 线段树入门好久没写过算法了,添一个吧,写一个线段树的入门知识,比较大众化。上次在湖大,其中的一道题数据很强,我试了好多种优化都TLE,相信只能用线段树才能过。回来之后暗暗又学了一次线段树,想想好像是第三次学了,像网络流一样每学一次都有新的体会。把问题简化一下:在自然数,且所有的数不大
2013-07-05 16:29:09
322
原创 POJ1007 DNA Sorting (求逆序数)
【题目】:问题 A: DNA Sorting 【来源】:点击打开链接【解法】:(1)我的做法(朴素做法效率低O(n2)):这题我做的比较直接,对每个字符串两层循环挨个扫描计算出其总的unsortness的总值,然后快排后顺序输出 #include #include #include #include using namespace std;t
2013-07-05 12:19:54
428
原创 Human Gene Functions(最长公共子序列变形题)
【题目】:问题 B: Human Gene Functions【来源】:点击打开链接【解法】:这个题是最长公共子序列的变形题。1.确定状态:状态表示显然是用二维数组表示DP[i][j]当前i和j对应下最大的权值2.状态方程:写状态方程根据状态转移的情况不同,可分为从当前状态推下一个状态,还有一种是从后面个状态推前面的状态,具体分情况而定(这个地方还不是理解的很透,具体的刘汝佳的黑
2013-07-03 21:54:05
418
原创 7.3.(小学期第三套题)解题回顾与心得体会
今天题目链接:点击打开链接 1.刚开始昨天已经总结过要沉下心来,但今天还是险些栽在另一点上,那就是不要时时刻刻和拿别人比:因为那样打乱了自己的节奏,把自己的注意力转移在别人身上,不能集中精力去做自己能做出来的题。 另外,我想说,我不是你,也不是他,只有我对于我自己是最真实的,我的进步来源于对自我的超越,我永远只有和自己比才叫进步,排名什么的只会扼杀人的淡定的心灵。 2.我的心
2013-07-03 20:31:02
449
转载 状态压缩入门 摆放车子
声明:此为转载,原文链接:BUCT OJ 网友chdh14b大家好~我和大家分享一下我对状态压缩类的动态规划题的一些看法。顾名思义,状态压缩类的动态规划的本质是动态规划,所以要处理好状态压缩问题首先要把握好动态规划的解题思路。首先,来回顾一下动态规划算法的设计:(1)首先把握问题的解是否可以分解的,可分解则考虑是否可用动态规划算法。(2)描述最优解的结构。(
2013-07-03 11:02:33
714
转载 优先队列用法
声明此为转载,原文链接:ski C++之梦 在优先队列中,优先级高的元素先出队列。标准库默认使用元素类型的优先队列的第一种用法,也是最常用的用法:priority_queueint> qi;通过故示例1中输出结果为:9 6 5 3 2第二种方法:在示例1中,如果我们要把元素从小到大输出怎么办呢?这时我们可以传入一个比较函数,使用functional.h函数对
2013-07-03 10:56:59
421
原创 合唱队形(LIS最长递增子序列) 解题过程
【题目链接】:点击打开链接【解题思路】:1.学会把问题分解成简单的子问题求解:一开始想起来把这个问题分解成两个过程求解,求上升最长子序列和下降最长子序列,后来后者可以转化成前者来求 状态dp[i]表示结尾为num[i]的子序列的最大长度,状态方程为: dp[i]=1; if(num[i]>num[k]) (k=1~i-1) dp[i]=max(dp[i]
2013-07-03 00:37:36
620
原创 BUCT-OJ 2060 数字三角形4
【题目来源】: TYVJ 1084【题目链接】:点击打开链接【解题思路】:此题我的思路和数字三角形3的思路一样,只不过(n/2,n/2)换成了待输入的点(x,y),必然经过一点,那我就从这点为分界,先从顶递推至此点所在行,再从底递推至此点所在行,两次的结果累加在此点上,即为所得结果【A C代码】:#include #include #include #include
2013-05-19 14:17:35
480
STL源码剖析 简体中文,清晰,完整版,带目录
2013-10-08
opencv中cvPOSIT函数的参数:焦距(focal length)怎么确定?
2016-06-13
java中String的没有结束符吗?
2015-03-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人