zoj
文章平均质量分 80
johsnows
正在静下心来学算法的acmer
展开
-
ZOJ 3705 Applications (模拟)
题意: 按照各种条件计算一个申请加入集训队的分数,输出前m高的申请者。 解题思路: 模拟做着就行。。。。就是公式内的除法是小数除,虽然给的都是整数,但却是小数除,比较坑。 还有就是注意Janpanjam要的是第三高 的分数; 最后如果分数相等要按字典序排序。 代码: #include using namespace std; struct acmer {原创 2017-02-13 18:43:46 · 304 阅读 · 0 评论 -
zoj H Kindergarten Election (枚举+贪心)
题意: 谢耳朵想成为leader,在知道其他n-1个选民(谢耳朵自己是选民1)选谁以及贿赂他们选自己需要的糖果数的情况下,问最少需要花多少糖果数让谢耳朵成为被投票最多的人,不能并列。选民也不能投自己。 解题思路: 纯贪心的去做感觉总不好做,所以想不出来。然后换思路,去枚举糖果数,再验证,但是想不到验证的方法,gg。 看了别人http://blog.csdn.net/zy691357原创 2017-02-14 10:39:00 · 495 阅读 · 0 评论 -
zoj D friends (脑洞+队列)
题意: 有一群人,给出一些朋友关系,如果两个人有不少于k个共同朋友,那么他们也能成为朋友,问有多少人能成为新朋友 解题思路: 设num[i][j]记录i和j之间有多少个共同朋友,我们去枚举每个人,将每个人的所有朋友xi,num[x[i]][x[i+1]]++,最后去判断有多少个num[i][j]>=k,用队列去记录,让他们成为朋友,然后再把队列里记录的这些新朋友相关的num[i][j原创 2017-02-14 11:28:14 · 369 阅读 · 0 评论 -
Find the Marble ZOJ - 3605 概率dp
题意: 有n个pots,其中只有第s个pots中有marble,进行m次交换,小明只看到k次交换,问他最有可能猜marble在哪个位置的pots上? 代码: 推发生概率,可以转换成对情况数的统计,哪种情况多说明哪种概率大。 用动态规划可以统计出来。 dp[i][j][k]分别表示前i次交换看到j次marble在第k个pots的情况数量。 转移方程大概不难想,但是细节要注意下。原创 2017-04-30 08:52:22 · 278 阅读 · 0 评论 -
zoj 3602 Count the Trees (dfs+哈希)
题意: 给出两棵树,问这两棵树有多少对子树,分别来自两棵树且结构相同。 思路: 一开始想着去给没课字符编号,然后map统计,但是没想出编号的办法。 编号的话我们可以根据二叉树每个节点的两个儿子来编号,pairpair中两个值分别表示出了两个左右子树的结构,这棵树的结构也就表示出来了,这种做法倒是加深了对树的理解,已经如何构造编号也是深受启发。 然后对两颗树分别dfs就可以了。原创 2017-05-05 15:05:35 · 471 阅读 · 0 评论 -
zoj 3962 Seven Segment Display(数位dp)
题意: 一个8位的十六进制的数字电子显示器,显示每个数字对应每秒要消耗多少点能量,数字每秒钟会加1,问初始数字为x,y秒后消耗多少能量。 解题思路: 赛场上去找规律做写炸了。赛后才知道可以数位dp搞,于是决定不看题解写一发。写了一发dp[pos][pre]这种状态的数位,示例也不过了,最后发现符合pos,pre状态的情况,他们pos位之前的能量加和是不一样的,所以答案是错的。最后还是原创 2017-04-25 17:02:12 · 760 阅读 · 0 评论 -
zoj 3795 Grouping(tarjin+dfs)
题意: n个人,m个年龄比较,si,ti代表si年龄小于ti。被直接比较过年龄或者间接比较过的不能分在一组,问最少需要分在几组中。 解题思路: 一开始想的是去找一条最长的路,也即树的直径,这里是单向边的话直接找一遍就行。但是会有成环的情况,成环的点是都不能分在同一个组的,所以直接找最长路的话不一定能全部取出成环的点,所以缩点,然后再去找点值最大的一条路径,点值即一个强连通分量中点的个原创 2017-06-16 22:32:11 · 353 阅读 · 0 评论