[P3817 小A的糖果 小A有N个糖果盒,第i个盒中有a[i]颗糖果. 小A每次可以从其中一盒糖果中吃掉一颗,他想知道,要让任意两个相邻的盒子中加起来都只有x颗或以下的糖果,至少得吃掉几颗糖. [贪心策略]: 因为吃后面的可以影响后面的情况.所以一旦不满足就吃后面的即可. #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ll a[N] , n , x ; int main() { ios_base ::…
[P3662][USACO17FEB]Why Did the Cow Cross the Road II S 求解连续的k个数的最大值,利用前缀和维护即可. #include<bits/stdc++.h> using namespace std; ; int sum[N]; int main() { int n,b,k; scanf("%d%d%d",&n,&k,&b); ,x;i<b;i++){ scanf("%d",&a…
[P1464 Function] [题解] 按照题目意思进行递归即可,但是过程中需要用到记忆化搜索. #include<bits/stdc++.h> using namespace std; typedef long long ll; ll dp[][][]; ll w(ll a,ll b,ll c){ ||b<=||c<=){;} ||b>||c>){,,);} if(a<b&&b<c){ ]==) dp[a][b][c-]=w(a,b,c…
T68402 扫雷 题目链接:传送门 题目描述 扫雷,是一款单人的计算机游戏.游戏目标是找出所有没有地雷的方格,完成游戏:要是按了有地雷的方格,游戏失败.现在 Bob 正在玩扫雷游戏,你作为裁判要判断他是否游戏失败. 具体来说,Bob 正在玩的扫雷游戏有 n×m 个格子,拥有上帝视角的你知道所有的雷埋在哪些方格.Bob 告诉你他会按哪些格子.如果他按的某个格子有地雷,那么他游戏失败,你需要输出是哪一步导致他游戏失败的:如果他按的所有格子都没有地雷,那么他游戏未失败,你只需输出“Good Game…
洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. 第二行有 n+1 个整数,其中第 i 个整数表示第 n-i+1 次项的系数,每两个整数之间用空格隔开. 输出格式 输出共 1 行,按题目所述格式输出多项式. 输入输出样例 输入样例#1: 5 100 -1 1 -3 0 10输出样例#1: 100x^5-x^4+x^3-3x^2+10输入样例#2:…
目录 牛客网NOIP赛前集训营-普及组(第二场) A 你好诶加币 B 最后一次 C 选择颜色 D 合法括号序列 牛客网NOIP赛前集训营-提高组(第二场) A 方差 B 分糖果 C 集合划分 牛客网NOIP赛前集训营-普及组(第二场) 题目链接:https://www.nowcoder.com/acm/contest/165#question A 你好诶加币 设最大值为maxx,最小值为minn 分三种情况: \(1.a > 0 且b > 0\) 会加爆long long,所以化简式子 \(m…
题干 洛谷同款 T2?(看似比T1简单些) 二维前缀和嘛?[多简单 我天天拿二维前缀和水DP] 这是前缀和的预处理 2333 处理出来所有的情况 某个地方要加上mod再%mod 如果没有这一步 那么 70pts 然后附带5%的分值飞走.2333 然后...就A掉了 #include <bits/stdc++.h> using namespace std; typedef long long LL; inline LL read () { LL res = ; ) ; char ch = get…
传送门 解题思路 很长的题,实际上在一个有向图(点有点权)中求一个从起点1到终点n的路径,使得这条路径上点权最大的点与点权最小的点的差值最大(要求必须从点权较小的点能够走到点权较大的点). ——最短路?? ——不像呀. (可是洛谷标签上写着呀) 就是一个写起来像最短路的一个图中的dp. 我们用dis1[i]表示从1号点到第i号点的路径上的最小值,用dis2[i]表示从i号点到第n号点的最大值,最后只需要找出最大的(dis2[i]-dis1[i])即可. 怎么求dis2呢?这里有一种方法——建反图…
题干 2019第一次月赛 我只有255pts T1还是比较水的... 海星 T1一道简单的模拟(就是有坑..导致很多人不能一次性AC 比如说我) _3个坑点 1.位数问题 2.-0 3.0... #include<bits/stdc++.h> using namespace std; typedef long long LL; inline LL read () { LL res = ;) ;char ch = getchar (); ;ch = getchar();} ) + (res &l…
T3做不来.. 直接滚去T4 orz 乍一看 T4是个DP 题干 复杂度??(N^4) 咋优化... 还带一只捆绑 捆绑啥的最烦人了 最后20pts 直接废了 T了 很烦 不过拿到80pts已经很开心了惹 #pragma GCC optimize(1) #pragma GCC optimize(2) #pragma GCC optimize(3) #include<bits/stdc++.h> using namespace std; typedef long long LL; inline…
题干 唯一AC T3 的大巨佬%%% 这题就是个大模拟吧. 题解…
换教室 期望DP 状态: f[i][j][0/1]表示前i节课 提交j个申请 第i个教室不申请/申请(为了确定当前教室,方便转移) 的最小期望 方程: f[i][j][0]=min(f[i-1][j][0]+dis[cla[i-1]][cla[i]],f[i-1][j][1]+dis[ano[i-1]][cla[i]]*k[i-1]+dis[cla[i-1]][cla[i]]*(1-k[i-1]));f[i][j][1]=min(f[i-1][j-1][0]+dis[cla[i-1]][ano[…
[题解] 排个序然后扫一遍进行统计即可. #include<cstdio> #include<algorithm> #include<cstring> #define LL long long #define rg register #define N 200010 using namespace std; ; inline int read(){ ,f=; char c=getchar(); ),c=getchar(); +c-',c=getchar(); retur…
[题解] 我们要做的就是把这些数排序.排序的时候判断两个数是否交换的方法,就是把这两个数相接形成两个长度相同的数字,比较这两个数字的大小. #include<cstdio> #include<algorithm> #include<cstring> #define N 200010 #define rg register #define LL long long using namespace std; int n,m; ]; inline int read(){ ,f…
传送门 解题思路 一看数据范围<1000就坚定了我暴力的决心(不愧是1996年代的题还是t4QAQ) 所以很显然,暴力之中有一点dp的思想,就是把它们像多重背包一样拆分,拆成a1+a2+a3+a4+a5+a6个砝码,然后枚举一遍,如果vis[j]是1也就是j这个数值可以被表示的话,那么vis[j+a[i]]也很显然可以被表示. 这里要注意一下几点: 一开始要初始化vis[0]=1,枚举j时一定要到0,不然输出结果是0 j枚举时要从大到小枚举,否则就变成了完全背包,就会输出1000 最后统计时不能…
奇怪的函数 考虑暴力,每次查询\(O(n)\)扫所有操作,修改\(O(1)\) 这启发我们平衡复杂度,考虑分块. 观察题目性质,可以发现,经过若干次操作后得到的结果一定是一个关于\(x\)的分段函数,图像分为三段,且第一段和第三段斜率为0,中间斜率为1.那么只需要简单地记下拐点的坐标就可以表示这个函数. 简单分类讨论一下,可以线性处理出我们要的分段函数. 那么就很简单了,分\(B\)块维护分段函数,每次修改暴力重构整个块,查询遍历每个块,复杂度为\(O(q(B+\frac{n}{B}))\)取\…
A 对于\(100\%\),直接开个桶统计即可.入门题目. 代码:https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41153707&scrollToDetail=1 B 对于\(100\%\),直接按题目模拟就好.每次两个指针扫一下就是\(O(n)\)的了.整个加起来是\(O(\max(n,len)\times m)\)的复杂度.可以结合代码理解. 代码:https://ac.nowcoder.com/acm/co…
啊...表示一大早还没睡醒就开始打比赛(开始前一分钟的我还在桌子上趴着休眠)...表示题目思路清奇(尤其C题)...但是我还是太蒻了...\(D\)题暴力都没打...题解正式开始之前先\(\%\)一下\(\color{#FF6161}{风浔凌}\)巨佬\(qwq\)...\(320\)真是太强了\(\%\%\%\)... \(A\) 你好诶加币 题目描述:就是简单的\(a+b\)啊(逃) 题目本质:数据范围是\(long\ long\)的\(a+b\)啊(逃) 思路:显然不可能直接算啊...所以…
括号 思路: dp 状态:dp[i][j]表示到i位置为止未匹配的 '(' 个数为j的方案数 状态转移: 如果s[i] == '(' dp[i][j] = dp[i-1][j] + dp[i-1][j-1] 如果s[i] == ')' dp[i][j] = dp[i-1][j] + dp[i-1][j+1] 优化:用滚动数组优化掉i这一维度 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #i…
前三题略 T4: 题目描述 小A有n个长度都是L的字符串.这些字符串只包含前8个小写字符,'a'~'h'.但这些字符串非常的混乱,它们几乎长得互不相同.小A想通过一些规则,让它们长得尽可能相同.小A现在有K次机会,他可以每次机会,可以选择一对字符x,y,让x,y变成等价的字符(注意这里x,y和字符'x', 'y'不是一样的,只是个代号).注意,等价关系是有传递性的.比如小A让'a'和'b'等价, 'b'和'c'等价,那么'a'和'c'等价. 对于两个长度字符串P,Q是等价的,当且仅当对于每一位,…
T1 牛牛刚学习了输入输出,他遇到了一道这样的题目. 输入2个整数a和b 保证输入的a和b在long long范围之内,即满足 -9223372036854775808 <= a, b <= 9223372036854775807 计算a+b的值,即这两个数字的和. 如果a+b在long long范围之内,即满足 -9223372036854775808 <= a + b <= 9223372036854775807 那么输出一行一个整数表示a+b的结果. 如果a+b不在long…
第一场: A-绩点 题目描述 小A刚考完大学考试.现在已经出了n门课的成绩,他想自己先算一下这些课的绩点是多少.设第i门课的他拿到的绩点是gpai,而这门课的学分是sci,那么他的总绩点用下面的公式计算: , 换言之,设S为sci的和,T为gpai与sci的乘积的和.那么小A的绩点就是T除以S的值. 输入描述: 第一行一个整数n. 接下来n行,每行两个数gpai和sci. 输出描述: 输出一行一个实数,表示小A的绩点.输出四舍五入保留1位小数. 输入例子: 3 3.7 2 4.0 2 3.7 5…
链接:https://www.nowcoder.com/acm/contest/165/D来源:牛客网 合法括号序列 键盘上有左括号(,右括号),和退格键-,共三个键. 牛牛希望按键n次,使得输入的字符串恰好一个合法的括号序列. 每按一次左括号(,字符串末尾追加一个左括号( 每按一次右括号),字符串末尾追加一个右括号) 每按一次退格键-,会删掉字符串的最后一个字符, 特别的,如果字符串为空,牛牛也可以按退格,但是什么都不会发生. 合法括号序列的定义和上一场比赛中的C题是一样的 https://w…
链接:https://ac.nowcoder.com/acm/contest/926/D来源:牛客网 在一维坐标系中,给定 n条有颜色的线段,第 i条线段的左右端点分别为 li​和 ri​,此外它的颜色为 ci​. 给定m个查询,每个查询给定一个区间 [a,b],需要求出这个区间完全包含的线段中有多少种不同颜色的线段. 题解:说是普及组,还是需要一些水平的.简单的版本可以参考:最开始学主席树的时候的题目:SPOJ:D-query这些说起来之前那个题也可以这样做的. 即是离线操作,把询问和线段一起…
传送门 解题思路 高维前缀和模板题.首先,求前缀和有两种方式,比如说对于求二维前缀和来说. 第一种 : for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]; 这一种其实就相当于用了容斥原理. 第二种 : for(int i=1;i<=n;i++) sum[i][j]+=sum[i-1][j]; for(int i=1;i<=n;i++) sum[i][…
链接:C 来源:牛客网 牛牛的同学给牛牛表演了一个读心术:牛牛先任意选定一个非负整数,然后进行N次操作:每次操作前,假设牛牛当前的数是a,那么这个操作可能是a = a + x, 或者a = a * x, 或者a = a % x.N轮操作结束后,牛牛的同学成功猜出了牛牛最终的结果.牛牛觉得十分神奇,他现在把N个操作记录了下来,希望你帮忙验证一下这个读心术是不是一定会成功(既无论牛牛最开始选定的是什么数,最终的结果都是一样的). 哇!这题可以乱搞!!! 然后我的乱搞就gg了TAT 然后正解也真的是乱…
面 试 面试 面试 题目描述 牛牛内推了好多人去牛客网参加面试,面试总共分四轮,每轮的面试官都会对面试者的发挥进行评分.评分有 A B C D 四种.如果面试者在四轮中有一次发挥被评为 D,或者两次发挥被评为 C,就不会通过面试.如果面试者没有一次被评为 D,并且有三个或以上的 A,则会获得 special offer.其余情况会获得普通 offer. 现在告诉你一些面试者的发挥,请你算一算,他们的面试结果分别是什么. 输入 第一行输入一个 T,代表面试者的个数. 接下来有 T 行,每行都有一个…
目录 T1 面试 描述 题目描述 输入描述: 输出描述: 题解 代码 T2 纸牌游戏 描述 题目描述 输入描述: 输出描述: 题解 代码 T3 涨薪 描述 题目描述 输入描述: 输出描述: 题解 代码 T4 描述 题目描述 输入描述: 输出描述: 题解 代码 T1 面试 描述 题目描述 牛牛内推了好多人去牛客网参加面试,面试总共分四轮,每轮的面试官都会对面试者的发挥进行评分.评分有 A B C D 四种.如果面试者在四轮中有一次发挥被评为 D,或者两次发挥被评为 C,就不会通过面试.如果面试者没…
最近没有更新博客,全是因为英语,英语太难了QWQ 洛谷春令营的作业我也不会(我是弱鸡),随机跳了2个题,难度不高,还是讲讲吧,学学新算法也好(可以拿来水博客) 第一题就是这个小明的游戏 小明最近喜欢玩一个游戏.给定一个 n×m的棋盘,上面有两种格子#和@.游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步能向上,下,左,右四个方向移动一格.如果移动到同一类型的格子,则费用是0,否则费用是1.请编程计算从起始位置移动到目标位置的最小花费. 输入格式 输入文件有多组数据. 输入第一行包含两…
这个题复制过来真的有点恶心,懒得手打,以后再搬题面吧. 今天我双更了,AC这个题我就完成某谷春令营第一课的作业了(假的) 这个题是个双指针.非常友善.一直往里读入就可以了,遇见不是一条船的乘客输出这一条船前86400秒有多少不同国籍的人,然后从末尾查看,时间差大于等于86400的人清除,切记以上两步不要搞混.这个方法每个乘客只会入队出队一次,乘客最多只有300000人.是完全可行的. 接下来就是人见人爱的代码了: #include<iostream> #include<cstdio>…