摘要:
题意:给出总的钱币额V,给出n种币值和数目,问最接近V的的组合?分析:多重背包的模板题,多重背包问题是: 有N种物品和一个容量为V的背包。第i种物品最多有num[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最... 阅读全文
摘要:
题目:poj 2531 题意: 给出n(n#includeusing namespace std;typedef long long ll;const int N=22;int n,ans;int w[N][N];bool in[N];void dfs(int k,int sum){ i... 阅读全文
摘要:
题目:poj 3278 题意: 在[0,100000]上,给定两个整数n和k通过 n+1或n-1 或n*2 这3种操作,使得n==k,输出最少的操作次数 分析: bfs入门题,每个状态记录一下位置和步数,然后bfs就好。 题目:poj 1426 题意: 给一个正整数n,找出n的某个倍数m... 阅读全文
摘要:
题目:poj 2488 A Knight's Journey 题意: 给一个m*n的棋盘,马走日,给出一条字典序最小的马的路线来走完整个棋盘? 分析: 如果能走完棋盘,那么从(1,1)点dfs即可,因为他能走完整个棋盘嘛,总有一步会经过(1,1),所以从(1,1)出发就能到其他所有点。 为了保... 阅读全文
摘要:
题意: 给出一些字符串,统计出现的次数,并按字典序输出。 分析: 裸的Trie树,因为输出按字符串的字典序输出,所以插入的时候,把第一次出现的字符串暂时保存起来。以后排完序在查询输出即可。 不过这题我发现了一个很神奇的地方,因为我刚开始保存字母节点的时候开的数组是26,如果出现大写字母或空格可定... 阅读全文
摘要:
题意: 给出一些木棍,每个木棍两端有两种颜色,不同的木坤如果首尾颜色相同,那么就可以连接起来,问是否所有的木棍看可以连成一条线? 分析: 这题跟Uva10129单词那题几乎是一样的,只不过那题是有向图,因为单词的首尾是固定的嘛!而这题是无向图,无向图的话先判断一下是否是连通图,然后再判断一下每个... 阅读全文
摘要:
题意: 每次插入一个数字,在第u[i]次插入完后可以查询第k大的数字,然后k递增,初始化k=1。 总共数字n#include#include#include#includeusing namespace std;const int N=30009;int a[N],u[N],m,n;int ma... 阅读全文
摘要:
题意: 给出m行,每行n个数,每次从一行中选择一个数,这m个数求和。所有的方案数是n^m,问这些方案中和最小的n个? 分析: 这题有点桶排序和滑动窗口的意思,还是挺不错的一道题。因为要最小的n个和,所以可以用优先队列去维护最小的n个和,这n个和是第i行中的元素和前i行的和相加选择的最优的(这又有... 阅读全文
摘要:
题意: 输入一个字典,然后查询字典,翻译单词。 分析: 这题以前做过,是Trie树的入门题,当时也用map水过,现在用hash再水一遍。。。 比较好的输入处理: sscanf(str,"%s %s",str1,str2); #include#include#include#includ... 阅读全文
摘要:
题意: 给出一些平面上点的坐标,用其中的点做顶点,求其中能组成正方形的个数。 分析: 这题的做法很容易想到,枚举两个点,然后求出正方形另外两个点的坐标,用哈希判断一下是否存在即可(当然也可以排完序后二分)。 思路是简单的,关键是怎么通过正方形的两个点求出另外两点的坐标?可以想到可以枚举正方形... 阅读全文