POJ
省赛前的训练题目题解代码 78多个题,其实是将近100道有好多题太难就没加上,到5月7号省赛,不知道能做多少,尽可能的做完吧,平均一天两个多题目QAQ好菜啊,英语完全不懂 代码仓库
我已经做了16/78题
POJ-1328
贪心,根据每个岛对应雷达的圆心范围,排序贪心 核心代码:
if(line.r<node[i].l){
sum++;
line=node[i];
}else if(line.r>=node[i].r){
line=node[i];
}
POJ-2524
并查集,非常简单的一个并查集问题,数据量也不大直接套模版
POJ-3278
bfs问题,每一个状态有三个转移目标转移以后步数+1,最后注意范围 数组的开两倍,RE了两次才明白过来,,,真是**了
POJ-2586
贪心,题目贼难懂 题目描述: ACM因为Y2K这个bug丢失了MS Inc的一些统计数据,ACM所记得的,那些数据是MS Inc 提交的1999年各个月的盈利或亏损情况,而且,一个月如果是盈利的,那么盈利就为输入的s,如果这个月亏损了,那么亏损就为输入的d。但ACM忘了哪个月或者多少个月提交的盈利或者亏损。MS Inc,不像其他公司,它每次提交都是提交连续5个月的盈亏情况(1-5,2-6,…,8-12共8次),ACM记得这8次提交都是同一个亏损额,但忘了亏损多少。 思路: 当亏损是ssssd时,当年最少为ssssdssssdss 当亏损是sssdd时,当年最少为sssddsssddss 当亏损是ssddd时,当年最少为ssdddssdddss 当亏损是sdddd时,当年最少为sddddsddddsd 当亏损是ddddd时,当年最少为dddddddddddd
POJ-1062
单源最短路,Dijkstra算法,求出所有的等级符合条件的人到1所需要的最短路 增加源0,0到其他店的距离为每个点的价值
POJ-1753
题意:翻棋子,当出现全黑或是全白的时候停止,每次翻转连带着上、下、左、右一块翻转(如果有的话)。问实现全白或是全黑所需最少步数。。。 DFS,把每一位都入栈,然后一个一个的往回退,退回一个就反转一下,然后再入栈,每次反转后都要判断一下
POJ-2965
这个题和POJ-1753是一样的,就是多了一个记录坐标,在每次反转以后记录坐标就可以了
POJ-2109
POJ-2506
大数+递推 由于没有高精度的模板,,,就只能上java了,java的BigInteger还是蛮好用的
递推公式dp[i]=dp[i-1]+dp[i-2]*3;
因为如果我们有2*(n-1)个,然后再加一个小的就好了, 如果有2*(n-2)个我们可以加一个22的或者两种两个21个,但是其中一种和前面的情况重复了所以就只要两种 最后得出递推公式
POJ-3083
这个题比较麻烦,两次dfs一次bfs,贼烦,最不想写搜索 题恨简单 题意 有一个迷宫,要你求分别算出从迷宫起点到终点的3种距离:优先左转,优先右转,以及最短距离。保证左转和右转一定能从起点到达终点的。 分析 又是一道题意模糊的题目。 首先我们要确定虽然题目中没说,但是左转优先的时候如果走不通就往上走,然后才是右转,最后才是往下走。 右转优先的反向顺序是:右,上,左,下。 由于题目中保证了上面两种走法一定能走到终点,且需要注意左转优先始终是相对于当前的方向而已的。比如我们令左=0,上=1,右=2,下=3的时候,当前方向ans的左方向=(ans+3)%4
POJ-3295
判断是不是一个永真式,用所给的逻辑表达式去判断,用栈去存数,从后往前判断
POJ-3026
最小生成树,比较麻烦,给出的地图中用bfs找出每个点到其他点的距离,然后再用Kruskal,找出最小生成树
POJ-1258
最小生成树模板
POJ-2485
求最小生成树的最长边
POJ-3259
Bellman-Ford 单源最短路径算法判断是否有负环 Bellman-Ford 如果有负环说明可以回到原来点,如果没有则不能
POJ-1860
有多种汇币,汇币之间可以交换,这需要手续费,当你用100A币交换B币时,A到B的汇率是29.75,手续费是0.39,那么你可以得到(100 - 0.39) * 29.75 = 2963.3975 B币。问s币的金额经过交换最终得到的s币金额数能否增加 货币的交换是可以重复多次的,所以我们需要找出是否存在正权回路,且最后得到的s金额是增加的 怎么找正权回路呢?(正权回路:在这一回路上,顶点的权值能不断增加即能一直进行松弛) 和上一个题目一样,这个判断正环