- 博客(35)
- 资源 (63)
- 收藏
- 关注
原创 UVA11722(见面概率)
题意: 有一个车站,两个人想要在这个车站见面,第一个人会在t1到t2之间的任意一个时刻到(时间上任意一点概率一样),并且停留w时间,第二个人是s2到s2的时间段到,停留也是w,问两个人的见面概率是多少?思路: 这个应该算是个比较经典的问题了吧,感觉在那看到过,我们建立一个直角坐标系,t1#include#include
2014-12-30 17:22:21 663
原创 UVA11636复制粘贴
#includeint main(){ int Cas = 1 ,n; while(~scanf("%d" ,&n) && n >= 0) { printf("Case %d: " ,Cas ++); int now = 1 ,Ans = 0; while(now { Ans ++
2014-12-30 17:21:25 509
原创 UVA11549计算器谜题
题意: 有一个计算机只能保留数字的前n位,你有一个数字k(k思路: 显然这个题目是有循环节的,为什么有循环节?首先我们看下kFloyd判圈#includeint mk[15];void inint(){ mk[0] = 1; for(int i = 1 ;i
2014-12-30 17:20:37 517
原创 UVA11520填充正方形
题意: 给你一个n*n的矩阵,让你往里面添加大写字母,矩阵有的字母已经给填好了,然后要求是每个格子都不能与他相邻的格子的大写字母相同,如果有多个答案,输出从上到下,从左到右所连接的成的那个n*n长度的字符串的ASCII码最小。思路: 大家都知道4色定理吧,四种颜色能把任何地图都画出来,并且相邻的颜色不同,那么这个题目是26种,所以肯定不存在没有解的情况,所以我
2014-12-30 17:18:16 774
原创 UVA11464偶数矩阵
题意: 给你一个n*n的01矩阵,你的你的任务是吧尽量少的0变成1,使得每个元素的上下左右之和均为偶数(如果有的话),比如0 0 0 0 1 01 0 0 ---> 1 0 1 0 0 0 0 1 0是变换了3个。思路: 这个题目拿到手的最暴力的反应就是直接搜索枚举所有,那么时间复杂度是O(2^(
2014-12-30 17:17:30 1070
原创 UVA11462年龄排序
题意: 给你200w个人的年龄,年龄的范围是1-100,然后让你从小到大排序输出所有人的年龄,题目还特意强调输入文件限制25MB,题目内存限制2MB.思路: 比较经典又简单的一个题目了,很早以前就见过了,我们可以开一个数组num[101]的,每来一个年龄a我们就num[a]++,最后输出num[1]个1,num[2]个2...就行了。
2014-12-30 17:15:21 596
原创 UVA11427玩纸牌(全概率+递推)
题意: 一个人玩纸牌游戏,他每天最多玩n局,枚举获胜的概率是a/b,每天玩牌只要获胜概率达到p,那么他今天就不玩了,明天接着玩,如果有一天他的概率没有达到p,(没有达到p的话他今天一定是玩了n次),那么他以后就在也不玩了,问题是在平均的情况下,他能玩多少个晚上的牌?思路: 我们可以先算他只玩一天就失败了的概率,P[i][j]表示玩了i次,赢了j次,当j/
2014-12-30 17:13:56 519
原创 UVA11389巴士司机问题
题意: 有n个巴士司机,然后有2n个活,其中有n个是上午,n个是下午,每个自己都要选择一个上午的和一个下午的,每个活都有驾驶距离,如果一个司机每天的驾驶距离大于d,那么超出的部分就要每个单位距离给加班费r,如果你是巴士司机老板,最少要付给这n个人的加班费是多少?思路: 这个是水题了,白天活最终的晚上给一个最轻巧的活给他,其他的一次类推,这个很容易想到,不解释
2014-12-30 17:11:34 873
原创 UVA11384正整数序列(把123..变成0的最小步数)
题意: 给定一个正整数n,你的任务是最少的操作次数把序列1 2 3 4 5...n中所有的数字都变成0,每次操作可以从序列中选择一个活多个整数,同时减去一个相同的正整数,比如1 2 3可以吧2和3同时减少2,得到1 0 1思路: 我们只考虑操作一次的时候,操作一次是不是最大的效果就是剪掉一半,比如1 2 3 4 5 6 7 变成1 2 3 0 1 2 3
2014-12-30 17:09:38 3121
原创 UVA11992不错的线段树段更新
题意: 给你一个矩阵,最大20*50000的,然后有三个操作1 x1 y1 x2 y2 v 把子矩阵的值全部都加上v2 x1 y1 x2 y2 v 把子矩阵的值全部都变成v2 x1 y1 x2 y2 查询子矩阵的和,最大值,最小值思路: 首先我们观察,矩阵的行最多20行,那么我们就可以把每一行都建一颗线段树,这样就变成了一个一维的线段树
2014-12-30 17:06:44 525
原创 LA3644简单并查集判环
题意: 有n个化合物,每个化合物是两种元素组成,现在要装车,但是一旦车上的化合物中的某几个化合物组成这样一组关系,有n个化合物正好用了n中元素,那么就会爆炸,输入的顺序是装车的顺序,对于每个化合物只要他装上去会爆炸,那么就不能装他(不要考虑成最优什么的,题意的意思是直接模拟),问有多少个化合物不能装车?思路: a个化合物正好由a中元素组成只有一种可能,那就是
2014-12-13 20:17:24 706
原创 LA3027简单带权并查集
题意: 有n个点,一开始大家都是独立的点,然后给出一些关系,a,b表示a是b的父亲节点,距离是abs(a-b)%1000,然后有一些询问,每次询问一个节点a到父亲节点的距离是多少?思路: 可以直接简单带权并查集就能搞定,核心代码是这样,设s_x[i]表示i到自己父亲节点的距离,然后//处理并查集的时候int finds(int x){ if(
2014-12-13 20:16:48 435
原创 LA3135简单多路归并(优先队列)
题意: 有N个任务,每个任务都有自己的时间间隔(就是每t秒请求执行一次)和任务id,这n个任务公用一个cpu,每次我们都执行时间靠前的,如果相同时间内有多个任务,就执行任务id小的,要求模拟出执行的前n个任务都是谁。思路: 这个是不是就是操作系统里的FCFS算法啊!这个要模拟可以用优先队列去做,开一个结构体,有三个变量,一个是id,一个是时间间隔t,另一个是总
2014-12-13 20:16:38 734
原创 UVA11997求前k个和,多路归并问题
题意: 给你一个二维矩阵,n*n的,每次从每一行中拿出来一个,然后加起来组成一个和,一共可以得到n^n个和,要求求出这n^n个和中最小的那n个和。思路: 多路归并问题,先说下多路归并问题,我的理解是有个变量,每个变量都按照自己的变化规律在变化着,每次一旦选用每个变量,那么这个变量就会根据自己的变化规律变化,这种问题我们可以用优先队列来解决,首先我们可以把所有变量
2014-12-13 20:14:44 495
原创 UVA11991第k次出现的v的下标
题意: 给你一个有n个数的数字序列,然后有m组询问,每组询问是问第k次出现的v在序列里的小标是多少?思路: 简单题目,直接开个二维的容器就行了,标记出现次数可以开个数组或者是一维的容器,没啥想法直接写就行了。#include#includeusing namespace std;map >Ans;mapmark;i
2014-12-13 20:13:57 824
原创 UVA11174村民排队问题
题意: 有n个人要排队,给你一些父子关系,要求儿子不能站在自己的父亲前面,问有多少种排队方式?思路: 白书上的题目,首先我们可以把关系建成树,这样我们就有可能得到一个森林(或者是一课树),然后我们再虚拟出来一个点0连接所有森林的根节点,这样是为了保证是一棵树,然后题目就变成了给你一棵树,不改变关系,问这个树有多少种方式,这个还是排列组合问题,对于每一个根节点,
2014-12-07 14:29:22 971
原创 UVA11137(立方数之和)
题意: 给你一个n(思路: 一个地推公式,d[i][j] 表示用不大于i的数字去组合j这个数字有多少种方法,因为nd[i][j] = d[i-1][j] + d[i][j-i*i*i];可以这样理解,d[i-1][j]好说,就是不用当前这个数,d[i][j-i*i*i]表示的是用i,同时for(i = j ;j #include#inc
2014-12-07 14:28:17 969
原创 UVA11134传说中的车(放棋子)
题意: 给你一个n*n的棋盘,让你在棋盘上放n个棋子,要求是所有棋子不能相互攻击(同行或者同列就会攻击),并且每个棋子都有一个限制,那就是必须在给定的矩形r[i]里,输出每个棋子的位置,special Jude。思路: 看完后第一反应就是匈牙利(哎!惭愧啊。)结果想着怎么建图,想了一会呵呵了,果断想别的方法,其实这个题目设计到一个小思想非常好,那就是把整体分
2014-12-07 14:26:37 946
原创 UVA11100旅行(大包装小包,问最少多少个包)
题意: 有n个包裹,每个包裹的大小都给出了,然后小的包裹可以装到大的包裹里,问最少装成多少个包裹,装成最小的包裹后还有一个限制就是让包裹数最多的那个包裹最少,就是说尽量都平均分,比如有6个,最少装成3个,平均就是全是2两个。思路: 一开始没看到要求是平均分,按照出现次数sort一遍之后又用了一个map来插入序列,最后用一个O(n*log(n))的方法成功W
2014-12-07 14:22:03 716
原创 UVA11078开放式学分制(前面-后面的最大值)
题意: 给你一个长度为n的整数序列a0 a1 a2..找出两个整数ai,aj(i思路: 简单题目,想象一下,对于每一个数我们只要用他前面的最大的那个数去减他就能得到把他当成aj后得到的最大值,而那个最大的数就是ai,ai是可以线性更新的,所以这个题目我们也没有必要开数组存,直接在输入的时候更新ai,枚举更新答案就行了,具体看代码。#include
2014-12-07 14:20:12 507
原创 UVA11021麻球繁衍
题意: 有K只麻球,每只生存一天就会死亡,每只麻球在死之前有可能生下一些麻球,生i个麻球的概率是pi,问m天后所有的麻球都死亡的概率是多少?思路: 涉及到全概率公式,因为麻球的各种活动都互不影响,所以现在只考虑一直麻球,我们假设f[i]是第i天全部都死亡的概率,那么f[i] = p0 + p1*f[i-1] + p2*f[i-1]^2 + ...pn-1*
2014-12-07 14:18:29 954
原创 UVA10870递推关系(矩阵乘法)
题意: 给以个递推f(n) = a1 f(n - 1) + a2 f(n - 2) + a3 f(n - 3) + ... + ad f(n - d), for n > d.,给你n,d,a1,a2..ad ,f[1],f[2]..f[d],让你求f[n]%m.思路: 比较基础的矩阵题目,每次都构造一个d*d的矩阵,然后用快速幂求出来它的n-1次幂,然后在求
2014-12-07 14:17:14 639
原创 UVA10341解方程(二分)
题意: 给你一个方程 F[x] = pe^-x + qsin(x) + rcos(x) + stan(x) + tx^2 + u = 0(0思路: 在定义域内,前面5个都是减函数,所以当F[0] >= 0 && F[1] #include#include#define eps 0.0000000001double p
2014-12-07 14:15:53 492
原创 UVA10294项链和手镯(等价类计数问题)
题意: 给你一串珠子(连接成了一个环),共有n个珠子组成,你有t种颜色,现在你来给这个珠子染色,问染成项链有多少种方法?染成手镯有多少种方法?在项链里,经过顺时针旋转后相同的算一个,在手镯里,经过顺时针旋转或者沿着对称轴兑换后一样的算一个。思路: 比较典型的等价类计数问题,我们定义两个变量,a是旋转的总个数,b是翻转的总个数,那么根据Burnside和Pol
2014-12-07 14:13:28 754
原创 UVA11375火柴(递推+大数)
题意: 给你n根火柴,问你能组成多少种数字,比如3根可以组成1或者7,组成的数字中不能有前导0,思路: 我们开一个数组,d[i]记录用i跟火柴可以组成多少种数字,则更新状态是这样的d[i+c[j]] += d[i], c[j]就是组成数字j要用的火柴数,这样跟新相当于是在模拟写数字,但是有一点就是不能以0开头,左后当火柴数大于等于6的时候就可
2014-12-07 14:11:48 780
原创 UVA11889(给出lcm(A,B)=C中的AC求最小的B)
题意: 给出最小公倍数LCM(A,B) = C中的A,C求最小的B.思路: lcm=(a*b)/gcd,把等号两侧同时除以a得到lcm/a=b/gcd左侧是已知的,右侧的gcd是a的因子中的一个,直接枚举a的所有因子找到答案就行了。#include#include#includeusing namespace std;l
2014-12-07 14:06:49 1267
原创 UVA11388GCD LCM
题意: 输入两个整数G,L,找出两个正整数a,b使得gcd(a ,b)=G,lcm(a ,b)=L,如果有多组解,输出最小的a的那组,如果没解,输出-1。思路: 比较简单,如果L%G!=0那么就没解,否则既然要输出最小的a,那么就直接输出G,L就行了,a=G的时候最小,同时b=L的话可以保证最小公倍数是L。#includeint ma
2014-12-07 14:05:49 395
原创 UVA10943简单递推
题意: 给你两个数字n,k,意思是用k个不大于n的数字组合(相加和)为n一共有多少种方法?思路: 比较简单的递推题目,d[i][j]表示用了i个数字的和为j一共有多少种情况,则d[i][j]=d[i][j] + d[i-1][j] (0#include#includeint main (){ int n ,k
2014-12-07 14:05:08 401
原创 UVA10780幂和阶乘
题意: 输入两个整数n,m(1思路: 比较容易想,一开始手残wa了好几次,我们直接求出m和n!的素数因子和个数就行了,假如s1[a]表示的是n!的素数因子a的个数,s2是m的,则Ans=min(Ans ,s1[a]/s2[a]);这个应该不用解释,很好理解吧!#include#includeint Pri[11000] ,p
2014-12-07 14:03:55 444
原创 POJ3422简单费用流
题意: 给一个n*n的矩阵,从左上角走到右下角,的最大收益,可以走k次,每个格子的价值只能取一次,但是可以走多次。思路: 比较简单的一个费用流题目,直接拆点,拆开的点之间连接两条边,一条是流量1费用是这个点的价值,另一条是流量k-1费用是0,然后就是当前这个点连接右下方的点,然后在虚拟出超级远点和汇点限流用的,比较简单,不解释了。#incl
2014-12-07 14:02:55 415
原创 POJ2239简单二分匹配
题意: 一周有7天,每天可以上12节课,现在给你每科课的上课时间,问你一周最多可以上几科课,一科课只要上一节就行了。思路: 简单题目,直接二分就行了,好久没写二分匹配了,练习下手而已。#include#include#define N_node 400#define N_edge 27000typedef stru
2014-12-07 14:01:47 547
原创 POJ1679判断最小生成树的唯一性
题意: 判断最小树是否唯一。思路: 我用了两种方法,主要就是好久没敲了,找个水题练练手,第一种就是先一遍最小生成树,然后枚举最小生成树上的每一条边,然后取消这条边,在跑一遍最小生成树,就这样一直跑最小生成树,如果找到了一颗和之前的那个一样的,那么就是不唯一,第二种方法也是先最小树,然后枚举,在枚举的时候不是继续重新跑,而是断开当前边,把树分成两个集合,然后在枚举这连个集
2014-12-07 14:00:52 559
原创 POJ1258简单最小生成树
#include#include#define N (100 + 10)using namespace std;typedef struct{ int x ,y ,c;}NODE;NODE node[N*N];int map[N][N];int mer[N];int finds(int x){
2014-12-07 13:59:14 453
原创 hdu5108枚举因子求最小的m
题意: 给一个n(思路: 先用sqrt(n)的时间把所有的因子都求出来,然后在排序,枚举,就行了,这个题目这么做的话,要是仔细算一下时间复杂度估计会跪,但是题目说大数据不多,这种说法的前提下一般临街的时间复杂度都要试一试,还有就是在判断素数和枚举的时候写的别太挫,不然很可能会超时。#include#include#include
2014-12-07 13:58:22 665
原创 hdu3415单调队列
题意: 给你一个数字组成的环,要求在里面找到一个最大的子序列,使得和最大,要求:(1)子序列长度不能超过k(2)如果子序列和相同要起点最小的(3)如果起点相同要长度最小的思路: 首先环我们可以把序列放大一倍,然后Ans = maxx(sum[j] - sum[i]); 其中j>i,j-i>=k,sum[i]是前缀和,对于每一个j我们只要找到前面
2014-12-07 13:57:32 464
内存清理工具(加速球)
2016-12-09
屏幕像素点获取并设置鼠标位置为制定像素(源码)
2016-12-07
程序速度齿轮
2016-11-20
服务提权工具
2016-11-20
重新封装了下node-mongo服务.zip
2019-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人