https://vjudge.net/contest/235900
A - 贪心
定义一个结构体,保存牛的序号、用的位置、开始和结束的时间。然后根据开始时间从小到大排序,相等的话用结束时间从小到大排序。然后定义一个优先队列,排序方法相同,每次出来结束时间最小的,结束时间相同就出来开始时间最小的,第一个牛用第一个位置并进队列。然后比较队头的结束时间和下一个的开始时间,如果小于,就共用一个位置,队头出队列,下一个进队列,否则下一个牛用下一个位置,也进队列。
PS:使用scanf/printf。
B - 优先队列
定义一个优先队列,队头为输出时间最小的,时间相同就是序号最小的。每次输出队头,然后队头元素的时间增加他自己的时间间隔后再入队。
C - map
跟第二版的B题差不多。
D - 贪心
优先队列,先输入一个作为基础,然后输入第二个,两两相加,取最小的n个进入队列,并把队列里的数字清空并按升序赋值给基础数组,然后依次输入剩下的,每次和基础数组两两相加,取最小的n个,继续上述操作。
F - 二分
和上一题差不多。需要注意的是如果需要pie的人比pie的数量少,那么只取最大的人数个pie就可以了。还有一点是对pie的体积二分而不是对半径。(发现交上去TE的题把输入输出全改成C的输入输出就OK了)
G - 二分
把所有天数n分割成大小不一定相等的m个区域,区域内的天数连续,求出分成m个区域后对于区域所花钱的最大值最小的情况。如果m=1,那么最大值就是输入的每天的最大值,如果m=n,最大值就是输入的所有天花钱的和。对这两个区间二分,计算一共分成多少个区域,如果区域数恰好等于m,就输出这时的最大值。
H - 二分
输入之后先排序,然后让最后一个输入值后面的值等于L,表示石头全部去掉的情况。然后在(0, L]二分查找最小跳跃距离,如果两个没有去掉的石头间距小于mid,去掉的石头数增加。后面的和上一题差不多。
然后还有一个关于二分查找的边界问题……写了这些一直有些迷茫,专门百度了一下。https://blog.csdn.net/u011523762/article/details/50878613
终于结束了……二分真的难诶……边界太难判断了……
前面好像有一道题……sample input #1这种根本不是输入输出……
I - 素数环 搜索
就是一个深搜题……先让第一位等于1,然后判断2~n-1位,最后判断n位,注意判断n位的时候要考虑和n-1位的和以及和1位的和都是素数。如果第n位没有问题就从头开始输出,注意最后一个数字后面没有空格。
J - 搜索
就暴力搜索,每种情况都列举一次。容易卡的地方感觉还在题意的理解上……输入每两行是一个测例,第一行是不同种邮票种类的价值,第二行是顾客需要的邮票价值总数。对各种邮票组合,让最终价值等于顾客需要的,可以重复。可能有很多种情况,输出按优先级:种类多、张数少、最大一张价值大、tie。也可能不存在这样的组合,就按题意输出none。
K - 搜索
直接搜索就可以啦,周围一圈依次搜索。可以根据一个X上下左右X的数量判断它为周长贡献了多少,每次相加,搜索完之后输出即可,注意不要重复搜索同一个格子。
L - 搜索
和上一题一样。
M - 搜索
就是一个很常规的搜索题,但是要注意当某种情况扔的次数(不一定扔完)已经大于最小次数的时候就结束这个情况,继续dfs;还有最小次数初始化的值不要太大,11就刚好……可能是写的算法复杂了点我自己如果初始化是20都会TE。。另外四个方向可以存到一个二维数组里面,每次选择一个方向,这样代码看上去会简洁一点。。然后这个题的长宽和前面两个刚好是反的,输入的时候反一下就行了。
N - 搜索
这次是广搜啦。
O - 搜索
深搜。走日字,然后因为是按照字典序输出,所以移动的先后方向一定不能错。从A1开始走,如果走完之后(step==m*n)最终回到A1就说明这个路线可行,输出这个路线即可。如果搜索完之后发现没有这样的路线就输出impossible。
P - 上一个题的加强版
这次是广搜啦。输入字符串的时候不要刚好定义输入的字符串的大小,多定义几个。。不然会RE。
Q - 搜索
感动,终于看到一个中文题了。。
dfs递归。
R - 搜索
还是广搜。。和前面的很多题都差不多。
S - 搜索
广搜,用一个指针指向前一个结点,输出的时候利用栈倒序输出。感觉广搜的题目方法都差不多。
T - 搜索
和P题一样。。数据改大就行了。
U - 搜索
深搜广搜都ok,我用的是广搜,会比深搜时间长一点。。每到达一个没有去过的黑砖数量就+1.
V - 搜索
深搜,类似八皇后,但是是一个一个点搜索的,搜索出一个可以放的点总数就加一,找出总数的最大值,输出。
X - 搜索
相当于是一个无向图,一共n个点,m条边,选定一个顶点,任意删去1条边,计算含这个顶点的连通分量的总权值,然后计算两个连通分量的差值,找最小差值。另外就是记得定义权值相关的时候要用64位整型,不然会WA。
Y - 搜索
深搜,对每条边列举可能的情况。如果所有棍子的总长不是4的倍数或者最长的棍子长于总长/4,则直接输出no.