
UVA
羽翼__
羽翼未丰,继续努力
展开
-
5.14每日鲜例题(一)UVA 11624 BFS
一个稍微复杂一点的搜索首先预处理每个格子起火的时间,J进行转移的时候加上下一个格子在下一时刻是否会着火或是否已经着火的判断即可#include<bits/stdc++.h>using namespace std;const int maxn=1005;char e[maxn][maxn];int t[maxn][maxn];bool book[maxn][maxn]...原创 2019-05-14 23:12:25 · 268 阅读 · 0 评论 -
UVA 11491 Erasing and Winning
这个题是我这么好久以来第一个一遍过的题目了,我哭了。。。一个思路不是很清晰,正确性自己不是很敢确定的算法,写出来居然一遍过了。而且只用了40ms,O(N)的复杂度。首先这个题目的方法就是单调队列。一个递减的单调队列。但是这个递减队列不能对所有数进行构造,如果最后有一个数特别大会将前面的都出队。假设m=n-d;为结果的长度。我们舍下最后m-1个数不管,先看前面d+1个数,对前面这些书进...原创 2019-03-07 23:26:23 · 258 阅读 · 0 评论 -
UVA 1610 Party Games
题目的意思还是很容易理解的,代码也很容易些,但是细节很多,如果屡不清就会错了也不知道在哪错的。我开始的想法就是,对于n的字符串,如果第i个字母都相同就直接输出,如果不同就输出排序后的第n/2-1串的第i个字符。这么写仅仅几个样例能过。正确的算法是。将n个字符串排序,直接使用sort即可。然后a为第n/2个字符串,b为第n/2+1个,那么要输出的字符串就介于a,b之间。对于第i个...原创 2019-03-07 13:27:56 · 218 阅读 · 0 评论 -
UVA 714 Coping Books 二分+贪心
二分查找最小的最大值,然后贪心划分区间题解:x为划分的各个区间之和的最大值,那么x在[min,max]中,min为序列中的最小值(0也行,用最小值可以稍微减少二分的时间,),max为序列之和。函数P(x)表示当子序列最大值为x时,能至少划分出的区间个数,即每次尽量向右划。如果划完整个序列之后区间数<=K,那么x一定大于等于答案,如果区间数大于K,那么x一定取偏大了。不同情况进行二分,...原创 2019-03-05 10:33:19 · 277 阅读 · 0 评论 -
UVA11572
题解:设置左右端点 l,r=0,当a[r]不在[l,r]区间是,r++;否则 l++,知道a[r]不在其区间中。[l,r]区间中的元素可以用set进行判重和删除操作#include<bits/stdc++.h>using namespace std;const int maxn=1e7;int a[maxn];int main(){ int t,n; cin&...原创 2019-03-01 22:27:54 · 218 阅读 · 0 评论 -
UVA11054
题解:假设 村庄1的酒需求为a(可能正可能负,代表买酒或卖酒),这里无须在意a的正负。假设 2 村庄给 1村 a个酒人力就是a,那么2村庄的酒需求现在则为 b+a; 然后村庄3以此类推#include<bits/stdc++.h>using namespace std;int main(){ int a,last=0,n; while(cin>>n &a...原创 2019-03-01 22:19:15 · 307 阅读 · 0 评论 -
UVA11212 Editing a book 启发式迭代加深搜索IDA*算法
题目链接:https://vjudge.net/problem/UVA-11212迭代加深搜:对于可以用深搜但是解答树的深度没有明显上限的题目,可以用迭代深搜,设置一个解答树深度的上限maxd启发式:写一个估值函数h(),预测到目标状态还要多深,当cur+h()>maxd时剪枝。也是刚学还不是很明白,先上题目代码。#include<bits/stdc++.h>...原创 2019-02-24 10:59:29 · 355 阅读 · 0 评论