UVA
数论只会GCD
研二在读
展开
-
UVAlive 3092 无根树->有根树 dfs
题目链接:UVALA 3092题意:给定一个无根树,选其中一个非叶子节点作为服务器, 求要放置最小的服务器数满足 每个叶子节点到最近的服务器的距离最大为k,且服务器只能放在非叶子节点上。题解:先用dfs把无根树转成以给定服务器为根节点的有根树,那么 深度d AC code:#include#include#include#include原创 2016-08-29 10:19:24 · 673 阅读 · 0 评论 -
UVA 11732 trie树 + 插入式比较
传送门:UVA 11732题意 给你n个单词,让他们两两比较,要求他们运用strcmp时,进行比较的次数。 根据题目数据量的范围,肯定不能用简单模拟,然后就想到比较时建Trie树,关键是考虑怎么计数,例如than和that它们比较的次数就是7次,因为他们是在a之后出现不同,就是要记录比较结束的位置,来进行计算即可,那么我们就来一个val数组代表计数器就好了,代表经过该节点的单词个数。原创 2016-11-06 15:51:15 · 391 阅读 · 0 评论 -
UVA 11235 线段树区间合并 & 离散化
传送门 : UVA 11235题意 给定一个长为n的数列, 给定q个查询, 查询[l, r]内出现最多数字的出现次数 题解 常规解法: 线段树区间合并, 需要注意的是, 查询时的区间合并不能忽略 离散化,离散的运用:将连续的相等的一个区间的点集,聚集为线段树的一个节点,并且在这个节点上有信息能体现出这个区间的性质。 code:/* *adrui's submi原创 2016-10-22 23:12:32 · 487 阅读 · 0 评论 -
UVA 11992 线段树区间更新 + 两个lazy(二维线段树)
传送门:UVA 11992题解 最多有20行, 可以建20棵线段树, 然后更新查询时按维数维护 线段树区间合并, 两个lazy有主次之分(set比add优先) pushDown()和pushUp();/*adrui's submissionLanguage : C++Result : AcceptedLove : llFavorite : Dragon BallsSta原创 2016-10-21 23:15:12 · 593 阅读 · 0 评论 -
UVA 10689 矩阵快速幂 + 快速幂取模
uva 10689题意 a, b任意给定求出f(n)的后m位数题解构造矩阵去快速幂求模数10 ^ m矩阵快速幂求f(n)输出答案经验值~get 能用int表示的数据范围尽量不要用long long, 两发PEcode:/*adrui's submissionLanguage : C++Result : AcceptedLove : llFavorite : Dragon原创 2016-10-09 13:57:32 · 555 阅读 · 0 评论 -
UVA-LA 3971 组装电脑 二分枚举
题目链接:UVA-LA 3971题意:用不超过b的预算,购置电脑硬件,每种都需要购办一个,且要使品质最差的硬件的品质数最大。题解:二分枚举,在每种硬件里都选择比不小于当前品质(记为k)高硬件,如果预算不超过b,那么ans >= k;如果超过b,ans AC code:#include#include#include原创 2016-08-25 15:04:47 · 464 阅读 · 0 评论 -
UVA 11210 暴力枚举 + 递归(hdu 4431)
题目链接:UVA 11210 中国麻将题意:一般麻将的规则,给出13张手牌,按指定顺序输出可以“听”的牌,没有听牌输出“Not ready”;题解:这题和UVA 11464偶数矩阵的思路很像,在数量级小且无法判断的情况下进行必要的枚举以达到求解条件。AC code://lrl's submission//adru原创 2016-08-23 12:53:56 · 604 阅读 · 0 评论 -
UVA 11464 枚举方法
题目链接:UVA 11464题意:给定一个01矩阵,size:n * n,0可以变成1,1不可以转为0让你求出最小的变化数满足它成为一个偶数矩阵(任一点上下左右(存在)之和为偶数);题解:这题如果枚举所有01有2^255的复杂度。显然不行,可以降低枚举层次,只枚举第一层,然后根据偶数矩阵的特征递推,满足条件返回,不满足退出;ps:因为原创 2016-08-22 16:10:50 · 605 阅读 · 0 评论 -
UVA 11300 Spreading the Wealth 分金币
题目链接:UVA 11300总结:还记得7月的某一天,有个学弟在群里问回答一个学长的问题,用的数学思维代数分析,虽然他回答漏了一些点,不过有这个思维就很不错,至少我在这方面比较缺的,今天开刷白皮书,第三题坚持没看题解,不过没成,思维偏了,都想着用dp了,关键找不到状态和复杂度啊,嘿嘿,懵逼,后来A掉后看了部分在vjudge提交的public代码,同题解。。。。原创 2016-08-20 17:21:15 · 432 阅读 · 0 评论 -
UVA 11137 母函数
题目链接:UVA 11137这题题用的母函数解法,还是不熟,有一发WA,AC CODE:#include#include#include#includeusing namespace std;#define debug 0#define M(a, b) memset(a, b, sizeof(a))const原创 2016-08-20 15:33:45 · 365 阅读 · 0 评论 -
UVA 10125 Sumsets 折半枚举 + 二分
题意:就是给定一个整数序列,让你在这个序列中找到一个子集{a, b, c, d}吗,满足a + b + c = d且d最大,若不存在这样的集合输出 “no solution”;题解:这题如果用暴力枚举,O(n^4),n最大为1000,必然TLE。所以要拆分枚举,a + b = c - d枚举 a , b 然后c - d的值二分搜索 和 a+ b比较直到 a+b=c-d;原创 2016-08-18 16:24:59 · 312 阅读 · 0 评论 -
UVA 1513 树状数组
传送门:UVA 1513题意 给m个movie, 编号一到m, 1在上, 每次把要看的movie看完后放在最上面, 查询每次要看之前上面有几个movie题解 每次更新把上个位置去掉, 新的位置可以通过扩展数组实现, 因为r <= 100000干脆数组开两倍, 最上面的movie更新放在后面, 这样每次更新前查询就可以了AC code:/* adrui's submission原创 2016-11-25 20:20:48 · 456 阅读 · 0 评论