![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
水题日记
隐形的稻草人哦
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #371 (Div. 2) B. Filya and Homework
B. Filya and Homework time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Today, hedgehog Filya went to school for原创 2016-09-16 14:31:18 · 393 阅读 · 0 评论 -
UVA 536 Tree Recovery (二叉树的遍历)
题意给出 一个二叉树的前序和中序遍历,输出 后序遍历。分析没啥好分析, 看紫书吧。。。 每一个前序子树的第一都是根。。。 1A 还是比较激动的。代码#include <bits/stdc++.h>using namespace std;int a[30],b[30];int n, m;int ltree[30],rtree[30];string s1, s2;int build_tre原创 2016-10-06 13:32:07 · 479 阅读 · 0 评论 -
UVA 1595 找对称轴(set)
题意给出n个点的横纵坐标,是否可以找出一条竖线,使左右点都对称。分析这个想复杂了。。。什么坐标离散化了。。 还有一直下意识的关心 点不能用重了。。。 各种标记之类的。。。其实可以直接 用set遍历 找这一点,存在不存在关于轴对称的另一个点。。代码#include <bits/stdc++.h>using namespace std;typedef pair<int,int> P;int m原创 2016-10-03 10:08:54 · 764 阅读 · 0 评论 -
UVA 1614 Hell On The Market(贪心&&结论)
题意给出n个数字a[i], 并且 1 <= a[i] <= i,通过每一项乘以1或-1,使得所有数字的乘积和为0;分析题意化简:从数组中找出若干个数,使他们的和为所有数和的一半。想了n种超时的算法,毫无头绪。 肯定得用上 1 <= a[i] <= i; 这一个条件。 只是不知从何下手。原来有个结论: 在前i个数中,能够组成1~sum[i] 任意一个数。证明过程其实对程序没有影响,结论只是为了证明原创 2016-10-02 22:58:33 · 438 阅读 · 0 评论 -
UVA 1616 Caravan Robbers(二分+贪心)
题意给定n个区间的左右端点l,r,找出最大区间不想交长度。n < 1e5 , l <= r < 1e6;分析感觉是用二分,一直纠结如何在二分中实现分数的产生。贪心的策略就是尽量分割出来的区间靠向左,为后面的留出更多的空间。 看了看 大神的,原来可以先二分出小数,再将小数转化为分数。。。 不过为毛 分母的范围是 1~n,还是不太懂啊 (懊恼.jpg)代码#include <bits/stdc++.原创 2016-10-02 21:23:27 · 484 阅读 · 0 评论 -
UVA 1593 代码格式(stl)
题意给出若干行字符串和 空格,输出: 开头,结尾都没有空格;每一行 两个字符串之间最少有一个空格,每一列字符串 左对齐。分析没啥好分析的,stl+cin。。。#include <bits/stdc++.h>using namespace std;vector<string> a[1005];int len[190];string line, buff;int main(){ /转载 2016-10-02 09:13:35 · 1160 阅读 · 0 评论 -
UVA 11491 Erasing and Winning(贪心)
题意给出n个数字,消去d个数字,使得剩下的数字最大。分析我一开始 就是用 优先队列来进行模拟,直到消去d个数字、看一下,大神的写法,道理相同,但 代码量 呵呵了。写糙的方法:#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 10;int n, d, s;struct aa{ int val;原创 2016-10-01 22:05:31 · 292 阅读 · 0 评论 -
UVA 1153 Keep the Customer Satisfied(贪心2.0)
题意给出每个工作的耗费时间(q)和截止日期(d),一个时间只能完成一个工作,问:最多可以完成几个工作。分析贪心的想法先按照 截止日期进行排序。 如果 t时间内完成了 k 个任务,那么如何去完成 k+1个任务呢? 如果 c[k+1].q + t <= c[k+1].很好加入任务中, 否则 如果 任务列表中存在比c[k+1].q 还要耗时的,就 两者交换,这样 t 的值就减小了。这里可以反证一下,原创 2016-10-01 17:24:59 · 290 阅读 · 0 评论 -
UVA 12545 Bits Equalizer(瞎搞 贪心)
题意给定 两个字符串,第一个含有0,1,?;第二个含有0,1; 规定三种操作:把0 变成1,把?变成0或1,交换两个数字。 问,使用最少的操作数将第一个串变成第二个串。分析关键是寻找,最优的变换策略。观察操作,发现变成1 的操作有两种,而变成0的操作只有一种。进一步讲,增加0的操作只有一种 ,减少0的操作只有一种。相对固定。所以显然,需要讨论两个串中0的个数,以及与之对应的变换策略。两串0数相等原创 2016-09-28 21:24:59 · 421 阅读 · 0 评论 -
UVA 10827(环面部分数组和最大值)
思路1,枚举每个开始的左上角的坐标,然后枚举矩形的长和宽,用数组来记录每一列的前n行和,这个数组可以是二维的,也可以是一维,用滚动来实现。用sum[i]来记录前n列和,更新ans,即可。 2,枚举矩形的上下界限,将二维数组降为一维数组的连续子序列的最大值。dp一下就可以了。思路一代码#include <bits/stdc++.h>using namespace std;int a[160][16原创 2016-11-05 10:33:39 · 409 阅读 · 0 评论 -
UVA 1610 Party Game(逼近)
题意给出个数为偶数的字符串数组,寻找一个字典序尽量小的字符串将该数组分割成,前一半小于等于该字符串,并后一半大于其。分析只需找到排序后最靠中间的两个字符串,在中间插入即可。刚开始的想法,是分情况讨论,可是情况有点多,自己讨论了半天都没有A掉。于是想直接构造一个字符串,通过层层逼近,来获得一个答案。逼近 — 匹配— 修正。大胆的探索,错了就改,有点二分的意思。。。#include <bits/stdc原创 2016-09-28 20:19:06 · 420 阅读 · 0 评论 -
111
sdf原创 2016-09-21 21:59:33 · 674 阅读 · 0 评论 -
Codeforces #317(div.2) C(二进制 状压)
C. Sonya and Queries time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Today Sonya learned about long integers an原创 2016-09-16 15:14:53 · 278 阅读 · 0 评论 -
CF Contest Balloons
传送门题意给定几个队伍,获得的气球数和最大的可承受气球数。当气球数大于最大可承受值是,不参与排名。自己的队伍可以给任何队伍不超过自己气球数的气球,使他们不参与排名。 求自己最好的名次,分析很显然,是贪心的想法 但是实现上,有点犯难了。贪心的策略是这样的,先把比自己队伍气球多并且最容易使其失败的队伍开始。一直在想,可不可以直接一次排序达成。这样就必须考虑气球数和差值。用一个函数来拟合。。。。发现想骗原创 2016-11-01 21:07:22 · 399 阅读 · 0 评论