- 博客(18)
- 收藏
- 关注
原创 HDU 1045 fire net 二分图匹配
http://acm.hdu.edu.cn/showproblem.php?pid=1045题意:类似于八皇后,但是如果中间有墙隔开的话,皇后是可以放在一列或一行的。题解:竖着看,将一列中连在一起的格子看成一个点,这些点就是X集。然后横着看按行缩点,这些点就是Y集。如果一行格子与一列格子相交了,那么这两个点相连。求最大匹配就可以了。代码:#include <iostream...
2018-07-29 18:54:08 118
原创 codeforces 766 D Mahmoud and a Dictionary 并查集
http://codeforces.com/problemset/problem/766/D题解:加权并查集代码:#include <iostream>#include<cstdio>#include<cstring>#include<map>#include<cstring>using namespace std...
2018-07-28 17:27:19 133
原创 Gym 101521 A Shuttle Bus
http://codeforces.com/gym/101521/problem/A题意:2*n的棋盘,有m个格子不能经过,问能否一笔画。题解:棋盘很大,不能直接用矩阵模拟。用数组存下每一个不能经过的坐标,按照横坐标排序。先检查有没有发生直接堵死的情况,注意如果是最后一列或者最后几列一起被堵死了,就相当于棋盘缩短了,不影响一笔画。所以从横坐标从大到小遍历,第n列被堵死就n--。如果...
2018-07-28 17:19:05 248
原创 HDU 1083 Courses 二分图匹配 匈牙利算法模板
http://acm.hdu.edu.cn/showproblem.php?pid=1083题意:有n个学生,p个课程,现在要给每个课程配一个课代表(不能兼任),问能否达成。题解:二分图匹配代码#include <iostream>#include<cstdio>#include<cstring>#define inf 0x3f3f3f3...
2018-07-28 16:59:16 129
原创 uva 11733 Airports 最小生成树
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2833题意:n个城市,可以在城市建机场,也可以建道路,要让每个城市都拥有一个机场或者通过道路与有机场的城市相连 求最小花费。题解:假想一个0号城市,在i城市建立机场就等效于在...
2018-07-26 16:28:46 235
原创 HDU 2962 trucking dijksra 最小生成树
题意:车从指定起点开到指定起点,每条道路除了长度外还有限高。求在一条连接起点终点路线,首先这条路线的组成道路的最低高度尽可能大,然后路线最短。题解:先用最小生成树求第一个条件,将边从大到小排序,按顺序加入,每次检查起点终点有没有被连起来,如果被连起来了,那么刚加入的就是这个路线的最低高度,而且这个最低高度是尽可能大的。然后用dijk就可以了。代码:#include <iostr...
2018-07-25 22:57:13 169
原创 Codeforces1008 C Reorder the Array 贪心
https://cn.vjudge.net/contest/240521#problem/D题意:一个数列,改变顺序,新的顺序中每有一个位置的新元素大于原来元素就加一分,求通过改变顺序能得到的最大分数。题解:贪心,肯定是选取比该元素大的元素中最小的去放。本来是打算用并查集优化的,结果发现直接用一个指针指着就行了……#include<iostream>#include&l...
2018-07-23 21:41:10 214
原创 Codeforces 556 C Restructuring Company 并查集
https://cn.vjudge.net/contest/240521#problem/C题意:三种操作:将a和b放入一个并查集。 将区间内的所有元素放入一个并查集。 询问a和b是不是在一个并查集内题解:1,3很简单,难点在于2;一个一个合并肯定是超时。所以要想办法优化。n个元素,如果一个区间一个区间得合并,肯定很快就大部分就在一个区间里了。所以用数组nex[i]表示i元素...
2018-07-23 21:28:23 179
原创 Codeforces 304 Soldier and Cards
https://cn.vjudge.net/contest/240521#problem/A题意:两个人玩纸牌,每个回合两人拿出牌堆顶的牌,比较大小,较大一方将对方的牌放入自己牌堆底之后,再把自己刚打出的牌放入牌堆底。谁牌堆空了谁就输了。题解:用队列模拟,关键是判重,我用的是map,但是注意要先检查牌堆有没有空,再用map查重。代码:#include <iostream&g...
2018-07-23 15:11:09 118
原创 openJ_POJ 1009 A Lost Widget
http://poj.openjudge.cn/practice/1009?lang=en_US题意:背包问题。count(i,j)表示不用i号物品装满j容量背包的方法数。打表输出所有的count(i,j)的个位。题解:先用常规的背包,dp[i][j]表示使用前i号物品装满j背包的方法数,转移方程为:然后用f[i][j]表示count(i,j)。如果a[i]>j,那么,因为本来就...
2018-07-23 11:51:48 136
原创 B. Jzzhu and Sequences
https://cn.vjudge.net/contest/240161#problem/B一开始是想用矩阵快速幂,但是手算了一下,发现是周期数组:1 2 3 4 5 6 7 8 x y y-x -x -y x-y x y 然后就是注意负数的取模了#include <iostream&g...
2018-07-22 17:32:36 249
原创 HDU 1242 Rescue BFS
题意:有几个旁友找小爱,走有守卫的格子相当于走两格,求找到小爱最少格子数。题解:一开始我没有考虑异步的问题,这就导致有可能必须搜完全图才能得到答案。队列改成优先队列,每次都让步数少的优先出队就阔以了。#include <iostream>#include<cstdio>#include<queue>#include<cstring>...
2018-07-22 15:55:54 120
原创 POJ 2367 HDU 1285 拓扑排序模板
http://poj.org/problem?id=2367题意:一个关系比较混乱的部落,输出按照辈分排序输出。题解:拓扑排序裸题;拓扑排序三步:1.选取没有前驱的节点输出2.删去这个节点出发的边(也就是终点入度-1)3.重复1,2。直到所有点输出完毕,或者剩下的点都有前驱为止。(若剩下的点都有前驱则有环);代码:#include <iostream>...
2018-07-17 13:46:02 135
原创 POJ 1751 最小生成树
题意:给一个坐标图,求最小生成树。题解:题目比较裸。注意节点的序号#include <iostream>#include<cstdio>#include<algorithm>#include<queue>using namespace std;int px[755],py[755];int n,m,tot;struct no...
2018-07-16 18:12:19 179
原创 POJ 1011 搜索剪枝
题意:给一堆木棒,这些木棒是由几根长度相同的长木棒厥断而成的,求最短的长木棒长度能厥成这些短的木棒。题解: 所求长度肯定介于最长木棒和木棒之和中间,并且可以整除木棒之和。于是穷举所有可能的值,选中一个值之后,用dfs给木棒寻找组合,能找到就输出。 直接dfs会超时,所以需要剪枝。可以先排序,这样相同的木棒就聚在了一起,对于相同的木棒,只要这一长度的第一个木棒没被用,那么这些木棒都一定是不可以...
2018-07-16 11:29:14 129
原创 POJ 2976 Dropping tests 二分
点击打开链接题意:求最大平均题解:二分答案。#include <iostream>#include<cstdio>#include<algorithm>using namespace std;int a[1005],b[1005];double c[1005];int n,k;double sum;int cmp(double x,double ...
2018-07-15 17:04:51 132
原创 POJ 3159 Candies spfa
点击打开链接题意:就是裸的的差分约束。题解:因为差分方向固定,所以只有正权,可以用dijkstra,但是要用队列优化。我用的是spfa和栈。这里学习了存边迭代的spfa。add函数里面的tot是边的编号。head[i]表示当前最新的从i发出的边的编号(对于起始点就是-1),每加入一条边这条边的起点的head也更新。edge的next指向加入这条边时的起点的head。遍历...
2018-07-15 14:47:26 126
原创 POJ 3259 Wormholes floyd
点击打开链接题意:一个图,有权值为正的双向边和权值为负的单向边,寻找负环。题解:floyd,检查的时候看mp[i][i]是不是有负的。注意这里要放在第二层循环里面检查检查出来就返回,因为放在第一层不能检查所有的mp[i][i],放在第三层浪费了计算。三层循环之后,另起一个循环检查就得每次都跑完三层循环,也会超时。#include<cstdio>#include<iostream...
2018-07-14 10:54:38 113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人