
杂
文章平均质量分 61
dumeichen
这个作者很懒,什么都没留下…
展开
-
poj 1635 由搜索序列判断树是否同构
题意:给定两个搜索序列,原创 2014-08-15 19:47:51 · 520 阅读 · 0 评论 -
poj 2785 二分暴力
题意:给定四组数,每组数数量相同,最多4000个。问从四组数中各挑出一个之和为0的挑法有多少。思路:直接枚举是N^4。这种题的做法一般是通过二分。将前两组之和 和 后两组之和分别枚举打表,排序。然后在后两个数之和里二分查找前两个数之和的相反数。复杂度是2*n^2+n^2*logn+n^2*log(n^2) = O(n^2*logn)。记得还有一题是给定一个多项式的系数,有5个未知数,问解的原创 2015-09-13 11:04:53 · 347 阅读 · 0 评论 -
poj 3273/1064/2456 二分答案(Monthly Expense)
题意:给出农夫在n天中每天的花费,要求把这n天分作m组,每组的天数必然是连续的,要求分得各组的花费之和应该尽可能地小,最后输出各组花费之和中的最大值原创 2014-10-26 20:31:27 · 539 阅读 · 0 评论 -
poj 1650/3039 追赶法枚举
题意:给定一个浮点数x和一个范围,在这个范围内选两个整数作为分子以及分母,使它们的商最接近x。解题方法:所谓追赶法枚举。初始两个整数i、j都为1,每次求i/j,如果i/j > x,则j增加1,否则i增加1,每次记录下差值最小时a,b的值。#include #include #include #define N 100000int main(){ double s,ee =原创 2015-01-28 22:21:07 · 610 阅读 · 0 评论 -
poj 2602 大数相加(字符串输出)
题意:赤裸裸大数相加。思路:一开始以为是水题,结果提交发现居然是TLE。查看discuss才知道,最后应该用字符串输出,一位一位的int输出就会TLE。代码保留着一开始int的做法,只不过最后用字符串输出。#include #include #include #include #include #include using namespace std;#define clc(原创 2015-08-20 19:39:52 · 471 阅读 · 0 评论 -
poj 2010/2110 二分应用(最少补助最大得分/二分+dfs)
题意:奶牛学校招生,n头奶牛报名,要选m头(m为奇数),学校是义务制,所以每头奶牛的学费都由学校负责。每头奶牛都有自己的考试分数和它需要花的学费,学校总共有sum的资金,问合法招生方案中中位数(即排名第(m+1)/2)最高的是多少。思路:(http://www.cnblogs.com/Thispoet/archive/2011/11/28/2266853.html)二分答案,但是这里的判断不同原创 2015-09-21 11:18:30 · 743 阅读 · 0 评论 -
poj 3274 自定义排序
题意:n头牛站一排,每个牛有k个属性,每个属性有两种取值:1或0。(1表示拥有该属性,0表示没有),用位来保存属性,属性≤30个。要求找一个牛的最长连续队伍(子段),这个队伍中拥有每个属性的牛的个数相同。思路:看数据量n^2肯定不行,想不出来,看了眼官方的解法大致明白。Consider the partial sum sequence of each of the k features b原创 2015-09-03 22:13:31 · 273 阅读 · 0 评论 -
poj 1047 模拟(含大数乘法)循环数
题意:给定一个不超过60位的数,判断它是否是可循环的。如果输入字符串num的长为n,则判断num*1,num*2,num*3...num*n,如果每次乘法得到的结果都是num的一个循环,则num为循环数。如:142857 *1 = 142857142857 *2 = 285714 142857 *3 = 428571 142857 *4 = 571428 142857 *5 =原创 2015-08-18 09:09:24 · 378 阅读 · 0 评论 -
poj 2366/1840 二分查找(取数求和为10000)
题意:给定两组数,求能不能从每组中找出一个数使其和为10000原创 2014-07-10 16:52:41 · 454 阅读 · 0 评论 -
poj 3364 水题
题意:给定一个n*m大小的黑白相间的棋盘(第三个参数表示右下角是黑色还是白色),问一个8*8的同样黑白相间的模板(右下角必为白色)有多少个匹配位置可以放置(匹配的意思就是黑配黑,白配白)。思路:模板的右下角只有k = (n-7)*(m-7)的位置可能放置,而且如果k为偶数,无论棋盘右下角是黑是白可以放置的位置相同,如果k是奇数,则白比黑多1。#include #include #inc原创 2015-07-31 19:51:47 · 443 阅读 · 0 评论 -
poj 3365 数学分类(最大的圆柱体积)
题意:给一个w*h(w思路:首先考虑圆的直径不为w。那么需要分别考虑拿下半个矩形的w还是h作为高。其中一个需要求导来算。然后考虑底圆的直径就是w,此时只能以w作为高,且需要满足h-w>PI*w.#include #include #include #include #include #include using namespace std;#define INF 0x3f原创 2015-07-31 21:02:39 · 468 阅读 · 0 评论 -
poj 3349 hash(相同雪花)
题意:一个雪花由6个[0,10000000]之间的数字来描述。两个雪花相同当且仅当他们对应的6个数字按顺序相等(这个顺序可以是顺时针的也可以是逆时针的)。给定n(n思路:直接暴力n^2会超时。我的做法是将每个雪花的6个数字加起来作为hash值,然后排序,对于hash值相同的再进行暴力判断。#include #include #include #include #include #原创 2015-08-26 11:12:37 · 474 阅读 · 0 评论 -
poj 2506 递推+大数
题意:用2*1或者2*2的砖铺2*n有多少种铺法。思路:容易知道递推式为f[n] = 2*f[n-2]+f[n-1]。用数组表示即可。#include #include #include #include #include #include using namespace std;#define clc(s,t) memset(s,t,sizeof(s))#define I原创 2015-08-24 22:38:20 · 508 阅读 · 0 评论 -
poj 2509 简单模拟(烟屁换烟)
题意:Peter一开始有n颗烟,已知没抽完m颗可以再得到一颗烟,问他最多能抽多少颗烟。思路:每轮对于所有烟屁,先换最多的烟抽完,得到新的烟屁数量。#include #include long long n,m;int main(){ while(scanf("%lld %lld",&n,&m)!=EOF) { long long res = n;原创 2015-03-06 21:57:36 · 480 阅读 · 0 评论 -
2015微软编程之美挑战赛初赛第1场
#include #include #include using namespace std;#define N 1005int n,c,T;int s[N];int first[N<<1],top,used[N],link[N];struct edge{ int y,next;}e[N*N/2];int isprime(int x){ int i; if原创 2015-04-25 14:41:23 · 558 阅读 · 0 评论 -
编程之美2015资格赛
编程之美2015资格赛1:判断闰年:#include #include using namespace std;int T,c;char month[13][15] = {" ","January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "Novem原创 2015-04-17 10:30:17 · 359 阅读 · 0 评论 -
poj 3318 随机(矩阵相乘判断)
题意:给定三个n*n矩阵(n思路:题目明示直接判断n^3会超时。所以应该用随机,每次随机挑选一行和一列,求和之后判断和C数组对应的值是否相同。一开始随机次数设定为n一直wa,后来改成40000就能A了(因为是随机,所以是否AC也是看人品的)#include #include #include #include #include #include using namespace原创 2015-09-13 12:15:53 · 480 阅读 · 0 评论 -
poj 1944 模拟(一圈牛要交谈)
题意:给定n个点(1-n),围成一个圈。然后给出p对点对,表示这两个点要进行交谈。交谈的方式是使得这两个点之间连通,但是只能在相邻的两个点之间连线。问完成任务,最少需要多少条线。比如1和n-1要交谈,那么在1和n之间以及n和n-1之间连线即可。思路:暴力枚举+优化。首先容易确定的一点是肯定不需要围成一个圈,因为最坏情况连接n-1条边就可以使得所有牛之间都能够交谈。那么接下来的思路就是枚举这个断原创 2015-10-04 11:25:01 · 567 阅读 · 0 评论 -
poj 2545(2591、1338) 索引枚举
题意:给定三个数a、b、c,构造一个序列,这个序列的元素的质因数只能是a或b或c,求这个序列的第n个数。另外两道题的思路几乎相同:1338:因子只能是2、3或5;2591:如果x在序列里,那么2x+1和3x+1一定在。思路:通过下标进行枚举。2545代码:#include #include #include using namespace std;#define clr原创 2015-11-04 23:05:29 · 324 阅读 · 0 评论 -
indeed秋招笔试第一场
做了indeed秋招的第一场笔试,题目相比别家确实简单。其中前三道完全是水题,记录一下~第一题:Tabereru题意:给定一个字符串,遇到"ra"需要删除,但是删除之后如果又出现了"ra"那么不继续删除了。即如果输入是rrraaa,那么输出是rraa。思路:字符串很短,随便搞就OK。第二题:Matrix Product题意:就是裸的矩阵乘法,复杂度不需要任何优化,O(n原创 2016-10-16 12:00:55 · 1500 阅读 · 2 评论 -
几个有趣的问题
1、考虑一个双人游戏。游戏在一个圆桌上进行。每个游戏者都有足够多的硬币。他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。谁没有地方放置新的硬币,谁就输了。游戏的先行者还是后行者有必胜策略?这种策略是什么?答案:先行者在桌子中心放置一枚硬币,以后的硬币总是放在与后行者刚才放的地方相对称的位置。这样,只要后转载 2016-02-12 11:30:21 · 1098 阅读 · 1 评论 -
A Practical Guide to Quantitative Finance Interviews
Brain Teasers问题:海盗分金问题。(大于等于一半算作通过版本)老虎和羊问题。100只老虎一只羊,只能一只老虎吃一只羊,吃完羊就变成老虎了,问羊会不会被吃。过河问题。4个人过河,只有一个手电,过河必须用手电。最多两个人同时过河,速度以慢的为准。四个人的过河速度分别为1,2,5,10。为最少的过河时间。生日问题。A的生日只可能出现在如下9个选项中:3月4,5或8;6月4或7;9月1或原创 2016-10-11 23:42:20 · 12871 阅读 · 1 评论 -
2017微软秋季校园招聘在线编程笔试
2017微软秋季校园招聘在线编程笔试前三题题解原创 2016-10-11 10:41:43 · 1490 阅读 · 0 评论 -
Round C APAC Test 2016
Round C APAC Test 2016Problem A. gRanksProblem B. gFilesProblem C. gGamesProblem D. gMatrix原创 2016-07-08 20:45:55 · 854 阅读 · 0 评论 -
Round B APAC Test 2016
Problem AThere are N cities in Chelsea's state (numbered starting from 1, which is Chelsea's city), and M bidirectional roads directly connect them. (A pair of cities may even be directly connected原创 2016-06-30 23:18:55 · 1692 阅读 · 0 评论 -
Round A APAC Test 2017
题目链接:https://code.google.com/codejam/contest/11274486/dashboard结果真是遗憾,排名比200多一点点。败在了对规则的不了解上,当然实力还是渣。唉毕竟第一次比赛,才发现居然tmd和练习赛是不一样的。分数最高的第四题大数据,我下载下来开始运行然后喝了个水去了个厕所,回来就显示超时了,最重要的是发现不能再次下载(小数据就算incorrect原创 2016-07-10 23:33:49 · 2559 阅读 · 3 评论 -
poj 3125 list模拟
题意:给出一串打印的优先级,如果打印i点但是后面有比他优先级高的,那么就将i点放到最后。如果后面没有比当前点优先级高的,则打印。已知打印耗时1,移动是瞬间完成。思路:使用stl 的list,直接按照题意进行模拟。flag[i]存放的是优先级比i大的元素的个数。#include #include using namespace std;int T,n,m,p;int flag[10]原创 2016-06-09 11:26:32 · 448 阅读 · 0 评论 -
poj 2420/1379 随机/模拟退火(求费马点/最偏离点)
题意:给出平面中一些点,求平面中的一个点,使得这个点到其他所有点的距离之和最短(这个点叫作费马点),并输出这个距离和。思路:先随机取个点,再取一个步长,朝4个方向走。如果新位置到各点距离比原来小,就走过去;直到当前位置比四周都好,此时缩小步长。如此迭代,直到步长小于题目的精度(这道题是0.1)输出即可。实际上缩小步长蕴含了模拟退火的思想。不过模拟退火中还可以按照一定概率留在原地(即使移动可以获原创 2015-04-05 01:20:57 · 971 阅读 · 0 评论 -
poj 2304/3032 水题(时钟转动/扑克排序)
题意:水题,不过要注意看图,转的是表盘不是表针,刚好相反,模拟题#include #include #include #include using namespace std;#define clr(s,t) memset(s,t,sizeof(s))#define N 3005int a,b,c,d;int main(){ while(scanf("%d %d %d %d原创 2015-11-17 23:24:10 · 406 阅读 · 0 评论 -
poj 2291/3637 水题排序
poj 2291题意:给你几根绳子,每根最大承重能力都不同,从中选出几根,问最大承重力量是多少?称重是选出绳子的最小值*根数(比如有1,10,15承重的3跟绳子,如果用一根的话,选15的,能承重15,用2根的话,用10和15的,能承重10*2=20,3根的话显然只能是1*3=3了,承重最大的当然是20。poj3637题意:一堆物品的价格给出,已知一次买≥3个东西,最便宜的免费。问怎么买这些东西原创 2015-11-17 23:33:11 · 409 阅读 · 0 评论 -
poj 3748 水题位操作
Description假设你工作在一个32位的机器上,你需要将某一个外设寄存器的第X位设置成0(最低位为第0位,最高位为第31位),将第Y位开始的连续三位设置成110(从高位到低位的顺序),而其他位保持不变。对给定的寄存器值R,及X,Y,编程计算更改后的寄存器值R。Input仅一行,包括R,X,Y,以逗号","分隔,R为16进制表示的32位整数,X,Y在0-31之间且Y>=3,原创 2015-10-28 23:24:35 · 442 阅读 · 0 评论 -
poj 2018 斜率优化(最大平均值问题)
题意:给出一个序列,长度为n(n思路:就这道题来说采用斜率优化和dp没什么关系了,主要就是数形结合,相当于斜率对于枚举的优化。参考了周源的论文,文章讲述的非常清晰。首先i~j区间的平均值转换为sum(j)-sum(i-1)/j-(i-1),即转换为两点的斜率,于是问题转化为:平面上已知N+1个点,Pi(i, Si),0≤i≤N,求横向距离大于等于F的任意两点连线的最大斜率。接下来规定枚举方原创 2015-10-08 20:06:39 · 934 阅读 · 0 评论 -
poj 3276 翻转牛的朝向
题意:n头牛站成一条线,有朝前有朝后的的。每次可以且只能将连续k个牛全部转向,问能够使得所有牛全部面朝前方的最大的k。确定k后,求出最小的翻转次数。思路:首先可以肯定,一旦确定k,翻转次数是确定的,从左到右扫一遍即可。接下来想k怎么确定,没什么好办法只能从大到小枚举(不满足单调性,不能用二分)。下面再考虑怎么扫,如果直接暴力,复杂度是Σk(n-k)(k从1到n),经过计算这是n^3的,不可接受原创 2015-10-21 23:55:32 · 475 阅读 · 0 评论 -
2015微软编程之美挑战赛初赛第2场
2015微软编程之美挑战赛初赛第2场原创 2015-04-26 14:42:34 · 1157 阅读 · 3 评论 -
poj 2505 博弈(乘以[2,9])
题意:给定一个数k,A和B两个人来博弈。从1A先开始,每次的动作是乘以[2,9]之间的一个整数,谁先把这个数乘到大于给定的k就算赢,问谁有必胜策略。思路:博弈题最难描述清楚,一开始找规律,然后总结规律中的必然。(http://www.cnblogs.com/rainydays/archive/2011/09/07/2169471.html)能到达必败态的状态为必胜态,只能到达必胜态的状态为必败原创 2015-04-23 20:54:20 · 554 阅读 · 0 评论 -
poj 2190 简单模拟(ISBN)
题意:输入为一个ISBN号码,其中有一位空缺,用?表示。求空缺位应该填入的数字,如果?处填入什么都不行,输出-1.ISBN号码共有10位,最后一位为校验位。An ISBN (International Standard Book Number) is a ten digit code that uniquely identifies a book. The first nine digits re原创 2014-11-30 20:07:58 · 486 阅读 · 0 评论 -
poj 3122 实数二分(分披萨)
题意:我生日,买了n个pie,找来f个朋友,那么总人数共f+1人每个pie都是高为1的圆柱体,输入这n个pie的每一个尺寸(半径),如果要公平地把pie分给每一个人(就是所有人得到的pie尺寸一致,但是形状可以不同),而且每个人得到的那份pie必须是从同一个pie上得到的后面那句很重要,就是说如果有3个pie, 尺寸分别为1,2,3,如果要给每人尺寸为2的pie,那么最多分给2个人原创 2014-10-29 21:09:37 · 795 阅读 · 0 评论 -
poj 1657 国际象棋棋盘上的距离
题意:给定国际象棋上的一个起点和一个终点,问原创 2014-10-01 20:51:29 · 689 阅读 · 0 评论 -
poj 1222 枚举(关灯游戏)
题意:一个5*6的灯方阵,0表示灯灭,1表示灯亮。按一盏灯其si原创 2014-10-01 20:38:11 · 774 阅读 · 1 评论 -
poj 1548 Dilworth定理(机器人清理垃圾)
题意:一个矩形区域,在若干个给定的坐标上有垃圾。机器人从西北角(矩形区域的左上角)开始清理,它只能向东或者向南行进,如果到达了东南角(矩形区域的右下角)则完成了它的使命。问最少用多少个机器人可以将所有的垃圾清理完毕。思路:Dilworth定理应用。把坐标看成一对数组,也就是求这个数组的最长反链。实际上这样一看,与poj1065的题意如出一辙。先排序,然后求最长下降子序列。原创 2014-10-24 14:40:55 · 625 阅读 · 0 评论