大白书

UVA 11292 (简单贪心)

题意:

  n条恶龙,m个勇士,用勇士来杀恶龙。一个勇士只能杀一个恶龙。而且勇士只能杀直径不超过自己能力值的恶龙。每个勇士需要支付能力值一样的金币。问杀掉所有恶龙需要的最少金币。

思路:

  贪心,均从小到大排序。为每一条龙找一个恰好能杀他的骑士。简单贪心。

UVA 11729 (经典贪心问题)

题意:

  n个任务,需要交代B分钟,执行J分钟,让你合理选择交代任务的次序,求得n个任务完成的最小总时长。

思路:

  经典贪心,通过比较俩俩的关系,得到整个序列的贪心排序方法。这个不明白可以问啊,虽然寒假讲过0 0.贪心套路。需要稍微理解一下sort函数

UVA 11300 (数学题)

题意:

  n个人围成一圈,每个人都有一些硬币,,每个人只能给左右相邻的人硬币,问最少交换几个硬币,使每个人硬币一样多;

思路:

  大白书上的例题我就不写题解了吧,不懂群里问,我给你po照片。

UVA 10881 (思维题)

题意:

  有很多只蚂蚁在一条直线上,每个蚂蚁移动速度都是1,并且有一个初始方向。并且当相邻两个蚂蚁相撞时转向。现在问t时间后各个蚂蚁的位置,及状态。

思路:

  需要理解:因为两只蚂蚁碰撞以后一起回头,所以结束以后和发生以前的蚂蚁之间的相对顺序是不变的。

UVA 11464(经典翻转问题)

题意:
        给你一个 n * n 的 01 矩阵,现在你的任务是将这个矩阵中尽量少的 0 转化为 1 ,使得每个数的上下左右四个相邻的数加起来是偶数。求最少的转化个数。n <= 15.

思路:

  经典的翻转问题。枚举第一行的状态,2^15。递推即可。

UVA 11384 (思维/分治思想+递归)

题意:
        用最少的操作数使得所有数字都变成0。操作:选择所有或者几个整数同时减去一个正整数。1<=N<=1000000000。

思路:
        就是看一下...你能/2几次呗,因为每次规模为n的问题可看做是两个n/2规模的问题做一次相同操作。递归即可。

UVA 10795 (思维+递归)

题意:

  汉诺塔问题。有n个盘子,放在3个盘子上,给你一个初始状态和一个结束状态,问你从初始状态转移到结束状态的最小步数。

思路:

UVA 11520 (搜索+贪心)

题意:
        给你一个n*n的格子,有些里面有大写字母,用大写字母填满格子,相邻的格子中字母不相同,并且使得从上到下,从左到右的字母字典序最小。n<=15。
思路:
        先肯定一定有解,然后贪心着暴力枚举,就可以了。

UVA 11636 (水贪心?)

题意:

  经过复制/粘贴可以变成原来的两倍,求最小复制/粘贴次数。

UVA 11039(贪心)

题意:

  n个绝对值各不相同的非0整数,选出尽量多的数,排成一个序列,使得正负号交替且绝对值递增。

思路:

  按绝对值排序,然后间次输出正负数即可。

UVA 10970(思维)

题意:

  给你一块M*N的巧克力,问把它切成最小单元需要最少切几刀,分开的就不能一起切了。

思路:

  每次下刀,只能多增加一块,一共需要切成m*n块,所以显然答案。

UVA  10340(经典问题)

题意:

  从字符串s中删除一些字符,能否得到字符串t。

UVA 10382 (经典贪心问题)

题意:

思路:

  洒水器洒水区域是圆形,草地是矩形,勾股定理求出洒水器所撒横向范围然后贪心就好了。也就是把圆这种二维的模型,降到线段上,成为一维的模型。当我们一开始选择了一个右端点最靠右的,左端点能满足左边界的洒水器的时候,我们会得到右端点R。那么接下来就是在洒水器中找,左端点<=R的,最远的右边界,然后选定这个洒水器。同理贪心贪下去就行了。

UVA 10905 (经典贪心问题)

题意:

  给你n个数字,让你用这n个数组组成一个最大的数字并输出来。

思路:

  两两比较排序。经典贪心方式。

UVA 11627 ()

UVA 11134 (经典上下界贪心)

题意:

  在一个n*n(1<=n<=5000)的棋盘上放置n个车,每个车都只能在给定的一个矩形里放置,使其n个车两两不在同一行和同一列,判断并给出解决方案。

思路:    

  首先我们思考一个简单的问题,如果把题目里的二维的改成一维的,你会不会做,就是有一行,让你放,每个车可以放一个区间[li,ri],问你能不能找到一种方案,使得每个车不在同一个格子里。    

  针对这个问题是不是,这样贪心:枚举每个格子,记为i,那么是不是所有满足左端点li <= i的里头,挑一个右端点尽可能小的来放在这一个格子里面?,因为右端点越大,它后面可能可以放的格子越多,越小,可放的格子越小,所以我们这样贪心的来放。    

  如果上一个一维的问题会做了,我们再来想,其实长和宽这两个维度是无关的对不对,比如说我们解决了长这个方向上的摆放,那么对于第i个棋子我们知道他放的列是第k列好了。此时它仍然能选择它自己矩形中的任意一行,对于解决宽这一维度是没有任何影响的,也就是两个维度是相互独立的。

  转换!这个问题可以分解成x方向上的问题,和相似的y方向上的问题。然后这个问题就解决了。

UVA 11100 (water)

思路:

  大白书上题意有误,看懂题意以后水题。

UVA 11389 (water)

思路:

  水题。

uva 10825

uva 10639

时间: 2025-01-02 00:16:58

大白书的相关文章

瞎搞大白书----(1)

/************************************************************************* > File Name: uva11300.cpp > Author: Baiyan > 题意: n个人分别有一些钱,要平均: 但是,每次只能给左右两边的人一些钱,n个人坐成环: 问最少移动多少钱: 解法: 大白书上P6页说的已经很详细了: 转化表示,使得问题转化成单变量最值问题, 然后问题转化成了数轴上到一些点距离和最小值: 那么就是中位

大白书第一章

UVA 11292 The Dragon of Loowater(简单贪心) 题意: n条恶龙,m个勇士,用勇士来杀恶龙.一个勇士只能杀一个恶龙.而且勇士只能杀直径不超过自己能力值的恶龙.每个勇士需要支付能力值一样的金币.问杀掉所有恶龙需要的最少金币. 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 20000 + 5; 4 int n, m; 5 int night[maxn], dragon[maxn

大白书伸展树学习笔记

void splay(Node * &o,int k) { int d=o->cmp(k);//cmp函数比较的是k和o->ch[0]->s+1的大小 if(d==1) k-=o->ch[0]->s+1; if(d!=-1) { Node *p=o->ch[d]; int d2=p->cmp(k); int k2=(d2==0?k:k-p->ch[0]->s-1); if(d2!=-1) { splay(p->ch[d2],k2); if

大白书 209 remember the word

F - Remember the Word Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice UVA 1401 Appoint description:  System Crawler  (2015-03-07) Description Neal is very curious about combinatorial problems, and now her

wenbao与数论(大白书)

最大公约数之和 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=26&problem=2421&mosmsg=Submission+received+with+ID+18788108 输入n 输出gcd(i,j) 1<=i<j<=n总和 1 #include <iostream> 2 usin

la3523 白书例题 圆桌骑士 双联通分量+二分图

具体题解看大白书P316 #include <iostream> #include <algorithm> #include <vector> #include <string.h> #include <stack> #include <cstdio> using namespace std; struct Edge{int u,v;}; const int maxn = 1000+10; int pre[maxn],iscut[ma

小白书关于动态规划

10192 最长公共子序列 http://uva.onlinejudge.org/index.php?option=com_onlinejudge& Itemid=8&page=show_problem&category=114&problem=1133&mosmsg= Submission+received+with+ID+13297616 */ #include <cstdio> #include <string.h> #include&

cumt周练题解

cumt2017春季--周练(一) A.CodeForces - 785A 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int n; 6 cin >> n; 7 map<string, int>ma; 8 ma["Tetrahedron"] = 4; 9 ma["Cube"] = 6; 10 ma["Octahedron&quo

图论--有向图强连通分量的标记及缩点模板

有向图中在若两点之间可以互相到达,则称这两点强连通,如果一个点集内的所有点都可以互相到达,那么这个点集就是图的一个强连通分量,而我们需要找出有向图中的所有极大强连通分量,于是就用Tarjan算法进行强连通,并将一个连通块缩成一个点,这样就可以形成了一张有向无环图,对解题会很有帮助. 找强连通分量的方法就是 dfs 寻找某个点以及它的后继节点能够到达的最远祖先节点,如果这个最远祖先节点就是进入 dfs 的点,说明所有搜到的后继节点都是在这个强连通分量中,就依次将他们标记为同一个强连通分量. hea