其他题目
sheng4204
这个作者很懒,什么都没留下…
展开
-
HDU-4193 Non-negative Partial Sums
题意:n个数有多少种移位方式使得从第一个数往后加加到任意位置时和都不小于0,移位就是将第一个数字放到最后一个,1 一开始尝试用st表和线段树找区间和得最小值,结果是超内存。这个题没有那个复杂,从第n个数开始往前加,如果加到某个数字和是负数,那么这个数字肯定不能作为第一个数字,如果是正数那么这一段区间的和不会影响前面的区间,可以把和置为0,从前一个数重新开始加,因为是循环移位,最前面数字的加和可能原创 2016-04-28 15:42:14 · 270 阅读 · 0 评论 -
UVALive 6847 - Zeroes
题意:输入l,r,如果n的阶乘结果末尾有i个0,问l 每个0都可以拆分成一个5*2,每两个数字就有一个是2的倍数,每5个数字才有一个是5的倍数,所以有多少个0都是由有多少个因子5决定的,每五个数一个,那么从1到n就有n/5个不同的i。如果遇到25,125这样n的多少次方,i会跳过一些值,但是不同i的个数仍然是增加1。所以这个题就非常简单了……#include #include #includ原创 2016-09-21 16:14:53 · 429 阅读 · 0 评论 -
UVaLive 6844 - Combination
题意:输入一个low、high,求。 这个题可以通过暴力小数据发现规律。对于一个数字n,如果这个数字的二进制有i个1,那么的值为2的i次方。然后用类似数位dp的方式统计结果。对于(1 #include #include #include using namespace std; typedef unsigned long long ll; ll pw[100]; ll CCC(int u原创 2016-09-21 16:03:34 · 439 阅读 · 0 评论 -
uvalive 6600 - Spanning trees in a secure lock pattern
题意:输入n,有n*n个点,每个点与周围的8个点联通,找一共有多少种生成树。然后题意给出了一个矩阵,通过求矩阵的去掉第一行第一列的行列式的值就可以得到最终结果,对于mp[i][j],i == j的时候表示i点有多少个邻点,i != j的时候如果两个点是相邻的那么mp[i][j] = -1, 否则为0. 我只能说这是一个极其恶心人的题目,题目给出的数据范围是n AC代码: #include原创 2016-08-25 20:45:27 · 252 阅读 · 0 评论 -
uvalive 6692 - Lucky Number 水题
题意:给出n个数字,用x表示一个数字最后一个比它大的数字到他的距离,求x的最大值,n最大1000,000,每个数字是1道100,000. 先统计出每个数字出现最早和最晚的位置,然后对于每一个数字i,用i最后出现的位置减去[1,i - 1]最早出现位置的最小值,取这些结果的最大值即可。 #include #include #include #include using namespace原创 2016-08-23 21:23:52 · 286 阅读 · 0 评论 -
ural 2065 - Different Sums
题意:给出n、m,要求用m个不同的数字组成n个数字的序列,使得不同区间不同的区间和的不同数值数量最少。 前m个数字0,1,-1,2,-2……剩下的部分全补0. #include #include #include #include using namespace std; int main() { int n, k, i, j, m; while(~scanf("%d%原创 2016-08-23 12:13:14 · 347 阅读 · 0 评论 -
ural 2068 - Game of Nuts 博弈水题
题意:给出n个奇数,每个大于1的奇数又可以分解成三个奇数,Daenerys先分,最先不能继续分的输,问谁赢。 每个数字x总能分解x/2次,把可以分解的总次数加起来判断奇偶就可以了。 #include #include #include using namespace std; int main() { int n, i, a; while(~scanf("%d", &n)原创 2016-08-23 12:07:24 · 306 阅读 · 0 评论 -
ural 2069 Hard Rock
题意:给出n条纵向的路,m条横向的路,走过路径的最小边权值为路径权值,求最大路径权值。 数据量很大,但是其实只有四种情况有可能走出最有解:第一条横向和最后一条纵向,第一条纵向和最后一条横向,最大横向和第一条、最后一条纵向,最大纵向和第一条、最后一条横向,找最大值就可以了。 #include #include #include #include using namespace std;原创 2016-08-23 11:59:41 · 234 阅读 · 0 评论 -
poj 3316 Snakes on a Plane
题意:先说蛇的定义,蛇是由联通的1组成,并且除了两端,每个1只有两个相邻的位置是1。最大蛇的定义,不能给一条蛇在端点添加一个1使蛇更长,而不违背蛇的定义且不与其他的蛇相连接。问最大蛇的数量。 整体思路就是先用dfs遍历联通块,并判断这个联通块是不是蛇,然后对于每条蛇再判断能不能再添加一个1,感觉判断能不能添加的地方写的有点复杂了。 #include #include #include #原创 2016-08-18 19:53:17 · 372 阅读 · 0 评论 -
poj 3312 水题
这题非常水,但是题目比较长。 大意就是给n个人的名字,能不能将n个人分成k个队,使每个队中人名的长度与队中名字长度的平均值差不超过2.n一定能被k整除。 #include #include #include #include #include #include using namespace std; char s[100]; int ln[1005]; int main() {原创 2016-08-18 19:30:25 · 253 阅读 · 0 评论 -
CodeForces 687B Remainders Game
给出n个数和一个k值,对于任意的x能不能在知道的前提下得到x mod k的值 对于任意的x可以通过x对ci取余得到一组数字,这组数组一共可以表示m个不同状态,m是所有n个Ci的最小公倍数,而当m是k的倍数的时候,每一个状态都会对应到一组数字,这组数字对k的余数都相等,所以问题就转化成了对n个数字求最小公倍数然后对k取余。#include #include #include using na原创 2016-07-06 15:33:27 · 313 阅读 · 0 评论 -
HDU 3760-Ideal Path bfs
题意:先给出一个t代表几组样例,n个点m条边,每条边有一个数字代表颜色,找出从1到n路径最短且颜色序列字典序最小的路径,输出路径长度和依次经过的边的颜色。 从n出发bfs序遍历,对于每个节点k第一次走到k时记录长度和上一个点,当由其他节点走到k时如果长度相等且上一节点的颜色数字更小时,更新k;如果k的前一节点为m,则保证了第一条边是字典序最小的,一直走到1结束。最后用dfs输出结果。 #inc原创 2016-05-11 17:09:46 · 325 阅读 · 0 评论 -
HDU-4192 Guess the Numbers 表达式求值
给出n个数字,能不能通过所给表达式计算得到m。比较水的题,可能代码写起来比较麻烦。 #include #include #include #include using namespace std; int ss[26]; char s[1111]; int d[10]; int n, m; int u = 0; int cul() { int r = 0, p, p1, p2;原创 2016-04-28 16:29:48 · 350 阅读 · 0 评论 -
LeetCode 4.Median of Two Sorted Arrays(双二分)
题意很简单,就是给两个排好序的数组,要求这两个数组的中位数,题目要求复杂度O(log(n+m)),虽然我知道题目数据不可能卡到这个程度的,这样的数据量C++早爆内存了,但是我很倔强,于是…… 说重点,这个题我的大体思路就是对第一个数组二分,然后二分查找到第二个数组里面小于这个数字的数量,如果正好两个数组一共有(n+m-1)/2个数字比当前数小,跳出,如果少于(n+m-1)/2,那么中位数要往...原创 2019-03-22 11:14:32 · 179 阅读 · 0 评论