HDOJ
nnbs
退役老年选手
展开
-
HDOJ1000 A+B Problem
#include int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF) printf("%d\n",a+b); return 0; } 唯一要注意的是输入数据个数不定...原创 2016-11-13 23:14:46 · 262 阅读 · 0 评论 -
hdoj 6071 模空间下最短路
hdoj 6071 模空间下最短路题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6071题目大意是编号为1,2,3,4的四个点,1连4和2, 2连1和3,3连2和4,4连1和3,永远从2号点出发回到2号点,要求跑的距离不小于k,问可以跑的最短距离是多少。这里有一个trick,由于我们从二号点出发,最终又要回到二号点,因此对于一条从从二号点出发最终又回原创 2017-08-27 22:29:11 · 278 阅读 · 0 评论 -
离线+带权并查集 hdoj3938 Portal
题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=3938题目的题意有些不清楚,看了discuss才明白。定义图上一条路径的cost为路径中所有边权中最大的那个。对于给定的图,回答当最大的路径长度为l的时候,最多可以有多少顶点对是可及的。按照Kruskal的思路,按边权从小到大连接顶点,每次相连,如果减少一个连通分量,那么可及顶点对就会增大,增大的个数原创 2017-05-17 23:33:06 · 297 阅读 · 0 评论 -
简单同构图 hdoj3926 Hand in Hand
同构图概念:假设G=(V,E)和G1=(V1,E1)是两个图,如果存在一个双射m:V→V1,使得对所有的x,y∈V均有xy∈E等价于m(x)m(y)∈E1,则称G和G1是同构的,这样的一个映射m称之为一个同构,如果G=G1,则称他为一个自同构。意思就是图的结构是一样的。题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3926这是一个特殊的图,图的最大度原创 2017-05-16 23:27:50 · 1286 阅读 · 0 评论 -
线段树初探
线段树是一种用于维护区间性质的数据结构,支持在线处理,其本身是一颗完全二叉树。HDOJ 1166 单点修改区间查询维护区间和 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1166 模版题,树状数组亦可A#include <iostream>#include <cstdio>#include <cstring>using namespace原创 2017-03-29 18:59:26 · 201 阅读 · 0 评论 -
再探完全背包 HDOJ 2069 Coin Change
题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2069题目大意是给定一个钱数,求出由1分,5分,10分,25分,50分的硬币组合出这个钱数,一共有多少种可能性。需要注意的是,硬币数最多不超过100枚。初看题目最先想到的肯定是暴搜。#include <iostream>using namespace std;int main(int argc, c原创 2017-01-28 18:04:58 · 235 阅读 · 0 评论 -
完全背包 HDOJ 1114 Piggy-Bank
题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1114题目大意是给出一个钱罐,钱罐中的钱有一定的重量,同时给出一些硬币,这些硬币有自己的重量和价值(每种硬币有无限个),求钱罐中钱的最少价值。完全背包状态f[i][j] 表示前i件物品放入空间为j的背包所能取得的最大价值。状态转移方程:f[i][j] = Max(f[i-1],[j-k*c[i]]+原创 2017-01-27 15:41:58 · 230 阅读 · 0 评论 -
模拟栈的出入 HDOJ 1022 Train Problem I
题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1022题目大意是给出一个入栈的序列,判断一个给出的序列是否可能是一个合法的出栈序列,若是,给出入栈和出栈的过程。#include <iostream>#include <cstring>using namespace std;int main(int argc, char const *argv[原创 2017-01-27 12:15:13 · 278 阅读 · 0 评论 -
HDOJ1003Max Sum
经典的最大子列和问题,经典的DP题,但是并不想DP(实际是DP渣),于是用了在线算法,时间复杂度同样O(n)上码:#include#includeint main(){ int num,*a,ans=0; int i,t; int n; scanf("%d",&n); int j; for (j=0;j<n;j++) { scanf("%d",&num)原创 2016-11-13 23:31:13 · 336 阅读 · 0 评论 -
HDOJ1251 统计难题 Trie树的基本操作
题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1251Trie树是一种特殊的多叉树结构,又称字典树或前缀树。特点是占用内存大(可以尝试左儿子右兄弟存储),但是可以很好的节约时间,时间复杂度为O(N),N为查找或插入的字符串长度。题目中统计含某一前缀的单词数正是Trie树的典型应用。Trie树的定义:typedef struct Trie{//记原创 2017-01-19 12:55:46 · 339 阅读 · 0 评论 -
异或的性质 HDOJ 2095 find your present (2)
题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2095异或xor运算是在计算机导论上接触过的一种运算,课上并没有深究,但是其实异或有很多好用的性质。一、异或的定义a⊕b = (¬a ∧ b) ∨ (a ∧¬b) 相同为1,不同为0二、异或的性质1.交换率与结合律a ⊕ b = b ⊕ a a ⊕ b ⊕ c = a ⊕ (b ⊕ c) = (原创 2017-01-21 15:22:42 · 407 阅读 · 0 评论 -
欧拉函数 HDOJ 1286 找新朋友
题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1286原题大意是给出一个数n,求出所有小于等于n且与n互质的整数的个数。而欧拉函数的定义是φ(n)为对于给定正整数 n ,少于或等于n的数中与n互质的数(包括1)的数目。欧拉函数通式:其中p1, p2……pn为x的所有质因数,x是不为0的整数。 φ(1)=1。性质1.若p是质数,n=p^k,那么则原创 2017-01-20 15:46:22 · 321 阅读 · 0 评论 -
递归与回溯 HDOJ 2553 N皇后问题 1016 Prime Ring Problem
题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2553 http://acm.hdu.edu.cn/showproblem.php?pid=1016递归是程序调用自身的一种技巧,在牺牲空间复杂度的同时,带来代码上的简明和思想上的畅快。回溯往往与递归同时出现,比起枚举,回溯的效率高一些,回溯的重点在于如何从当前状态返回上一状态。八皇后问题和素数环原创 2017-01-26 23:29:48 · 334 阅读 · 0 评论 -
素数筛 HDOJ 2136 Largest prime factor
题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2136题目的大意是求出一个数的最大质因数在素数表中的位置。素数筛法是一种判别素数的方法,对于范围不是特别大,需要反复查询的情况,效率较高。memset(isprime, -1, sizeof(isprime)); isprime[1] = 0; for(int i = 2; i <= MA原创 2017-01-22 22:43:57 · 269 阅读 · 0 评论 -
HDOJ 1710Binary Tree Traversals 二叉树的遍历
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1710由先序和中序求后序,递归求解但不建树。//二叉树的遍历#include <iostream>#include <cstdio>#include <cstring>using namespace std;//记录前序和中序int pre[1010], in[1010];int n;//原创 2017-02-19 18:03:10 · 413 阅读 · 0 评论 -
HDOJ 2044-2050递推For Beginner
题目传送门:http://acm.hdu.edu.cn/search.php?field=problem&key=%B5%DD%CD%C6%C7%F3%BD%E2%D7%A8%CC%E2%C1%B7%CF%B0%A3%A8For+Beginner%A3%A9&source=1&searchmode=source一边百度一边做完了这7道题,头昏脑胀,趁着现在还会做,赶紧mark一下,不然原创 2016-11-26 20:49:50 · 390 阅读 · 0 评论 -
HDOJ1002A + B Problem II
久违的高精度……核心思想是按字符串读入然后倒序存储,模拟竖式加法。#include #include int Max(int a, int b){ return (a>b)?a:b;}int main(){ int n,i,j; char s1[1001],s2[1001]; scanf("%d",&n); for (i = 0;i < n;i ++) { s原创 2016-11-13 23:19:58 · 280 阅读 · 0 评论 -
HDOJ1001Sum Problem
简单的阶乘#include int Multi (int n);int main(){ int i,n; while (~scanf("%d",&n)) { printf("%d\n\n",Multi(n)); } return 0;}int Multi (int n){ int i,ret = 1; for (i=2;i<=n;i++) { ret +=原创 2016-11-13 23:17:11 · 283 阅读 · 0 评论 -
hdoj6188 贪心
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=61883个连续的数字是顺子,两个相同的数字是对子 题目大意是给一个序列,一个数字只能用一次,从中挑选出对子和顺子,问选出的对子+顺子的个数和最大是多少将序列排序,从最小的开始选,如果它能和之前的两个数字组成顺子,那么优先选择顺子,因为同样是使答案增加1,我们只需要使用当前数字中的一个而非两个就可以达到原创 2017-08-31 19:50:50 · 334 阅读 · 0 评论