- 博客(35)
- 资源 (3)
- 收藏
- 关注
原创 hdu1249(三角形划分区域,直线划分区域,折线划分区域)
题目链接:三角形题目大意:中文题目分析:递推1、一条线段和一条射线都可以将平面分成两个部分2、折线的端点处只能将平面分成一个部分一、首先考虑直线的情况 如上图,一条直线将一个平面分成两个,两个平面分成4个,当加入第三条直线时,与前两条直线产生了两个交点,将第三条直线分成了1条线段和两条射线,将原有的区域一分为二,增加了3个区域。 递
2016-12-30 09:32:52 1417
原创 hdu1252(bfs)
题目链接:Hike on a Graph题目大意,给定一个图,图上有n个点(0 题目分析:裸的bfs,开一个vis[maxn][maxn][maxn]记录三个pieces到达的状态判重代码#include #include #include #include #include using namespace std;const int maxn=60;cha
2016-12-29 08:00:26 618
原创 hdu1255(线段树求面积交)
和Poj1151线段树求面积并的原理相同不同的地方:至少覆盖一次one和至少覆盖两次two的更新 注意点:1、由于没有push_down的操作,当父节点的cover==1,子节点的cover也等于1,则父节点的two要更新 当父节点的over==0,子节点的cove
2016-12-28 13:20:17 331
原创 hdu1247(字典树/map)
题目链接:Hat’s Words题目大意:给定一些单词组成一个字典,判断每个单词是否能由字典中的词组成分析:50000个单词,假设长度为len,如果暴力的话每个单词需要比较len*50000^2次,肯定会超时;如果用字典树,建树O(n*len),查询每个单词只需要O(len)对每个单词,划分为(1,2...i,)和(i+1....len)若恰好能找到则输出#pragma war
2016-12-27 23:53:30 486
原创 hdu1251(map用法/字典树模板)
很无语,字典树超内存过不了,map才嫩过#include #include #include #include #include using namespace std;int main(){ char str[17]; map m; while(gets(str)) { int len = strlen(str);
2016-12-23 19:19:23 313
原创 Poj1151线段树求面积并
简单模拟一下,如图三个矩形,分为将其上下底边由下至上标号为1,2...6,每扫到下底边,该底边所覆盖的范围cover+1,每扫描到下底边,其覆盖的范围cover-1过程如下图这样依次计算,当扫描到第n-1条边的时候就计算出来面积的并其中还是要用到离散化的知识代码#include #include using namespace std;
2016-12-23 19:03:52 298
原创 hdu1226
题目链接:超级密码题目大意:找出最小的一个数,满足由给定的(1)m个数字组成(有些数字可以不用)(2)可以整除一个数n由于最多可以有500位数,每个数字最多有16种情况,单纯暴力肯定会TLE.--》bfs用bool num[16]记录给出的m个数字,一步步遍历由于数字位数大,用大了大数求余int mod(const node &cur){ int tmp=
2016-12-18 15:40:26 461
原创 hdu1222(扩展欧几里得)
题目链接:Wolf and Rabbit题目大意:n个洞逆时针方向,狼每走一步要垮n个洞,即0,n,2n...这样走,循环走,如果总有洞是走不到的输出YES,反之输出NO。分析:假设狼一共走了x步,那么狼所在洞的编号为k=(x*m)%n (1)如果所有的洞都能走到,那么k可以取遍0,1,2,...,n-1(1)式等价于xm-ny=k (2
2016-12-16 16:17:33 597
原创 hdu1216(list运用)
题目链接:Assistance Required一队人,编号为2,3,4,5,.....第一次编号为2的人出队可以去玩了,然后,他后面每数到第2个人都必须去洗碗,即每隔一个人出队,剩下的人为3,5,7,9,.......然后编号为3的人去玩,剩下的后面每数到第2个人都必须去洗碗,剩下的人为5,7,11,13,。。。这样一直处理,可以去玩的人都是lucky的,找出3000个lucky
2016-12-14 15:03:35 340
原创 APUE习题10.6(父子进程同步)
编写一段程序测试图10_24中父子进程的同步函数,要求进程创建一个文件并向文件写一个整数0,然后进程调用fork,接着父子进程交替增加文件中的计数器值,每次计数器值增加1,打印是哪一个进程进行来该增加1操作没有完全按照题目要求做,直接fork之后01234这样打印的先上一个标准输出的实现1、写到标准输出的实现main.c:以下实现是有问题的问题在于:子进
2016-12-14 13:36:51 1735
原创 hdu1211(模的逆元、扩展欧几里得)
eg:解二元不定方程ax+by+c=01)当a=0或b=0时,方程的解确定2)c不是gcd的倍数时,方程无解故只考虑ab!=0且c|gcd(a,b)的情况1、扩展欧几里得算法 找出一对整数(x,y),使得ax+by=gcd(a,b)。 例如,gcd(6,15)=3,6*3-15*1=3,其中x=3,y=-1。 这个方程还有其他解,如x=-2,y=1。
2016-12-13 11:13:06 800
转载 _exit和exit的区别
在Linux的标准库函数中,有一套称作高级I/O的函数,我们熟知的printf 、fopen 、fread 、fwrite都在此列,他们也被称作缓冲I/O。其特征是对应每一个打开的文件,都存在一个缓冲区, 在内存中都有一片缓冲区,每次读文件会多读若干条记录,这样下次读文件时就可以直接从内存的缓存中取出,每次写文件时也仅仅是写入到内存的缓冲区,等待满足一定的条件(达到一定的数量,或者遇到特定字符,如
2016-12-12 10:03:34 207
原创 hdu1207(递推)
一、经典汉诺塔 有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动,设移动次数为F(n) 设F[n]表示将n个盘从按规则从X柱移到Z柱至少需要移动的次数。 当n=1时,F[n]=1; 当n>1时,将移动盘之的过
2016-12-11 11:20:07 1776
转载 SIGINT、SIGQUIT、 SIGTERM、SIGSTOP区别
2) SIGINT程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。3) SIGQUIT和SIGINT类似, 但由QUIT字符(通常是Ctrl-\)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号。15) SIGTERM程序结束(terminat
2016-12-09 21:22:20 49542 1
原创 hdu1204(Markov过程,赌徒输光问题变形)
题目链接:糖果大战回到本题:本题是赌徒问题的变形,增加了平局的情况,设f(i)是从状态i出发到达n+m状态先于到达0状态的概率考虑从i出发后移动一步后的情况,以概率p(1-q)移动到j+1的假设下,到达n+m的概率为f(i+1)同理,以概率q(1-p)移动到j-1的前提下,到达n+m的概率是f(i-1)如果两人是平局,以概率1-p(1-q
2016-12-09 20:04:34 5898 1
原创 hdu1201(水)
题目链接:18岁生日给出出生日期,问到18岁生日有多少天如图,我们要求的实际是黑线的区域,但为了简化计算我实际是按红线区域求得因此在端点出也要判断闰年的情况如果出生当年是闰年,且在2月之前出生,我们就经过了一个闰年,但在计算时没有加进去,因此要加上一天同理在18岁生日当年也要判断#include using namespace std; #include
2016-12-09 18:47:14 689
原创 hdu1198(DFS/并查集)
题目链接:Farm Irrigation如左图所示,有11种管道,问给定一个图,最少要挖几个井才能灌溉到所有的管道如右图,至少需要三个井口两种做法DFS和并查集难点在管道接口的判断:将一个块变成四个点,有管道伸出就是1,否则就为0判断两个块是否在该方向管道是想通的 用&就可以了int pipe[][4]={ {1,0,1,0}, {1
2016-12-09 18:37:49 349
原创 hdu1195(BFS)
题目链接:Open the Lock给定一个四位数,将它变成另外一个四位数只能有一下几种操作1、给一个数字+1或者-1,给9+1变成0,给0-1变成92、将一个数字和其左右的数字交换每个操作是1步,求最少步数bfs,每次出队进行上述所有操作,新节点入队代码:#include #include #include #include using names
2016-12-09 17:17:00 700
原创 hdu1194(水)
题目链接Beat the Spread!给定两个分数a,b的和与差的绝对值(a,b∈N),如果能求出a,b就直接输出,否则输出impossible注意int型计算(a+b)/2和(a-b)/2自动取整因此要判断a,b是否同是奇数或者同是偶数,否则我们也是计算不出来的#include #include using namespace std;int main
2016-12-09 17:11:58 467
原创 hdu1181(DFS)
题目连接:变形课以a开头b结尾的一个单词,可以使A物体变成B物体,问是否能把Ball变成MouseDFS:建图,以a开头b结尾的单词就在ab之间连一条边代码#include #include #include #include using namespace std;const int maxl=1005;char str[maxl];bool g[26
2016-12-09 17:06:24 251
原创 hdu1180(BFS)
题目链接 诡异的楼梯5 5**..T**.*...|...*.*.S....如图所示的地图,|代表楼梯,每分钟移动一次方向,只能顺着楼梯的方向走,每次可以在 . 或S或T处停留,求从S到T的最小步数没有什么难度,在楼梯的地方模拟清楚就行,把方向的各个情况弄清楚记录时间差,判断到达楼梯时的方向,当是|的时候,只能沿着上下方向走,当是—时只能沿着
2016-12-09 17:02:39 757
原创 hdu1178(简单公式)
题目链接:Heritage from father计算#include #include #include #include #include using namespace std;int main(){ //freopen("in.txt","r",stdin); double n; while(scanf("%lf",
2016-12-08 21:45:20 310
原创 hdu1176(DP)
题目链接:免费馅饼接馅饼,最开始在5,每秒只能移动一个单位,每次只能接住当前位置的馅饼状态转移方程dp[pos][t]=max(dp[pos][t-1],max(dp[pos-1][t-1],dp[pos+1][t-1]))+pie[pos][t];dp[pos][t]表示在pos点,第t秒能接到的最多馅饼几个注意:1.pos取1-11,这样可以避免
2016-12-08 21:31:37 230
原创 hdu1175(DFS)
题目链接:连连看就连连看啊,线的转折次数不超过两次DFS,注意剪枝,当转的次数=2,如果不能直线走过,就回溯#include #include #include using namespace std;const int maxn=1005;int g[maxn][maxn];bool vis[maxn][maxn],tag;int n,m,sx,sy,ex
2016-12-08 21:21:26 320
原创 hdu1164(素数筛选)
题目链接:Eddy's research 将一个数分成几个质数的乘积1.素数筛选法void init(){ memset(vis,0,sizeof(vis)); int m=sqrt(maxn+0.5); for(int i=2;i<=m;i++){ for(int j=i*i;j<=maxn;j+=i){ vi
2016-12-08 21:10:28 336
原创 hdu1163
题目链接:Eddy's digital Roots给出一个数n,求n^n的数根,数根即各位数字之和,如66-->6+6=12-->1+2=3,则66的树根是3。纯数学解法:九余数定理:这个数字根等于原数除以9的余数,如66%9=3n^n直接计算可能溢出,(a*b)%c=((a%c)*(b%c))%c#include #include using namespace
2016-12-08 21:07:23 328
原创 hdu1160(最长上升子序列变形)
最长上升子序列变形状态转移方程if(mice[j].w>mice[i].w&&mice[j].s<mice[i].s){ if(dp[i]<dp[j]+1){ dp[i]=dp[j]+1; pre[i]=j; } }代码
2016-12-08 20:58:15 1789
原创 poj 2528(线段树+离散化)
题目链接Mayor's posters如图,贴海报,后面的海报可以贴在前面的海报的上面,按给定的顺序在区间为(l,r)的位置去贴海报,问最后可以在表面看见的海报有多少张给定的区间范围很大,为1 i 静态的话,直接用线段树进行区间更新,需要1000000个叶子节点,还没TLE就已经MLE了但是海报的数目1 例如1 4,2 6,9,12三张海报1
2016-12-06 20:41:15 948 1
原创 hdu1158(dp)
题目链接Employment Planning雇佣工人,每个工人每个月有一定的工资,雇佣和解雇都要花费一定的钱每个月规定了至少要多少工人,求一年最少的花费状态转移方程 dp[i][j]=min(dp[i][j],dp[i-1][k]+trans(k,j)+j*salary);表示第i个月雇佣j个工人需要的最少钱数,trans(k,j)表示从k个人变成j个月的花费
2016-12-05 20:49:24 313
原创 hdu1150 最小点覆盖
题目链接Machine Schedule有A和B两个机器,每个机器有不同工作模式,有很多任务,每个任务可以自在A上以mode_i运行或者是在B上以mode_j运行,每次换mode都要重启机器给出k个任务,要求怎么安排才能让重启次数最少最小点覆盖:最小覆盖要求用最少的点(X集合或Y集合的都行)让每条边都至少和其中一个点关联。可以证明:最少的点(即覆盖数)=
2016-12-05 20:15:17 324
原创 hdu1142(dijastra+记忆化搜索)
题目链接A Walk Through the Forest记忆化搜索介绍 hdu1078如果从B到home的路比任何从home到A的路要短,那么久有一条A从到B的路,计算一个可以由几条路如图dfs(1)⑴ A->2,return 1, p[A]+=1 p[1]+=1 ===>p[A]=1 p
2016-12-05 19:49:27 354
原创 hdu1098(数学归纳法)
题目链接Ignatius's puzzle对f(x)=5*x^13+13*x^5+k*a*x输入一个k,找出最小的a使得对任意x都满足,f(x)%65=0假设f(x)=5*x^13+13*x^5+k*a*x满足上述条件证明f(x+1)也满足所以只要求(18+ka)%65是否为0#include #include using namespace std
2016-12-05 18:58:02 332
原创 hdu1113(map用法)
题目链接Word Amalgamation一个字典中有很多单词,给出一些列单词输入,不考虑且字母的顺序,在字典查到对应的索引aptr可以在字典中对应到part,tarp,trap但最后输出单词的顺序必须按字典序的用mapkey是单词本身,value是sort之后的结果eg: 注意map自动按key进行排序#include #i
2016-12-05 18:30:24 505
原创 hdu1084
题目链接What Is Your Grade?解5道题得100分解4道题,如果你在解四道题的人当中排在前面的一半得95分,否则90分以此类推模拟,注意只有一个人解4,3...道题的情况#include #include #include using namespace std;const int maxn=105;struct node{
2016-12-05 18:19:21 493
数字信号处理理论算法与实现(胡广书).的Matlab代码及参考文献
2015-12-06
设计模式实训教程代码
2014-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人