刷题代码
文章平均质量分 65
IceFire
这个作者很懒,什么都没留下…
展开
-
寻找最大数
寻找最大数时间限制:1000 ms | 内存限制:65535 KB难度:2描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,比如当n=92081346718538,m=10时,则新的最大数是9888 输入第一行输入一个正整数T,表示有T组测试数据每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,原创 2014-03-21 22:47:16 · 440 阅读 · 0 评论 -
TC 598 500pt
dfs题目,但是一时间没有反应过来。囧=、=#include#include#include#includeusing namespace std;class ColorfulRoad{public: int map[20][20]; int len; int min; int dfs(string road,int pos,int sum) { int i原创 2013-11-02 10:03:16 · 835 阅读 · 0 评论 -
cf 208 div2 C
题意就是把数扔进 queue,stack,deck里面,然后取出3个,使取出的值最大。分析:找出输入中的3个最大的数,a,b,c , 然后最后一个最大数之前的所有非最大数扔进stack里面,第一个最大数扔进queue里面,第二个扔进Front,其余的扔进Back。#include#include#includeint num[100010];int cop[100010];原创 2013-11-01 13:07:54 · 786 阅读 · 0 评论 -
hdu 2200
题解:思路很简单 (i-1)*C(i,n),但是,不知道为什么,只有用double 类型 才能AC……#includeint main(){ double a,n,b; double sum; double r,z,c; int i,j; while(~scanf("%lf",&n)) { sum=0; f原创 2013-10-31 16:26:22 · 622 阅读 · 0 评论 -
hdu 2122
题意:DFS数,从1~2147483647,寻找数据,那些是由该数的每一位数字的阶乘组成,比如145=1!+4!+5!.首先看数字范围很大的,所以要缩小,9!=362880,若一个数是9位数,既是全为9.其阶乘之和仅仅为3265920.所以,长度为9位或者10位数的肯定不行。那么来看长度为8位数的,如果所有数都为9.则为2903040,7*9!=2540160,所以最大的数肯定不会超过 3原创 2013-10-31 15:52:20 · 608 阅读 · 0 评论 -
数组排序
给定一个包含1-n的数列,我们通过交换任意两个元素给数列重新排序。求最少需要多少次交换,能把数组排成按1-n递增的顺序,其中,数组长度不超过100。例如:原数组是3,2,1, 我们只需要交换1和3就行了,交换次数为1,所以输出1。原数组是2,3,1,我们需要交换2和1,变成1,3,2,再交换3和2,变为1,2,3,总共需要的交换次数为2,所以输出2。mark:忘记判断ret原创 2013-10-23 19:30:30 · 543 阅读 · 0 评论 -
hdu 1054 树形dp
/* 【题意】 给定一棵树,标记一节点,则与该节点所连的边都被标记,问最少需要标记多少个节点使得所有边都被标记; 或者说给定一个树型城堡,在交叉路口放一个士兵,则与该路口相连的路都被守住, 问最少需要派遣多少个士兵来守住这个城堡 dp[father].yes= ( min(dp[child].yes,dp[child].no) 之和) d原创 2013-10-23 17:38:05 · 534 阅读 · 0 评论 -
素数判断算法 - 拉宾-米勒测试定理(c++实现)
在1000如此小的素数判断,在不考虑效率的情况下可以利用素数的定义来判断printf("2 ");//2是唯一一个偶素数 for( int a = 3; a <= 1000; a+=2) //步进为2, 因为只有奇数才有可能是素数(已排除了2) { bool bDivision = false; i原创 2013-10-22 20:41:41 · 1343 阅读 · 0 评论 -
hdu 2197
分析了一下,大概就是{i1,i2...im}是n的所有因数,可知非本源串的个数是2^n - sum{f[i1],f[i2]...f[im]}。其中f[i]代表长度为i的非本源串个数。为避免重复计算,首先要进行打表。。。#include#includeint dp[2][10010];int n;int pow(int a,int b){ int r = 1;原创 2013-10-21 21:14:18 · 626 阅读 · 0 评论 -
hdu 2203
判断亲和串问题#include#includechar s1[100010];char s2[100010];int main(){ int len1,len2,i,j,k,flag; while(gets(s1)) { flag = 1; gets(s2); len1 = strlen(s1)原创 2013-10-21 23:18:13 · 514 阅读 · 0 评论 -
hdu 2143
原来 此处的'/'并不是整除,而是可以 3/2=1.5的 =。=纠结 ……#includelong long arr[6][3];int main(){ long long a,b,c,i,j,flag; while(~scanf("%I64d%I64d%I64d",&a,&b,&c)) { flag=0; arr[0][原创 2013-10-21 19:39:10 · 646 阅读 · 0 评论 -
hdu 1691
给跪了,这道题花了一天多的时间,模拟题嘛,并不难,模拟中国象棋,但是考虑不好各种情况,就容易wa了……测试了好长时间,慢慢找到的错误。哎。做事要细心认真啊!!!注意:帅、士、像的初始位置以及所要到达的位置。将和帅不能对面。兵过河之后走向可变。马、像的走位。下面是AC代码:#include#include#includeint x[2],y[2];原创 2013-10-25 19:34:13 · 555 阅读 · 0 评论 -
hdu 2199
二分,但是需要卡精度,1e-8.一般此类题目精度需要控制在1e-8~1e-12之间。#include#include#includeconst double d=1e-8;double fun(double x){ return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6;}double search(double target){原创 2013-10-24 11:36:01 · 483 阅读 · 0 评论 -
Sudoku Checker
https://code.google.com/codejam/contest/2929486/dashboard#include#includeint arr[40][40];int key[40];int main(){ FILE *file; int T,N,i,ncase=1,j,flag,x,y; freopen("C:\\Users原创 2013-10-13 11:24:54 · 539 阅读 · 0 评论 -
hdu 1006 时针/分针/秒针
参考的别人的,因为我一直以为是按照秒针1s的方式移动,所以总是有点误差。。。原来秒针是连续运动的 =、=秒钟的速度s=6°/s,分针是1/10°/s,时针是1/120°/s 所以相对速度s_m=59/10°/s,s_h=719/120°/s,m_h=120/11°/s 所以相差一度所需要的时间sm=10/59 s/°,sh=120/719 s/°,mh=120/11 s/°原创 2013-09-23 20:04:26 · 757 阅读 · 0 评论 -
hdu 1010
纪念一下这苦逼的一晚上吧,就为了这个题目,其实这个题目不是很难,就是用个奇偶剪枝+DFS.所谓奇偶剪枝,其实道理挺简单的,比如:S . X . X. X . X .X . X . X若起始位置为S,若移动步数为偶数,那么图中X则为S可到达的地方。反之,易得。调试了一晚上,发现一句话写错了 visit[x][y]==1; !!!!!应该是visit[x][y]=1;原创 2013-09-11 23:15:23 · 403 阅读 · 0 评论 -
TC 596 250pt
#include#include#includeusing namespace std;class FoxAndSightseeing{public: int abs(int a) { return a>0?a:-a; } int getMin(vector position) { int size,i,j,min,sum,t; size=position原创 2013-11-02 10:01:41 · 632 阅读 · 0 评论 -
hdu dp46题
【原创】转载请说明出处!动态规划:利用问题的最优性原理,以自底向上的方式,从子问题的最优解,逐步构造出整个问题的最优解。 1.HDOJ 1864 最大报销额 0 1 背包,范围内的最大值 i从0到最后递推,每次d原创 2013-11-03 23:10:16 · 660 阅读 · 0 评论 -
coderforces 218 DIV2
B题。先求出最大公约数,然后用a,b除以最大公约数,看他们的商是否为2、3、5组成。#include#include#includeint gcd(int a,int b){ return a%b==0?b:gcd(b,a%b);}int main(){ int a,b,ans,i,j,val,flag; while(~scanf("%d%d",原创 2013-12-09 10:21:30 · 731 阅读 · 0 评论 -
poj 3481 AVL 平衡二叉树
平衡二叉树的简单应用:#include #include typedef struct node{ int k, p; struct node *next, *prior;}AVL;AVL *head, *last;AVL *creat(){ AVL *s; s = (AVL *)malloc(sizeof(AVL)); s->next原创 2014-03-08 23:43:09 · 1149 阅读 · 0 评论 -
二叉堆 hdu 4006
C# include # include # include # define INF 1000000int heap[1000010];int arr[1000010];int k,n;int cmp(const void *a,const void *b){return *(int *)a - *(int *)b;}void update(int val){ i原创 2014-03-03 23:04:17 · 643 阅读 · 0 评论 -
hdu 1301
依旧是Prim最小生成树的题目。直接下手写。# include # include # include # define INF 10000000int n;int graph[30][30];char c,ch;int visit[30];int dis[30];void Init(){ int i,j; for(i = 1;i <= 26;i原创 2014-02-15 19:33:05 · 446 阅读 · 0 评论 -
python中的set()
今天晚上在用python做题的时候,用到了set(),这是一个无序不重复集合。比如 a = [2,2,3,2,3,4]print(set(a))那么,他的结果就是[2,3]集合支持多种操作,比如求交集,差集等等。题目链接:http://codeforces.com/contest/390/problem/An = int(input())a = set()b原创 2014-02-14 21:32:45 · 530 阅读 · 0 评论 -
hdu 1102 (最小生成树)
此题也是最小生成树,是Prim算法的直接套用,只需要处理一下,对于村庄中已经修好的路,将两村中间的距离设为0即可。然后直接用Prim算法。# include # include # include # define INF 10000000int N,Q;int graph[105][105];int visit[105],dis[105];void Init()原创 2014-02-14 15:12:17 · 414 阅读 · 0 评论 -
hdu 1233 最小生成树Prim算法
这题是最小生成树的一题目,以前没写过最小生成树,所以在这道题的基础上学习一下最小生成树。这道题中用的到时Prim算法,用的邻接矩阵,所以复杂度是O(V*V)Prim算法的基本思想是:1.清空生成树,任取一个顶点加入生成树2.在那些一个端点在生成树里,另一个端点不在生成树里的边中,选取一条权最小的边,将它和另一个端点加进生成树3.重复步骤2,直到所有的顶点都进入了生成树为止,原创 2014-02-14 14:39:19 · 537 阅读 · 0 评论 -
并查集题目
在计算机科学中,并查集是一种树型的数据结构,其保持着用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(union-find algorithm)定义了两个操作用于此数据结构:Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。Union:将两个子集合并成同一个集合。并查集的三种基本操作:①、初始化操作void原创 2014-02-03 15:58:59 · 487 阅读 · 0 评论 -
HASH函数类题目
hdu 1264这个用不到神马hash,直接暴力就OK了,不过要注意输入的顶点问题,处理一下矩形对角线的顶点。# include # include # include int visit[110][110];int main(){ int a,b,c,d,i,j,sum; int temp; for(i = 0;i < 110;i ++)原创 2014-01-16 19:38:32 · 766 阅读 · 0 评论 -
D. Volcanoes
这道题的思想是 将其线段化,根据相邻线段的区间进行取舍,再就是用到two pointer算法。还没写出来,以后再写,太麻烦了。日后调试之。http://codeforces.com/contest/384/problem/D# include # include # include typedef struct node{ int x,y;}node;typede原创 2014-01-28 16:00:16 · 630 阅读 · 0 评论 -
kmp poj 3461
这是一道KMP的水题,还没明白KMP是怎么回事 ==,先贴了代码,明天继续研究。#include #include const int MaxN = 1000010;char word[MaxN/10], txt[MaxN];int next[MaxN/10];void KMP_next(char b[], int pre[]){ int n = (int)st原创 2013-12-23 23:07:31 · 621 阅读 · 1 评论 -
丑数(humble number) hdu 1058 DP
A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ... shows the first 20 humble numbers.原创 2013-12-28 23:47:48 · 635 阅读 · 0 评论 -
LZW编码
自己写的一个简易的LZW编码,没认真写,只是能编码由(a~z)26个字母组成的字符串,其实扩展的话,原理是一样的。输入一个字符串,程序输出码字,以及译码。LZW编码后发送的数据包含初始字典 。比如:ababcbabccc译码为:1 2 4 3 5 2 3 10ababcbabccc初始字典为:1 2 3根据初始字典和译码即可压缩和解压……实际上,如果扩展之后原创 2013-12-13 21:04:36 · 1430 阅读 · 2 评论 -
线段树专辑
代码风格:maxn是题目给的最大区间,而节点数要开4倍,确切的来说节点数要开大于maxn的最小2x的两倍lson和rson分辨表示结点的左儿子和右儿子,由于每次传参数的时候都固定是这几个变量,所以可以用预定于比较方便的表示以前的写法是另外开两个个数组记录每个结点所表示的区间,其实这个区间不必保存,一边算一边传下去就行,只需要写函数的时候多两个参数,结合lson和rson的预定义可以很方原创 2013-12-02 19:01:36 · 525 阅读 · 0 评论 -
Huffman树
演示网站:http://huffman.ooz.ie/class MinPri: def __init__(self): self.heaplist = [] def Dequeue(self): minObj = self.heaplist[0] idxMin = 0 for i in sel原创 2013-12-10 23:52:17 · 555 阅读 · 0 评论 -
树状数组
树状数组,又称二进制索引树,英文名Binary Indexed Tree。一、树状数组的用途主要用来求解数列的前缀和,a[0]+a[1]+...+a[n]。由此引申出三类比较常见问题:1、单点更新,区间求值。(HDU1166)2、区间更新,单点求值。(HDU1556)3、求逆序对。(HDU2838) 二、树状数组的表示1、公式表示设A[]为一个已知的数列。C原创 2013-12-10 20:45:41 · 640 阅读 · 0 评论 -
Bullseye
ProblemMaria has been hired by the Ghastly Chemicals Junkies (GCJ) company to help them manufacture bullseyes. A bullseye consists of a number of concentric rings (rings that are centered at the原创 2013-09-10 14:52:30 · 813 阅读 · 0 评论 -
从数组中取出n个元素的所有组合(递归实现)
如数组为{1, 2, 3, 4, 5, 6},那么从它中取出3个元素的组合有哪些,取出4个元素的组合呢?比如取3个元素的组合,我们的思维是:取1、2,然后再分别取3,4,5,6;取1、3,然后再分别取4,5,6;......取2、3,然后再分别取4,5,5;......这样按顺序来,就可以保证完全没有重复。#include#include//arr为原原创 2013-09-03 11:41:52 · 926 阅读 · 0 评论 -
死锁
Description在操作系统中存在着死锁问题。进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了死锁。例如,如果线程A占用了资源1并等待原创 2013-08-29 17:25:56 · 368 阅读 · 0 评论 -
Guessing Game
DescriptionStan and Ollie are playing a guessing game. Stan thinks of a number between 1 and 10 and Ollie guesses what the number might be. After each guess, Stan indicates whether Ollie's guess is原创 2013-08-14 13:40:11 · 531 阅读 · 0 评论 -
谁是中间的那个
Description一天,农夫乔伊像往常一样来到了他的牧场,他突然对他的奶牛产奶量产生了兴趣。他想知道产奶量处于中间的那头奶牛的产奶量是多少,处于中间的意思是说,其中有一半牛的产奶量比它多,另一半牛的产奶量比它少。这个问题现在交由你来写程序完成!Input有多组测试数据,第一行一个正整数T(1Output输出产奶量处于中间的牛的产奶量。Sample Input15 1 2 4 5 3Sample原创 2013-08-14 13:37:50 · 1126 阅读 · 0 评论 -
ACM - Ancient China Mathematics
DescriptionIt is really amazing that the great historian Dr.K has recently found that about 10 Million years ago, in the area where is now called China, lived an ancient people. They may be consider原创 2013-08-14 13:30:48 · 450 阅读 · 0 评论