链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 经过了选号和漫长的等待,处女座终于拿到了给小姐姐定制的手环,小姐姐看到以后直呼666! 处女座其实也挺喜欢6这个数字的,实际上他做手环的时候选取的k=6.所以他对于包含数码6的数字极其敏感.每次看到像4567这样的数字的时候他的心就像触电了…
链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 题目描述 经过了选号和漫长的等待,处女座终于拿到了给小姐姐定制的手环,小姐姐看到以后直呼666! 处女座其实也挺喜欢6这个数字的,实际上他做手环的时候选取的k=6.所以他对于包含数码6的数字极其敏感.每次看到像4567这样的数字的时候他的心就像触电了一样,想起了小姐姐. 现在你要给处女座展示一系列数字,你想知道他的内心会激动多少次.对于同一个数字,他最多只会激动一次,即如果这个数是66666,他…
链接:https://ac.nowcoder.com/acm/contest/329/G 来源:牛客网 题目描述 经过了选号和漫长的等待,处女座终于拿到了给小姐姐定制的手环,小姐姐看到以后直呼666! 处女座其实也挺喜欢6这个数字的,实际上他做手环的时候选取的k=6.所以他对于包含数码6的数字极其敏感.每次看到像4567这样的数字的时候他的心就像触电了一样,想起了小姐姐. 现在你要给处女座展示一系列数字,你想知道他的内心会激动多少次.对于同一个数字,他最多只会激动一次,即如果这个数是66666,…
题目链接:传送门 思路:数位dp的记忆化搜索模板 从高位向低位枚举,逐位确定每一位的6的个数,dp[i][s]表示处理到第i条边,状态为s时的数字的个数. 注意,要使用long long类型. #include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef long long LL; LL a[],dp[][],x,y; LL dfs(LL pos,LL statue,…
题目链接:传送门 思路:每隔2^i(0<=i<=INF)就有一条路径,所以可以将从头到尾的路线视为一个有向图, 将ai,bi以此输入,然后将路径从小到大排序,不断更新路径. __builtin_popcount (unsigned u)函数可以以O(1)的复杂度计算u的二进制中的数字1的个数. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #in…
题意: 传送门 给你\(A,B,C\),要求你给出有多少对\((x, y)\)满足\(x\in [1,A],y\in [1,B]\),且满足以下任意一个条件:\(x \& y > C\)或者\(x \oplus y < C\). 思路: 数位\(DP\),以前做的数位\(DP\)只是和一个数相关,今天是和两个数相关,有点神奇.这里我开了九维,第\(i\)位\(x\)是\(j\),\(y\)是\(k\),对\(第一种\)情况,对\(第二种\)情况,\(x\)到达上界,\(y\)到达上界,…
写了一会不想写了... A-小Y和小B睡觉觉 链接:https://www.nowcoder.com/acm/contest/57/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 Brother Ya和Brother Bo现在要开始睡觉啦! 假设当前的时间为yyyy-mm-dd hh:mm:ss,他们两个会一觉睡t秒,请问他们睡醒的时刻是几天以后(过了晚上12点就算一天)?…
Problem 链接:https://ac.nowcoder.com/acm/problem/21674 来源:牛客网 牛牛最近在学习初等数论,他的数学老师给他出了一道题,他觉得太简单了, 懒得做,于是交给了你, 题目是这样的: 有一堆数,问你能否从中选出若干个数使得这些数的最小公倍数为x 输入描述: 第一行输入一个整数n (1 ≤ n ≤ 50) 第二行输入n个整数ai (1 ≤ ai ≤ 109) 第三行输入一个整数x (2 ≤ x ≤ 109) 输出描述: 如果可以,输出"Possible…
牛客练习赛53 超越学姐爱字符串 链接:https://ac.nowcoder.com/acm/contest/1114/A来源:牛客网 超越学姐非常喜欢自己的名字,以至于英文字母她只喜欢"c"和"y".因此超越学姐喜欢只含有"c"和"y"的字符串,且字符串中不能出现两个连续的"c".请你求出有多少种长度为n的字符串是超越学姐喜欢的字符串.答案对1e9+7取模. 输入描述: 输入一个整数n.1<=n&…
LINK:牛牛与序列 (牛客div1的E题怎么这么水... 还没D难. 定义一个序列合法 当且仅当存在一个位置i满足 $a_i>a_,a_j<a_$且对于所有的位置i,$1 \leq a_i\leq k$ 人话解释:一个合法序列 每个数字都在1~k之间 且有两个相邻数字是递增关系两个相邻数字是递减关系. 发现我们枚举某两个位置递增递减再进行计数会重复 而且很难减掉重复方案.这个不能代表元容斥. 考虑总方案-不合法方案.发现不合法方案就两种不增,不降. 显然不增翻转一下就是不降 考虑求出不增的方…
题目链接:传送门 思路:由于MOD只有9983大小,所以四位小写字母的字符串组合有26+26^2+26^3+26^4=475254种组合. 所以只要每次枚举出从1到475254中的hash值对应的字符串记录在数组中,然后以O(1)的方式查找即可. 注意: (1)每个字符串对应一个唯一的值,所以按照字符串的顺序递增来组成hash值. (2)注意index会与其他函数名称冲突,造成编译错误,要改一下. #include<bits/stdc++.h> using namespace std; ; ;…
题目链接:传送门 知识点: (1)三个点,三角形求面积公式 (2)精度问题: double 15-16位(参考文章) float 6-7位 long long 约20位 int 约10位 unsigned int 是int的两倍(参考文章) (3)nth_element()函数 思路:一开始想直接暴力求面积,然后面积排序,后来有发现面积不能是0,可以重复, 然后排序求出第k大的值,结果没注意double的位数不能精确到达到18位,然后又想四舍五入, 对尾数进行了处理,还是没过.看来题解才发现最后…
题目链接:传送门 思路: 考虑每一列有2种颜色,总共有n行,每一行的第一个格确定颜色,由于左右颜色不相同,后面的行就确定了. 所以总共有2^n中结果. 由于n太大,所以要用到费马小定理a^n%mod=a^(n%(mod-1))%mod,所以先求出a的指数,然后用快速幂求解就好了. #include<iostream> #include<cstdio> #include<cstring> #include<cmath> typedef long long LL…
题目链接:传送门 思路:欧拉函数的性质:前n个数的欧拉函数之和为φ(n)*n/2,由此求出结果. 参考文章:传送门 #include<iostream> #include<cmath> #include<cstdio> #include<cstring> using namespace std; typedef long long LL; ; LL POW(LL a,LL b) { LL ans=; while(b) { ) ans=ans*a%MOD; a…
https://www.nowcoder.com/acm/contest/158#question 这题问最长的严格连续递增序列的最长长度是多少? 最开始感觉这道题不可做,因为有1e5个点,还有1e5的操作数 可是后来发现...这题水的一匹a[i]和y都是在1-100的范围内部 不如这样,我用一个d[i]数组记录连续递增的长度大小,用cnt[i]数组表示数组里面这个长度的连续递增序列的个数,由于这个序列a[i]范围很小,因此最长连续的长度一点小于等于100, 我们可以直接改变单点值,后面减去这单…
题目描述   https://www.nowcoder.net/acm/contest/78/E 已知有一个n+1个数的数列,对于给定的A0和An ,当i满足当1<=i<=n-1时有        现在小星想知道对于这个数列一段区间的和.   输入描述: 第一行输入四个数 n,A0,An,Q 接下来Q行 每行输入两个数l,r 0=< n,A0,An<=1e9,Q<=100000 0<=l<=r<=n 输出描述: 对于每组查询输出Al到Ar的和 示例1 输入…
Governing sand 题意 森林里有m种树木,每种树木有一定高度,并且砍掉他要消耗一定的代价,问消耗最少多少代价可以使得森林中最高的树木大于所有树的一半 分析 复杂度分析:n 1e5种树木,并且砍树肯定是从便宜的砍,有区间性,可以考虑线段树,每次枚举一种高度,先把高于其高度的全部砍掉,再砍低于他的使得满足大于一半的条件,砍低于他的肯定是从花费低的开始砍,所以就是一个选前k小的问题,这样就是一颗权值线段树的事情了 坑点:不同种的树木可能高度相同 #include<bits/stdc++.h…
题目链接https://www.nowcoder.com/acm/contest/158/A 无语...这题很迷啊,原谅我的菜,刚开始想用预处理欧拉筛和前缀和,可是这题太血崩了,这样一样要遍历,1-e9的范围,后来翻网上题解,发现其实是个还算经典的问题 这题可以用离散和做嘛,如何离散和???先别着急,我们先想想,为啥这题不用欧拉函数做... 我们平时欧拉函数的题,都还能算比较难的题了,这题不仅仅加大了范围,还要求1-n的因数个数,我们只有另寻其它方法 我们不如写出1-10的因数组成(比赛一定要动…
题目链接:传送门 思路: 二维树状数组, vector(first,last)函数中assign函数相当于将first中的函数清空,然后将last中的值赋值给first. 参考文章:传送门 #include<iostream> #include<cstring> #include<cstdio> #include<vector> using namespace std; ; vector <vector <int> >vc; int…
题目链接:传送门 思路:插入不同的字符与删除不同的字符相同,所以每次判断到不同位置时将这个字符删除然后判断是否为回文串即可, 如果一开始就是回文串,那么答案也是yes. #include<iostream> #include<cstdio> #include<string> using namespace std; string ss,s1,s2; int pos1,pos2; bool pd(string str) { int i,j,len=str.length()…
题目链接:传送门 思路:主要是n=1,m=2或者n=2,m=1时,不是-1. #include<iostream> #include<cstdio> #include<cstring> using namespace std; int main(void) { int n,m,i,j; while(~scanf("%d%d",&n,&m)){ ){ ) printf("RL"); else printf("…
最小相似度 题目大意:对于位数相同的两个二进制串,SIM(A,B)为它们的相似度,也就是A^B中0的个数.现在给定一堆串,找出一个T使得max{SIM(S1,T),SIM(S2,T),......,SIM(Sn,T)}最小,不过不用输出T,只需要输出那个最小值 正解应该是FWT,不过没学过,所以也没做出来,而给出的题解的是用bfs做的,还真没想到能够用搜索做,刚开始看也不理解,不过研究了一下还是,挺好理解的. 首先,也是为什么可以用bfs的一点,就是串的长度最大只到20,也就是220=10485…
很妙的一个树形DP问题,简单考虑了一下就过了 https://ac.nowcoder.com/acm/contest/2927/E 主要就是推公式(公式有点长呀) 大概就是这样,其实挺简单的. #include<iostream> #include<cstring> #include<algorithm> #include<vector> using namespace std; typedef long long ll; const int maxn =…
正题 题目链接:https://ac.nowcoder.com/acm/contest/7609/C 题目大意 给出\(n\)个点的一棵树,\(m\)个时刻各有一个操作 标记一个点,每个点被标记后的每一个时刻会标记掉周围的点. 删去所有点的标记 询问一个点是否有标记 解题思路 考虑没有二操作怎么搞,可以理解为标记代表起点,然后跑一遍最短路求出每个点被标记的最短时间. 如果有二操作的话是不是就很麻烦了,因为它像一个分割符一样切开两段操作. 那么就直接分开操作就好了!对于每段操作的所有点建立虚树,然…
一共有 n个数,第 i 个数是 xi  xi 可以取 [li , ri] 中任意的一个值. 设 ,求 S 种类数. 输入描述: 第一行一个数 n. 然后 n 行,每行两个数表示 li,ri.   输出描述: 输出一行一个数表示答案. 示例1 输入 复制 5 1 2 2 3 3 4 4 5 5 6 输出 复制 26 备注: 1 ≤ n , li , ri ≤ 100 题意: 给出n个区间,你可以随机在每个区间挑一个数,然后他们的平方和,求每个区间挑数的所有情况平方和的种类数,当然就是平方和的数重复…
题目链接:https://www.nowcoder.com/acm/contest/206/F 题意:一棵 n 个点的树,根为 1,重儿子到父亲的费用为 0,其余为 1,问所有点到 1 的最大总费用是多少. 题解:ans[i]为 i 个点时候的最大费用,dp[i][j]表示若干棵树总大小为 j 并且每棵树的大小不超过 i 时的最大费用,每次循环首先枚举重儿子的大小更新 ans[i],而ans[i]更新后会对每棵树大小最大为 i 的dp数组产生影响,枚举若干棵树的总大小dp[i][j]. #inc…
题意 给出n个点,每个点有a,b两个属性,让你从左下角到右上角划一条线,线的左边每个点的贡献是\(a_i\),线的右边每个点的贡献是\(b_i\),使得两部分的总和最大. 分析 找一条折线将点分割开,使总和最大. 把y离散化,然后点按x排序,设\(dp[i]\)为经过第\(i\)个点(该点当作B集合中的点)的折线的权值,之前的点中在这个点上面的点dp值要加上\(b[i]\),之前的点中在这个点下面的点的dp值要加上\(a[i]\) \(dp[i]=max(dp[i],dp[k]+b[i]),y[…
 找小"3" 序号:#40难度:困难时间限制:1000ms内存限制:10M 描述 给定一个奇数n,可得到一个由从1到n的所有奇数所组成的数列,求这一数列中数字3所出现的总次数.例如当n=3时,可得到奇数列:1,3,其中有一个数字3,故可得1 输入 一个奇数.表示n,0<n<9999999999. 输出 一个整数,表示从 1 到 n 的奇数列中,数字 3 出现的次数. 输入样例 1 3 35 复制样例 输出样例 0 1 7 #include<iostream> #…
牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ ​ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, ​ 1 l r 询问区间[l,r]内的元素和 ​ 2 l r 询问区间[l,r]内的 元素的平方 和 ​ 3 l r x 将区间[l,r]内的每一个元素都乘上x ​ 4 l r x 将区间[l,r]内的每一个元素都加上x 输入描述: 第一行两个数n,m 接下来一行n个数表示初始序列 就下来m行每行第一个数为操作方法opt, 若opt=1或者opt=2,则之后跟着两个数为l,r 若op…
传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费  x_i 的时间,同时完成第 i 个任务的时间不能晚于 y_i ,时间掌控者向小A提出了一个条件:如果完成第 i 个任务的时间本应是 t ,但小A支付 m 个金币的话,他可以帮助小A在 t-m*z_i  时刻完成第 i 个任务, z_i 是时间参数,会在输入中给出 小A想按时完成所有任务,请你帮他制定一个花费金币最少的方案 注意:不能使得某个任务…