acm
文_弱
一只菜鸟正在向不那么菜努力……
展开
-
[思维题]Bored Qishen
给出一个整数集,其中包含1-n的所有整数,要求挑选出一个元素最多的子集,使得子集中任意两数的乘积不是完全平方数 (n<=10^6) 求这样一个最大子集的元素个数#include <cstdio>#include <cstring>#include <cmath>const int N = 1000006;int b[N];int cnt[N];int s[N];void init(){原创 2015-03-04 13:02:18 · 399 阅读 · 0 评论 -
code[vs]3301 Square words
暴力枚举+最长公共子序列#include <iostream>#include <cstring>using namespace std;int dp[510][510];int n;int lcs(char * a, char * b, int lena, int lenb){ memset(dp, 0, sizeof(dp)); for (int i = 1; i <= l原创 2015-03-07 20:52:56 · 606 阅读 · 0 评论 -
HDU1022 Train Problem I
第一次周赛就有这道题,现在还耿耿于怀 主要就是用到栈,水题啦#include <cstdio>#include <stack>#include <cstring>using namespace std;const int MAX = 1000 + 10;int n;char in[MAX], out[MAX];int pro[2 * MAX]; //记录原创 2015-03-11 18:55:15 · 436 阅读 · 0 评论 -
HDU 1007 Quoit Design
给一系列点的坐标,求距离最小的两个点。基本是照着别人的代码写的……我以为我看懂了的……怎么还是错了辣么多次……#include <cstdio>#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int MAX = 100005;struct point{ double x,原创 2015-03-12 22:07:14 · 403 阅读 · 0 评论 -
HDU1710Binary Tree Traversals
HDU1710Binary Tree Traversals题目大意:给一个树的前序遍历和中序遍历,要求输出后序遍历。 (半年前做这道题做了两天没看懂,今天学了二叉树,回来AC了^ ^) 首先介绍一下二叉树。二叉,即每个节点最多连向下连两个结点,也就是最多两个孩子。 如题目描述,二叉树就长这样~ 如①②③结点中①是根节点,②是左儿子③是右儿子,其余类似。 前序遍历就是先根节点,然后左儿子原创 2015-03-30 20:53:27 · 406 阅读 · 0 评论 -
HDU2544 最短路
最短路最基础的题啦,刚学会拿来练习~~~ 用的Dijkstra算法【目前就会这一个Orz#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int MAX = 105;const int INF = 0x7ffffff;int mp[MAX][MAX];int vis[MAX];原创 2015-03-15 22:15:30 · 368 阅读 · 0 评论 -
动态规划——背包问题
一、01背包 题目描述:01背包是在n件物品取出若干件放在空间为W的背包里,每件物品的体积为w1,w2……wn,与之相对应的价值为P1,P2……Pn。求出获得最大价值的方案。[注意:每种物品只能拿一个。]用二位数组dp来记录状态,其中dp[i][j]表示的是从第一件物品开始向背包里装,当背包最大空间为j且装到第i件物品时,价值最大是多少。显然,对于每个物品可以选择装或不装~ 递推方程:dp[0]原创 2015-03-17 22:30:37 · 328 阅读 · 0 评论 -
KMP学习总结
初学,理解可能不是那么准确~~ Next数组的含义:next[i]表示第0个元素到第i个元素组成的字符串的最大前缀后缀。Next[0]=0显然。 所以KMP的原理就是 通过找出每一阶段最大的相等的前缀后缀,那么匹配到某个字符失配时就可以从前缀的下一个字母开始匹配,而不用再回退匹配。使复杂度降从O(m^n)到O(m+n)。 最重要的就是求next数组,而且next数组在很多题都有应用,不止原创 2015-04-28 22:40:51 · 428 阅读 · 0 评论 -
1225: 最小花费
Description现在给出N个城市,城市之间共有M条道路。道路表示的方法是<u,v,w>,代表从编号为u的城市,到标号为v的城市有条花费为w的道路。现在我们从编号为S的城市出发,目的地是编号为T的城市。但是我们在旅途中从u号城市到v号城市花费不只是他们的道路的花费w,还要加上以前的所有花费的一半,向下取整。Input第一行一个正整数T<=10,代表测试数据个数对每组测试数据:第一行两个原创 2015-04-10 20:53:40 · 532 阅读 · 0 评论