- 博客(47)
- 资源 (4)
- 收藏
- 关注
转载 CodeForces 55D 数位统计 记忆化搜索
/* a positive integer number is beautiful if and only if it is divisible by each of its nonzero digits. 问一个区间内[l,r]有多少个Beautiful数字 范围9*10^18 数位统计问题,构造状态也挺难的,我想不出,我的思维局限在用递推去初始化状态,
2013-07-31 22:01:45 654
转载 hdoj 3555 Bomb/ hdoj 3652 B-number 数位DP 初解禁!!
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3555学习下如此高端的DP;//dp[i][j]表示计算到第i位时,状态为j的数的个数//j=0表示之前不含49且前一位不是4,j=1表示之前不含49但前一位是4,j=2表示之前已经包含49//dfs函数:pos为当前所处的位,have记录状态(即dp数组的第二维),doing表
2013-07-31 19:49:44 728
原创 2013腾讯编程马拉松初赛第一场(3月21日) 小明系列故事——师兄帮帮忙 !!快速幂取摸
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4506思路:就是一个大数幂取摸的算法,秒之~#include #include using namespace std;const __int64 modnum=1000000000+7;__int64 n,t,k,x;__int64 re[11000];__int64 fastmod(
2013-07-29 14:09:33 763
原创 2013腾讯编程马拉松初赛第一场(3月21日) 小Q系列故事——电梯里的爱情
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4505水题:#include #include #include #include using namespace std;int hash[105];int main(){ int c; vector vec; cin>>c; while(c--) { int n;
2013-07-29 12:51:22 1451
转载 砝码称重问题求解---动态规划与母函数方法
转自:http://www.cnblogs.com/xudong-bupt/archive/2013/03/17/2964909.html砝码称重问题:设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其质量),求出用他们能称出的质量的种类数(不包括质量为0的情况)。 一、动态规划方法求解 设dp[1000]数组为标记数组。当dp[i]=0时,表示质量为i的
2013-07-28 21:53:46 2147
转载 2013腾讯编程马拉松初赛第〇场(3月20日)HDOJ 4504 威威猫系列故事——篮球梦
转自:http://blog.csdn.net/aclion/article/details/8703623#include #include int A, B, t; int tA, tB, round, dp[30][100]; void init() { memset( dp, 0, sizeof(dp) ); dp[1][1] = dp[1
2013-07-28 20:47:44 899
原创 2013腾讯编程马拉松初赛第〇场(3月20日)湫湫系列故事——植树节 HDOJ 4503
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4503思路:hint from a GOD-COW.将每一个人模拟成图的一个点,两点连线当且仅当两人是朋友,记这样构造的图为G。根据图G的每一个顶点的度数K,可以算出相对于完全图该点还剩下的度数为:n-k-1这样,构造图G的补图G~,题目所求相同关系即可以这样理解:要么三个点构成的三角形全部取自
2013-07-28 16:37:17 883
原创 2013腾讯编程马拉松初赛第〇场(3月20日) 小Q系列故事——屌丝的逆袭
HDOJ 4500 http://acm.hdu.edu.cn/showproblem.php?pid=4500水题一道:#include #include #include #include using namespace std;int data[25][25];struct node{ int num,row,col;} ;bool cmp(node a,node
2013-07-27 21:39:45 921
原创 2013编程之美挑战赛复赛第二轮---招聘
题目2:招聘时间限制: 3000ms内存限制: 256MB描述Alice新开了一家公司,它的下面有两个项目,分别需要N1和N2个人来完成。现在有N个人前来应聘,于是Alice通过面试来决定他们中的哪些人会被录用。Alice在面试中,会仔细考察他们能如何为公司的项目带来收益。她给每个人打了两个分值Q1和Q2,表示他加入第一个和第二项目分别能带来的收益值。同时,她也会仔细考察他们每
2013-07-27 16:26:24 870
原创 hdoj 3549 Flow Problem---最大流---Edmond Karp算法
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3549典型的最大流,注意重边。Edmond Karp算法:反复寻找源点s到汇点t之间的增广路径,若有,找出增广路径上每一段[容量-流量]的最小值delta,若无,则结束。在寻找增广路径时,可以用BFS来找,并且更新残留网络的值(涉及到反向边)。而找到delta后,则使最大流值
2013-07-27 13:27:32 640
原创 hdoj 1863 畅通工程 最小生成树---prime算法
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1863注意有可能出现无法生成树的情况。#include #include using namespace std;const int inf=0xffffff;int weight[105][105],n,m;int prime(){ int sum=0; int pre[105]
2013-07-27 10:26:00 1033
原创 2013华为招聘上机--- 字符串处理转换
问题描述: 在给定字符串中找出单词( “单词”由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词);找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中;如果某个单词重复出现多次,则只输出一次;如果整个输入的字符串中没有找到单词,请输出空串。输出的单词之间使用一个“空格”隔开,最
2013-07-27 09:21:56 2009
原创 hdoj 1233 还是畅通工程---最小生成树---Kruskal算法
#include #include #include #include
2013-07-25 22:08:15 1030
原创 hdoj 1233 还是畅通工程---最小生成树---prime算法
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1233可以用Kruskal来做,不过当图的边比较稠密的时候用prime会更快一些。AC代码:296MS#include #include #include using namespace std;const int inf=0xffffff;int dis[105],sum,n;in
2013-07-25 20:44:15 1033
原创 poj 2728 Desert King(最优比例生成树)
#include #include #include #include #include #include using namespace std;const int maxn=1005;const double eps=1e-6;const double inf=0xffffffff;struct node{ double x,y,h;}no[maxn];int n;
2013-07-25 13:30:38 1011
原创 poj Dropping tests 01分数规划---Dinkelbach算法
果然比二分要快将近一倍。63MS。二分94MS。#include #include #include #include #include #include using namespace std;const int maxn=1005;double a[maxn],b[maxn];const double eps=1e-6;int n,k;struct dnode{
2013-07-23 23:57:33 1244
转载 POJ 2976 Dropping tests 01分数规划
第一次做这类型的题目,纪念一下。题目链接:http://poj.org/problem?id=2976这是入门级别的01分数规划问题,使用的是二分搜索,不过感觉效率还是不高,试着用Dinkelbach算法优化下。#include #include #include #include #include using namespace std;const int maxn=1
2013-07-23 23:06:19 736
原创 2013编程之美挑战赛---无尽的编号
Description在一条公路上,将要依次建造N座建筑。在每个建筑建成之后,都会用一个01串来给它编号。整条公路从起点到终点,所有建筑的编号都严格按照字典序递增的顺序来排列,而每在一个新的地方建起一个建筑时,它的编号会按以下规则确定:1) 编号要比前一个建筑(起点方向)的字典序大,比后一个建筑(终点方向)的字典序小3) 编号一定以1结尾2) 编号要尽可能短,满足该
2013-07-21 19:37:11 1168
原创 2013编程之美挑战赛---集会
Description在一条河的一侧,分布着 N 个村庄。这些村庄平日里需要一些贸易往来,然而商人们来回走遍每一座村庄是非常辛苦的,于是他们决定每个月都在河边举行一次集会,大家都来集会上购买需要的物品。然而在集会地点的选择上,大家却有分歧,因为谁都不愿意集会的地点离自己村庄非常远。经过一番激烈的讨论之后,大家决定要将集会地点挑选在这样一个位置:它离最远的村庄的距离要尽可能的近。我们
2013-07-21 11:30:00 1266 1
原创 poj 1273 Drainage Ditches---maxflow最大流
DescriptionEvery time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time to r
2013-07-20 22:06:42 1041
原创 2013编程之美挑战赛---管道系统
Description你正在参与一项输油管道的项目,此项目的目标是架设一组输油管道系统,使得从源头到目的地输送的石油流量最大。如果直接从源头架设管道到目的地,一旦管道有损坏,将无法输送石油。为了增强管道系统抵抗破坏的能力,你决定设置 N - 2 个中间节点,从而把管道分散开来。源头和目的地可以视为特殊的节点,他们的编号分别为 1 和 N,而其他的中间节点的标号为 2 到 N - 1
2013-07-20 20:59:54 1334
原创 编程之美读书笔记---分层遍历二叉树
层序遍历一颗二叉树。给定一颗二叉树如下:输出结果:12 34 5 67 8给出书上的两种实现:#include #include #include using namespace std;struct node{ int data; node* left; node* right;};void creattree(node* &root){ r
2013-07-20 13:28:57 1011
原创 编程之美读书笔记---单链表反序---要求只遍历一次
扩展问题:编写一个函数,给定一个链表的头指针,要求只遍历一次,将单链表中的元素顺序反序。#include #include #include #include using namespace std;struct node{ int data; node *next;};void reverselist(node* &head){ node *p,*q; p=hea
2013-07-18 14:03:54 1208
原创 编程之美读书笔记---计算字符串的相似度
使用递归实现,但是计算了重复的子问题,所以采用记忆化方法,将子问题的解保存在一个数组里。#include #include #include #include using namespace std;int ans[100][100][100][100];int mmin(int a,int b,int c){ a=a<b?a:b; a=a<c?a:c; return a;
2013-07-17 21:13:29 907
原创 2013编程之美全国挑战赛---相似字符串
总Time Limit: 8000ms Memory Limit: 262144kBDescription对于两个长度相等的字符串,我们定义其距离为对应位置不同的字符数量,同时我们认为距离越近的字符串越相似。例如,“0123”和“0000”的距离为 3,“0123”和“0213”的距离则为 2,所以与“0000”相比,“0213”和“0123”最相似。现在给定两个字符串
2013-07-17 14:33:57 1564
转载 2013编程之美全国挑战赛---竞价
DescriptionAlice和Bob都要向同一个商人购买钻石。商人手中有 N 颗钻石,他会将它们一颗颗地卖给他们,Alice和Bob通过竞价的方式来决定钻石的归属。具体的过程如下:商人首先指定其中一个人开始报价,之后两人轮流报价,要求是一定要比对方报的价格更高。任何时候,如果一个人不愿出价或者出不起价钱时,可以宣布弃权,则对手以最后一次报的价格将钻石买下。当然,如果两人都没钱,商人是不
2013-07-16 14:36:19 1249 1
原创 编程之美---子数组之和的最大值(二维)
避免使用暴力枚举的方法,我们参考一维数组的求法,一维的解答可以再线性时间 内完成,具体可以参考我的编程珠玑读书笔记。我们把问题从二维转坏为一维,现在我们枚举矩阵的上下边界,然后用一维的方法确定左右边界,时间复杂度为O(N^2*M)。#include #include using namespace std;const int maxn=505;int matrix[maxn][ma
2013-07-14 22:23:47 904
原创 编程之美---快速寻找满足条件的两个数---扩展问题
现在有N个取值在1~5000的整数序列,现在我任意给出一个数X,求出在N个数列中和为X的所有组合。比如:N=10个数列:1 2 3 3 9 5 100 50 30 15X=10满足条件的组合:A、2 3 5 B、1 9这是一个典型的 Sub-set-Sum问题,NP-C问题,这里没有高效的解法,暂时只想到了暴力DFS。如果不输出解的话可以考虑动态规划。#inclu
2013-07-14 20:11:58 1530
原创 编程之美 2013 全国挑战赛 资格赛 题目三 树上的三角形
有一个trick的地方:当路劲数大于等于50左右,在题目要求的区间内:1 ≤ len ≤ 1000000000,一定有满足三角形的情况。具体的可以参考斐波那契数列,最坏的情况就是斐波那契的序列。所以大数据要这样过,在cn>=50左右直接返回Yes.#include #include #include #include #include #include using names
2013-07-14 17:01:23 1479
原创 字符串完美度---庞果编程挑战
#include #include #include #include #include #include using namespace std
2013-07-13 18:17:53 1113
原创 NYOJ 128 前缀式计算
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=128简单说下思路:从字符串最右端开始扫描,遇到数字则入栈,遇到运算符则弹出两个元素计算后再入栈,知道最后栈中最后一个元素就是最后表达式的值。字符串的处理比较繁琐。充分利用库函数 。#include #include #include #include #include
2013-07-11 22:02:42 1085
原创 2013编程之美挑战赛---传话游戏
题目链接:http://programming2013.cstnet.cn/qualification/problem/1时间限制: 1000ms 内存限制: 256MB描述Alice和Bob还有其他几位好朋友在一起玩传话游戏。这个游戏是这样进行的:首先,所有游戏者按顺序站成一排,Alice站第一位,Bob站最后一位。然后,Alice想一句话悄悄告诉第二位游戏者
2013-07-11 14:38:04 1326
原创 庞果网在线编程---倒水---扩展欧几里得算法
水题一道:#include #include #include #include using namespace std;int gcd(int a,int b){ if(a<b)return gcd(b,a); if(b==0)return a; return gcd(b,a%b); }bool can(int a,int b,int c) {
2013-07-10 00:11:21 2436 25
原创 NYOJ---括号匹配问题---栈的使用
http://acm.nyist.net/JudgeOnline/problem.php?pid=2这题比较水,不注释了:#include#include#include#include#include #include using namespace std;bool ismatch(char &a,char &b){ if(a=='('&&b==')'||a=='['
2013-07-08 21:42:43 923
原创 南阳理工ACM-OJ 分数加减法 最大公约数的使用
http://acm.nyist.net/JudgeOnline/problem.php?pid=111简单模拟:#include #include #include using namespace std;int gcd(int a,int b){ if(a<b)return gcd(b,a); if(b==0)return a; return gcd(b,a%b);}
2013-07-07 21:39:29 1622
原创 编程之美----高效率地安排见面会----贪心策略
每一个面试是一个整数的闭区间【Bi,Ei】表示开始时间和结束时间,有N个面试要进行,求最少的面试点。思路:按开始时间排序,使用贪心策略,每一个面试使用一个最小的正整数k来表示可行的颜色,当然如果重叠了就必须使用一个新的颜色。c++实现:#include #include #include using namespace std;struct meeting{ int b,e;
2013-07-07 20:37:48 1457
原创 编程之美---中国象棋将帅问题
题目链接:http://www.msra.cn/Articles/ArticleItem.aspx?Guid=4c86d636-04bb-4ad9-b0bc-4c3496d18021#.给出c++实现的简单代码:#include #include using namespace std;const unsigned char fullmark=255; //11111111 con
2013-07-06 21:40:12 1347
原创 庞果英雄会---寻找直方图中面积最大的矩形---编程挑战
题目链接:http://hero.pongo.cn/home/index这里给出一个线性算法和一个平方算法,第一个算法没有问题,挑战成功。第二个算法测试了很多数据但是失败,有大神路过,恳请点拨。#include using namespace std; int g[500],index[500];int max_rect(int x[], int n) { int s = 0,
2013-07-05 15:12:50 1002
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人