【每日一题】

                                                                                                                                                                                                               
        比较重要的一个寒假,可惜家中事情有点多、没有条件训练,要考研了,每天刷一题。也有想不刷来着,毕竟专业课任务比较突出,复习时间很少、不过不做做题比看不懂题意更难受。

                                                                                                                                                                                                          

2019/3/1

题意
P: a {1,2....i....n } 中找出比i大的数有多少个、打印出新序列。
I:a{1,2,3...i..n}  ai代表i数字所在的位置有ai个数比i大,依次,打印出新序列。 找I和P序列之间得关系
代码:https://paste.ubuntu.com/p/Z6BX6XMxsT/

                                                                                                                                                                                                        
题意

Colorful Creatures 
用到了数学中否命题的概念,在其二倍的范围内都行,也就是说超过了其二倍的都不行。
 代码:https://paste.ubuntu.com/p/q88CQZJTG4
                                                                                                                                                                                                          

2019/3/2

 HDU-1595
题意
打开密码锁。 密码由四位数组成。 每个数字的编号从1到9。
每次,可以在任何数字上加1或减1。 当将1加到'9'时,数字将变为'1',当减1变为'1'时,数字将变为'9'。 也可以与其邻居交换数字。 每个动作都将迈出一步。任务是使用最小的步骤来打开锁。
注意:最左边的数字不是最右边数字的邻居。
每个测试用例以四位数N开头,表示密码锁定的初始状态。 然后跟着一条线,用另外四个M,表示可以打开锁的密码。 每个测试用例后都有一个空行。
1234
2144
answer:2
代码 https://paste.ubuntu.com/p/H3HJXt449H/
—————————————————————————————————————————————————————

2019/3/4

Atcode-2341
题意
如果一个十进制非负整数的所有数位从高位到低位是不减的,我们称它为“上升数”,例如1558,11,3,0都是上升数,而10,20170312则不是;
给定整数N,求最小的k使得N能被表示为k个上升数之和。
1≤N≤10500000
题解
一个结论:每个上升数必定能被分解为九个全一数的和;
所谓“全一数”就是指1,1111,11111111这种每一位数都为1的数(包括0),证明显然。【不显然
设N可以被分解成K个全一数之和,显然答案k=\frac{K}{9},则求最小的K。这K个全一数分别为a_1,a_2,...,a_K,其中a_i=\frac{10^{b_i}-1}{9}

N=\sum_{i=1}^{K}\frac{10^{b_i}-1}{9}  ,
   9N+K=\sum_{i=1}^{K}10^{b_i}这个式子是什么意思呢?如果不考虑进位,右边每一项都会使数位和+1,那么总体就说明9N+K的数位和等于K的数位和,此时K一定是9的倍数;如果考虑进位,那么每进一位数位和就会减少9,因此K仍然要是9的倍数。

由于答案最多不会超过N的位数,枚举k,写个高精度乱做就行了。。。注意加法的时候没有进位就要break,这样是均摊O(1)的,否则是O(n2)的。记一个数x的各位数之和为d(x),要想找到一组b使得上式成立,那么应有:d(9N+K)<=K(因为即使不进位,一个b[i]也只能使得数位和+1)。】【不显然】
代码

https://paste.ubuntu.com/p/b2y56hGVYy/
———————————————————————————————————————————————————————

2019/3/9
题意
a:b代表两个球队打球在某一时刻的比分,给出某时间点(不连续的时间)的各个比分,问在比分之间有多少次最多有多少次平局,即x:x 
代码 https://paste.ubuntu.com/p/8dZKBhTfsR/
————————————————————————————————————————————————————————
2019/3/9
题意
题目中说的是给出n个数字,要求成一个环,然后要求相邻之间的数字的差值的绝对值最小,刚开始搜的题意没有说是成立一个环(直接排了个序submit了 结果wa1)
代码 https://paste.ubuntu.com/p/PZPD3yZVRj/
——————————————————————————————————————————————————————
2019/3/9
codeforces
题意
从l​​到r​中选​n​个数,允许相同。要使最终这n​​个数的和是​3的倍数,求有多少个方案,答案mod​ 1e9+7(若没有方案,输出​0​)
//首先1≤ l ≤ r ≤1e9 1 ≤ l ≤ r ≤ 1e9,显然不能从l,r下手。我们可以从3思考一下,显然,求n个数的和为3的倍数,就是余数加起来为3的倍数。所以,对于一个方案,把里面的某一个数换成余数与其相同的数,方案仍然成立。
//f[i][j]​​ 为到第​i个数时,前i​​个数的和mod​​ 3​​为j​​的方案数。
代码 https://paste.ubuntu.com/p/WkWQ92XQmQ/
———————————————————————————————————————————————————————

2019/3/17 感觉凉了
问题

给出两个数a,b(<1000),算出他们两个最大不能被表示的数。
思路
简单dp,数论:在a,b互质的时候,有结论:最大不能被表示的数是a*b-a-b,且不能被表示的数的个数是(a-1)(b-1)/2, 在(a,b)!=1的时候,不知道。
代码:https://paste.ubuntu.com/p/FrWYBr4HXp/
———————————————————————————————————————————————————————
2019/3/18
问题

给出n个数,求其中k个数的乘积最大是多少,n<=1000
代码https://paste.ubuntu.com/p/GWWQ3RKCyT/
___________________________________________________________________________________________________
2019/3/18
题意
51nod-1194
给出N和K,求Fib(N) mod Fib(K)  (1 <= N <= 10^18, 1 <= K <= 10^3)
2014年蓝桥杯的C++ A组第九题
求斐波那契的前n项和对m取余
(0 < n, m < 10^18)
题解
斐波那契数列的性质:

推导有

一直这样迭代下去最后就会

因为,所以我们得到
在第九题中m很大,不能预处理
,立即推
-----
dalao:https://blog.csdn.net/acdreamers/article/details/21822165
-------------------------------
对于斐波那契数列的性质总结有
,则
 令,那么利用上述性质,我们替换一下:,得到:
,变换一下顺序,即

,所以

 再分的奇偶性进行讨论:
(1)为奇数时,

(2)为偶数时,

————————————————————————————————————————————————————————
2019/03/18
题意
小明维护着一个程序员论坛。现在他收集了一份"点赞"日志,日志共有N行。其中每一行的格式是:
ts id
####表示在ts时刻编号id的帖子收到一个"赞"。
####现在小明想统计有哪些帖子曾经是"热帖"。如果一个帖子曾在任意一个长度为D的时间段内收到不少于K个赞,小明就认为这个帖子曾是"热帖"。
####具体来说,如果存在某个时刻T满足该帖在[T, T+D)这段时间内(注意是左闭右开区间)收到不少于K个赞,该帖就曾是"热帖"。
####给定日志,请你帮助小明统计出所有曾是"热帖"的帖子编号。
代码 https://paste.ubuntu.com/p/YFd9CkFM9g/
——————————————————————————————————————————————————————
2019/03/18
题意
螺旋折线

思路
找出(x,x)的dis,之后对x>0 x<0  以及x和y的大小关系细化规律
代码 https://paste.ubuntu.com/p/d2WHbhDvqY/
———————————————————————————————————————————————————————
2019/03/19

题意
星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。
各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。
x星球有很多高耸入云的高塔,刚好可以用来做耐摔测试。塔的每一层高度都是一样的,与地球上稍有不同的是,他们的第一层不是地面,而是相当于我们的2楼。
如果手机从第7层扔下去没摔坏,但第8层摔坏了,则手机耐摔指数=7。
特别地,如果手机从第1层扔下去就坏了,则耐摔指数=0。
如果到了塔的最高层第n层扔没摔坏,则耐摔指数=n
为了减少测试次数,从每个厂家抽样3部手机参加测试。
某次测试的塔高为1000层,如果我们总是采用最佳策略,在最坏的运气下最多需要测试多少次才能确定手机的耐摔指数呢?
请填写这个最多测试次数。
解析
假设在n层的楼中,最大扔的次数是x,
那么在扔1次的时候扔x层,

在x层的楼中最大扔的次数是x次,但是这不是最优的方案,手机也没有这么多
那么在任何一种楼层模型中,设最大扔的次数是x,那么最大扔的楼层也是x
在n层的楼中
第一次扔x层,
第二次扔x+x-1,(增加了x-1层,这样保证了在摔第二次的时候最大最次也是x次,若第一次刷坏,第二次用另一个手机摔第1层)
第三次 x+(x-1)+(x-2) (每次增加的楼层都是上一次增加的层数-1,若第二次摔坏,则在第三次的时候用下一个手机去扔x+x-1+1层)
...
第x次扔 x+(x-1)+(x-2)...+(x-(x-1))  这样就保证了在最差的运气下,最多需要测试的次数。
最后第x次扔的层数是 1+2+3+4+....x
在100层的楼中也就是上式大于等于100
x>=14
第一次在14楼扔,如果碎了的话从一楼再开始扔;
否则在14+13=27层扔,如果碎了的话从15层开始扔;
否则在27+12=39层扔,如果碎了的话从28层开始扔;
……
这样,最大尝试次数为14次就行了。http://www.cnblogs.com/Matrix_Yao/p/4793823.html
上面是在有2个手机的情况下得到最差的次数,那么在有第三个手机的情况下就可以转化到只有两个手机模型中,把前两次扔的当做第一次(原先前两次)仍,下一次扔(原先第三次)的当做第二次
那么就有 1+3+6+10....x>n  总结出来第x次扔的层数通项是ax=(n*n+n)/2
当n=1000时
....我算出来的不是18 (学长:https://blog.csdn.net/clx55555/article/details/79855677
代码 https://paste.ubuntu.com/p/tKKjs3PczP/
————————————————————————————————————————————————————————
2019/3/19
题意
代码https://paste.ubuntu.com/p/DQ8gzm9GNV/
2019/3/22
题意

博览馆正在展出由世上最佳的 M 位画家所画的图画。
wangjy想到博览馆去看这几位大师的作品。
可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必须说明两个数字,
a和b,代表他要看展览中的第 a 幅至第 b 幅画(包含 a 和 b)之间的所有图画,而门票
的价钱就是一张图画一元。
为了看到更多名师的画,wangjy希望入场后可以看到所有名师的图画(至少各一张)。
可是他又想节省金钱。。。
作为wangjy的朋友,他请你写一个程序决定他购买门票时的 a 值和 b 值。
输入输出格式
输入格式:
第一行是 N 和 M,分别代表博览馆内的图画总数及这些图画是由多少位名师的画
所绘画的。
其后的一行包含 N 个数字,它们都介于 1 和 M 之间,代表该位名师的编号。
输出格式:
a和 b(a<=b) 由一个空格符所隔开。
保证有解,如果多解,输出a最小的。
输入输出样例
输入样例#1:
12 5
2 5 3 1 3 2 4 1 1 5 4 3
输出样例#1: 
2 7
尺取
代码https://paste.ubuntu.com/p/D4z9HvhYS4/
————————————————————————————————————————————————————————
2019/3/22
题目
最长上升子序列的源码版
https://paste.ubuntu.com/p/WCRmPCF5P8/
_____________________________________________________________________________________________________
2019/3/23
题意
一天蒜头君得到 n 个字符串 si ,每个字符串的长度都不超过 10。
蒜头君在想,在这 nn 个字符串中,以 si
为后缀的字符串有多少个呢?
输入格式
第一行输入一个整数 n。
接下来 n 行,每行输入一个字符串 si
输出格式
输出 n 个整数,第 i 个整数表示以 si 
为后缀的字符串的个数。
n<=1e5
代码 https://paste.ubuntu.com/p/H23DngXqtH/
2019/3/30
题意:
第1行输入 曲子数n 和 最多能选的曲子数k (1≤k≤n≤3⋅10^5)
2 ~ n + 1行 每行输入 歌曲长度t, 这首歌的美丽值b;
要求找到 k 以下的曲子,并且 t的和乘以最小的b的值最大
https://paste.ubuntu.com/p/rCTytQKRfN/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值