摘要:
题目:给出1到N的N张纸牌,一共最多有T轮,每轮需要拿出一定总和的牌的组合,问最后最多能拿出多少牌。思路:首先应该想到的是预处理出拿出牌的组合,这样每次需要拿出某个数的时候直接从列表里搜索,因为N为22,所以直接dfs枚举。然后就是搜索了,直接写一个dfs搜答案是很容易想到的,但是跑一下会发现即使是... 阅读全文
摘要:
1 HDU 4334(线性查找|暴力hash)题目:给出五个集合,每个集合元素个数为n,现问是否有五个元素分别属于这五个集合且其和为0.思路:给定两个排好序的序列,可以在线性时间内求出是否有两个数分别属于这两个集合且其和为一定值。方法是设置两个指针,线性扫描两个数组。本题可以把5个集合分为三组,枚举... 阅读全文
摘要:
HDU 4315题目:山上有n个人,每个人给出距离山顶的距离,给出其中一个人为king,每次能挑选一个人向上移动,不能越过其他人,最后将king移动到山顶者获胜。问获胜者。思路:转化为NIM游戏。简记:NIM游戏:有n堆石子,每次可以选择一堆拿走任意数量的石子,不能拿石子的一方失败。NIM游戏的必败... 阅读全文
摘要:
题目:给出一个只有ab组成的串,求其中半回文串的第k大。思路:暴力枚举出所有半回文串,然后暴力插到trie里查询第k大,原先写trie是抄模板的,这次自己写了一下。#include #include #include #include #include #include #include #incl... 阅读全文
摘要:
题目:城市间有若干条道路,士兵可以经过道路到相邻的城市,现在给定初始每个城镇的士兵数目和最终的数目,问是否可以达到最终局面。思路:关键是建图,首先从源点到初始城镇连边,然后把有边的初始城镇和结束城镇连边,最后把结束城镇和汇点连边,这样就可以保证题目中的“每个士兵最多经过一条道路”的条件,然后求出最大... 阅读全文
摘要:
题目:若干长度相同的字符串,如果一个字符串至少有一个字符与其他字符串这一位的字符都不一样,那它就是好记的,现在问把整合集合都变成好记的最小花费。思路:虽然一看就是状压,但是有些地方没理清楚导致一直过不了,首先因为最多有20个字符串而字符集有26,改一个字符肯定可以不与其他字符冲突。然后状态转移中分改... 阅读全文
摘要:
1. HDU 2196 题目:求出一棵树上的所有点到其他点的最长距离。思路:取一个根节点进行dfs,先求出每个节点到子节点的最长路和次长路(也就是与最长路不同的最长的路,有可能与最长路长度相等),并记录最长路和次长路通过的相邻节点的标号。然后进行第二次dfs,考虑最长路是通过父节点的情况,如果该节点... 阅读全文
摘要:
题意:给出若干个点,求半径为2.5的圆最多包含多少个点。思路:查到的一篇题解是枚举三个点的外接圆,这个对于我等计算几何小白来说还是不太好做。。。。后来听大神讲的,因为半径已知,所以只需要枚举经过两点的半径为2.5的所有圆就好(两个点对应两个圆),这样不仅好写,而且复杂度也降低了。(感觉不用一大串模板... 阅读全文
摘要:
题意:给出一个图,每个顶点有一个权值,要求求出一个生成树,这个树上的某一边长变为0,求该边两端点权值之和与总边权的最大比值。思路:枚举权值为0的边,如过该边在最小生成树上,直接减去边权,如果不在树上,添加边必然产生环,此时最小总边权可以通过减去这个环上的最大边权求得。先用prim算法计算最小生成树,... 阅读全文
摘要:
题意:交换自然数中的若干对数,求交换后总共有多少逆序数对。思路:因为题目数字范围比较大,不能直接用树状数组算,首先要离散化。然后一种算法是官方题解中根据逆序对数是否属于交换过的数分类讨论统计。我的算法是把没有交换的连续的数看成一个数,使用树状数组统计的时候直接加上这个区间的数字个数,这样就不需要比较... 阅读全文