刷题
YikNjy
难留少年时,总有少年来。
展开
-
Codeforces Round #612 (Div. 1)
Codeforces Round #612 (Div. 1) A. Garland原创 2022-10-17 20:30:46 · 283 阅读 · 0 评论 -
线性dp(拆分篇)
acwing 900 整数拆分acwing 278 数字组合acwing 279 自然数拆分acwing 3428 放苹果acwing 1050 鸣人的影分身前三题总结看这里注:数可以看作一些物品(在下说明中)这些题目的特征就是将一堆数量为N的物品拆分成几堆数量不同的物品,在线性dp中大多数都是用物品去填背包的,所以拆分数稍微会难想一些,一般类似于数的拆分或者是分物品的题目可以划分为线性拆分类这种题目的类型与区间dp还是有些不同的,不知道为什么数的...原创 2022-06-29 15:24:52 · 221 阅读 · 0 评论 -
Codeforces Round #791 (Div. 2)A-C
A .AvtoBus题意:给你一个数由4 6组成最多/少由几个数组成题解:4x+6y=num4(x+y)+2y=num;当x或y>=1时 num>=4,且为偶数。num只能由46组成且最多的数最多只能有一个6因为偶数个6可以由三个4组成最少的同理Exampleinput44724998244353998244352output1 1-14 6166374058999707392 249561088499561088看样例数据范围1e18记得开longl原创 2022-05-15 20:57:16 · 439 阅读 · 5 评论 -
AcWing 4418. 选元素
给定一个长度为 n 的整数序列 a1,a2,…,an。请你从中挑选 x 个元素,要求:原序列中的每一个长度为 k 的连续子序列都至少包含一个被选中的元素。满足条件 1 的前提下,所选 x 个元素的相加之和应尽可能大。输出最大可能和。输入格式第一行包含三个整数 n,k,x。第二行包含 n 个整数 a1,a2,…,an。输出格式如果无法满足题目要求,则输出 −1。否则,输出一个整数,表示所选元素的最大可能和。数据范围前三个测试点满足 1≤k,x≤n≤6。所有测试点满足 1≤k,x≤n≤原创 2022-05-08 10:30:38 · 179 阅读 · 0 评论 -
Round #782 (Div. 2)
A - Red Versus Blue题意:给你三个数 让你构造一个由RB组成的字符串,要求连续的R最少,给你长度n,rb的数量;题解 :其实就是平均分配将R平均分成 b+1份,但是题目要求连续的R最少所以设每一份数量为x(平均分成的)那么满足x * ( b+1 ) + 剩余的 = n;要让 x 和剩余的最大值最小n / (b+1) 和 res = n % ( n / (b+1) )因为均分所以 (res - 块数量 )< 块数但是res可能大于块数ex 8 2 8/3=原创 2022-04-24 14:03:21 · 1019 阅读 · 0 评论 -
有序的数组中的查找最大小于数
仔细描述一下我们需要解决的问题:给你一个有序的序列,让你查出小于每个元素的最大坐标值:算法1 :暴力(时间O(n^2) 空间O (1) ):直接while一遍双指针算法简单代码不附。算法2 :前缀和(时间 O(n) dp思想分情况讨论 空间 O(n) ):拿一个数组记录每一个元素前有多少个小于其的数:if(a[i]!=a[i-1]){ s[i]=s[i-1]+1;}else{ s[i]=s[i-1];} 算法3 : 二分查找 ( 时间 O(n * log(原创 2021-10-25 21:07:36 · 583 阅读 · 0 评论 -
dp练习 hdu 2084
hdu2084点这里题目大意:中问题自己看。/* * hdu 2084 dp * dp:当前阶段最优解,多阶段最优解,多决策最优解。 * dp[i][j],表示走到第i行第j列所需最大路程。 * dp[i][j]由上和上右来,所以方程为: dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+f[i][j];*/////二维dp#include<iostream>#include<algorithm&原创 2021-08-12 10:38:14 · 76 阅读 · 0 评论 -
构图acwing3775
链接题目题意:就是给你n个数,叫你构造出所有点不相对应的组合。解法:假设成功补全所有f[i].i|1~n均出现且只出现一次 --> 所有点出度为1f|1~n均出现且只出现一次 --> 所有点入度为1==> 补全后图形为若干个环, 称为环图.#include<iostream>#include<cstring>using namespace std;const int N=210010;int e[N],ne[N];原创 2021-08-09 17:20:25 · 58 阅读 · 0 评论 -
冠军问题
*****冠军*****有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。球赛的规则如下:如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了若干场撕杀之后,确定是否已经实际上产生了冠军。Input...原创 2021-01-20 18:03:25 · 497 阅读 · 0 评论 -
hdu4841圆桌问题
圆桌#include<stdio.h>#include <string.h>int n,m,i,j,k,s=0;int main(){while(~scanf("%d%d",&n,&m)){char x[100000]={’\0’};i=0;k=0;s=n;while(n){if(x[i]!=‘B’){x[i]=‘G’;k++;}if(km){x[i]=‘B’;k=0;n–;}i++;if(is2)i=0;}fo原创 2021-01-17 15:02:18 · 88 阅读 · 0 评论 -
滑动窗口队列
添加链接描述给定一个大小为 n≤106 的数组。有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。你只能在窗口中看到 k 个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为 [1 3 -1 -3 5 3 6 7],k 为 3。窗口位置 最小值 最大值[1 3 -1] -3 5 3 6 7 -1 31 [3 -1 -3] 5 3 6 7 -3 31 3 [-1 -3 5] 3 6 7 -3 51 3 -1 [-3 5 3] 6 7 -3 51 3 -1 -3 [5原创 2021-03-14 16:24:10 · 292 阅读 · 0 评论 -
硬币问题poj1013简单模拟
有12枚硬币。其中有11枚真币和1枚假币。假币和真币重量不同,但不知道假币比真币轻还是重。现在,用一架天平称了这些币三次,告诉你称的结果,请你找出假币并且确定假币是轻是重(数据保证一定能找出来)。输入样例:ABCD EFGH evenABCI EFJK upABIJ EFGH even输出样例:K is the counterfeit coin and it is light.题解:题目的意思是找出假币,然后判断假币的重量与真币大小,但是想要找到假币的方法是判定,所以我们应该一个一个枚举,利原创 2021-04-16 17:19:27 · 425 阅读 · 0 评论 -
求解一元二次方程 ax2+bx+c=0 的跟(a 不等于 0),a,b,c 均为实数,其值由键盘输入。
31.求解一元二次方程 ax2+bx+c=0 的跟(a 不等于 0),a,b,c 均为实数,其值由键盘输入。#include<math.h>#include<stdio.h>#include<conio.h>main() { double a,b,c; double s,x1,x2; printf("please enter a,b,c:\n"); scanf("%lf%lf%lf",&a,&b,&c);原创 2021-04-15 19:41:05 · 3511 阅读 · 0 评论 -
杭电2577(模拟)
题目点这里(杭电2577)题意:给你一段字符算出最小按键次数,并且最后capslk要换成小写状态题解:仔细想想题目情况分为以大致的两种1.当开关为 大写时(1)当要打的字符为大写时,因为已经设置了大写,所以不需要考虑。(2)当要打的字符为小写时,又分两种情况2.1:当前要打的字母为小写,且下一位字母为大写时,只需要按shift键加上字母键即可2.2:当前要打的字母为小写,且下一位字母为小写时,此时需要按capslk切换成小写状态即可,虽然两次的shift加上字母和capslk键开关次数相同原创 2021-05-06 13:57:17 · 76 阅读 · 0 评论