返回顶部
摘要: 题意:给你一个正整数$n$,每次可以对$n$加一,问最少操作多少次是的$n$的所有位数之和不大于$s$. 题解:$n$的某个位置上的数进位,意味这后面的位置都可以被更新为$0$,所以我们从高位往低位记录一个$sum$,然后根据情况判断即可. 代码: int t; int s; ll n; char 阅读全文
posted @ 2020-09-05 20:31 _Kolibri 阅读(207) 评论(0) 推荐(0)
摘要: 题意:给你两个数字$x$和$y$,让你构造一个长度为$n$的序列,要求包含$x$和$y$,并且排序后相邻两项的差值相等. 题解:有排序后相邻两项的差值相等可知,构造的序列排序后一定是一个等差数列,而题目给的$x$和$y$的范围很小,所以我们可以从$[1,50]$来枚举公差$d$,这个$d$必须要能整 阅读全文
posted @ 2020-09-05 20:23 _Kolibri 阅读(327) 评论(0) 推荐(1)
摘要: 题意:给你$a$和$b$两个数,每次操作可以是任意一个数$-1$,最多操作$n$,并且$a\ge x$,\(b\ge y\),求操作后$a*b$的最小值. 题解:观察样例并且在纸上推一推发现,我们要让$a$和$b$中,小的那个尽可能的小,然后模拟一下就好了. 代码: int t; ll a,b,x, 阅读全文
posted @ 2020-09-05 20:08 _Kolibri 阅读(197) 评论(0) 推荐(0)
摘要: 题意:给你一个字符串$s$,原字符串为$w$,如果$i>x$且$w_=1$,那么$s_=1$,如果$i+x\le n$且$w_{i+x}=1$,那么$s_=1$,否则$s_=0$.求$w$的一种可能的情况. 题解:对于$s$中的$0$,我们知道,它左右两边距离$x$的地方一定都是$0$,所以我们先假 阅读全文
posted @ 2020-09-05 19:48 _Kolibri 阅读(196) 评论(0) 推荐(0)
摘要: 题意:你和你的随从去偷剑和战斧,你可以最多可以拿$p$重的东西,随从可以拿$f$重的东西,总共有$cnt_$把剑,$cnt_$把战斧,每把剑重$s$,战斧重$w$,问你和随从最多能拿的剑和战斧的总和是多少? 题解:首先,肯定谁轻就先拿谁,我们就令剑是轻的,然后算一下我自己最多能拿多少剑,从$0$开始 阅读全文
posted @ 2020-09-05 19:24 _Kolibri 阅读(165) 评论(0) 推荐(0)
摘要: 题意:给你一个长度为$2*n-1$的字符串$s$,让你构造一个长度为$n$的字符串,使得构造的字符串中有相同位置的字符等于$s[1..n],s[2..n+1],...,s[n,2n-1]$中的位置上的字符. 题解:不难发现,$s$中的奇数位字符就是我们要的答案. 代码: int t; int n; 阅读全文
posted @ 2020-09-05 19:10 _Kolibri 阅读(138) 评论(0) 推荐(0)
摘要: 题意:给出一个长度为$n$的序列$a$,根据$a$构造一个序列$b$,要求: ​ 1.\(b_{1}=0\) ​ 2.对于$i,j(i\le i,j \le n)$,若$a_=a_$,则$b_=b_$ ​ 3.对于$i\in [1,n-1]$,有$b_{i+1}=b_$或$b_{i+1}=b_+1$ 阅读全文
posted @ 2020-09-05 18:26 _Kolibri 阅读(146) 评论(0) 推荐(0)
摘要: 题意:给你一个长度为$3*n$的字符串,要求修改最少的次数,使得字符串中$0,1,2$的个数相同,并且在最少次数的情况下使字典序最小. 题解:贪心,$0$一定放在前面,$1$和$2$放后面,首先统计$0,1,2$的个数,因为题目要求字典序最小,所以我们先从左边开始遍历,如果$2$的个数大于$n/3$ 阅读全文
posted @ 2020-09-05 18:02 _Kolibri 阅读(259) 评论(0) 推荐(0)
摘要: 题意:有$n$扇门,你每次可以攻击某个门,使其hp减少$x$($\le 0$后就不可修复了),之后警察会修复某个门,使其hp增加$y$,问你最多可以破坏多少扇门? 题解:首先如果$x>y$,那么我肯定全部都能破坏,否则,统计$hp\le x$的门的个数,谁先碰门谁先赢,而我是先手,所以能破坏的门的个 阅读全文
posted @ 2020-09-05 17:52 _Kolibri 阅读(209) 评论(0) 推荐(0)
摘要: 题意:给你$n$个数字,用$k$种颜色给他们涂色,要求每个数字都要涂,每种颜色都要用,相同的数字不能涂一样的颜色. 题解:用结构体读入每个数字和它的位置,然后用桶记录每个数字出现的次数,判断是否合法,然后对数字进行排序,从$[1,k]$不断循环的去涂颜色,这样的好处是一定能保证相同数字涂的颜色不同, 阅读全文
posted @ 2020-09-05 17:43 _Kolibri 阅读(172) 评论(0) 推荐(0)
摘要: 题意:有一个$n$X$m$的图,"#"表示障碍物,"."表示道路,只能向右或向下走,问从左上角走到右下角的方案数. 题解:这题可以用bfs来搞,但dp更简单点吧~~.首先,只有当向右和向下都能走时,方案数才会增加,我们用dp表示从起点走到某个单位的方案数,这个单位只能从左边或上边走过来,所以它的方案 阅读全文
posted @ 2020-09-05 17:33 _Kolibri 阅读(167) 评论(0) 推荐(0)
摘要: 题意:给你一张DAG,求图中的最长路径. 题解:用拓扑排序一个点一个点的拿掉,然后dp记录步数即可. 代码: int n,m; int a,b; vector<int> v[N]; int in[N]; int dp[N]; int main() { //ios::sync_with_stdio(f 阅读全文
posted @ 2020-09-05 17:23 _Kolibri 阅读(189) 评论(0) 推荐(0)
摘要: 题意:有两个字符串,求他们的最长公共子序列并输出. 题解:首先跑个LCS记录一下dp数组,然后根据dp数组来反着还原路径,只有当两个位置的字符相同时才输出. 代码: char s[N],t[N]; int dp[10000][10000]; int main() { //ios::sync_with 阅读全文
posted @ 2020-09-05 17:20 _Kolibri 阅读(197) 评论(0) 推荐(0)
摘要: 题意:有$n$个物品,第$i$个物品价值$v_$,体积为$w_$,你有容量为$W$的背包,求能放物品的最大价值. 题解:经典01背包,但是物品的最大体积给到了$10^9$,dp数组下标会造成越界,因此我们不能用dp下标来存物品的体积,但是我们发现,物品的价值范围很小,所以我们反着想,枚举所有可能的总 阅读全文
posted @ 2020-09-05 16:14 _Kolibri 阅读(137) 评论(0) 推荐(0)