洛谷
洛谷题解
Wu_while
一名退役OIer
展开
-
洛谷 CF1556A 【A Variety of Operations】
题意你有两个数 aaa 和 bbb,初始值均为 000,你可以任选一个整数 kkk,进行以下三种操作中的一种:将 aaa 和 bbb 都加 kkk;将 aaa 加 kkk,将 bbb 减 kkk;将 bbb 加 kkk,将 aaa 减 kkk;对于给定的 ccc 和 ddd,求最少的操作数使得 a=c,b=da=c,b=da=c,b=d,若无法得到,则输出 −1-1−1。分析我们先假设能够使得 a=c,b=da=c,b=da=c,b=d,如果最后一步是操作2或操作3,那么倒数第二步完成后原创 2021-09-08 09:15:44 · 160 阅读 · 0 评论 -
洛谷 CF1260A 【Heating】
题意我们可以将原题转化为这样一个较为形象的问题:你可以任选 cic_ici 个数,使得它们的和为 sumisum_isumi,求一种方案使得所选的数的平方和最小。分析我们用一些简单的初中数学知识进行推导:设两个数a,b∈(0,+∞)a,b\in(0,+∞)a,b∈(0,+∞)∵(a+b)2=a2+b2+2ab,a>0,b>0∵(a+b)^2=a^2+b^2+2ab,a>0,b>0∵(a+b)2=a2+b2+2ab,a>0,b>0∴a2+b2<(a+原创 2021-09-08 09:15:02 · 112 阅读 · 0 评论 -
洛谷 CF1551B1 【Wonderful Coloring - 1】
题意将一个字符串的每个字符染色,满足以下条件:每个点或被染成红色,或被染成红色,亦或不被染色同色的任两个字母不相同染成红色的字母数量等于染成绿色的字母数量分析我们来看一下第二条和第三条。这表示了什么?表示对于每种字母,最多填一个红色,一个绿色。也就是说,当这个字母的数量不少于 222 时,它对答案的贡献为 111。如下:最多填一个红色和一个绿色:而对于只有一个的字母,每一个字母填红色,就要有一个字母填绿色。也就是说,设所有个数为 111 的字母的数量为 tottot原创 2021-09-08 09:14:18 · 146 阅读 · 0 评论 -
洛谷 P7754 【[COCI2012-2013#3] SAHOVNICA
题意概括画出 r×cr \times cr×c 的X、.相间的棋盘,棋盘的每个格子由大小为 a×ba \times ba×b 的,只有X和.中的一种字符的字符矩阵构成。算法分析这个题其实也不是很好想,容易糊涂。我们可以发现,对于每一行,有下列两种情况:连续 bbb 个X,然后连续 bbb 个.,然后再连续 bbb 个X,然后……连续 bbb 个.,然后连续 bbb 个X,然后再连续 bbb 个.,然后……也就是说,我们可以 if 两种情况:先X后. 以及 先.后X。那又应该怎样讨原创 2021-09-08 09:10:43 · 201 阅读 · 0 评论 -
洛谷 CF1531A 【Зингер | color】
题意你有一个物品,初始时它的颜色是 blue 且状态为未上锁。接下来依次有 nnn 次操作,每次操作由一个字符串给出。若这个字符串是 lock:将它的状态改成上锁。若这个字符串是 unlock:将它的状态改成未上锁。若这个字符串不是 lock 或 unlock:若它的状态为未上锁,则将它的颜色改成这个字符串。你需要输出物品最终的颜色。0≤n≤1000 \leq n \leq 1000≤n≤100。分析我们只需一个bool类型的变量来表示当前是否上锁,初始化为 000 表示未上锁用一个字符串来记原创 2021-09-08 09:10:01 · 118 阅读 · 0 评论 -
洛谷 CF1466B 【Last minute enhancements】
我们可以对xix_ixi做加111的操作,我们思考一下操作和不操作的效果:若xi=xi−1x_i=x_{i-1}xi=xi−1,则对xix_ixi加111可以使它们不相等,使得答案增加,而不操作则不会影响答案,因此操作优于不操作;若xi≠xi−1x_i\ne x_{i-1}xi=xi−1,则加111可能会减小或不影响答案,而不操作一定不影响答案,因此不操作优于操作;所以我们得出了这样的算法:若xi=xi−1x_i=x_{i-1}xi=xi−1,xix_ixi加1原创 2021-09-08 09:08:43 · 121 阅读 · 0 评论 -
洛谷 P7540 【[COCI2009-2010#1] DOMINO】
题目传送门这篇题解主要面向初学者。大佬再见求和符号∑\sum∑∑i=0n\sum_{i=0}^n∑i=0n表示所有0≤i≤n(i∈N)0≤i≤n(i\in N)0≤i≤n(i∈N)的iii的和。例如:∑i=15\sum_{i=1}^5∑i=15意为1+2+3+4+51+2+3+4+51+2+3+4+5。求所有满足 $0 \le x\le y $ 的非负整数对 (x,y)(x,y)(x,y) 中,∑x+∑y\sum{x} + \sum{y}∑x+∑y 是多少意为所有满足 $0 \le x\原创 2021-09-08 09:07:49 · 232 阅读 · 0 评论 -
洛谷 P7227 【[COCI2015-2016#3] ESEJ】
按照惯例这里需要一个传送门挨个分析题意:这篇文章至少 aaa 个词,最多 bbb 个词。——限定了范围,直接造bbb个比较方便。每个单词至少 111 个字母,最多 151515 个字母。——显然一个正常的人都不会用151515个字母的。文章至少包含 b2\dfrac{b}{2}2b 个不同的单词。——还是全部都不同来的容易。分(hu)析(che)完毕。众所周知,从111到bbb的自然数是绝对不会有重复的。那为什么不用数来代替字母呢?将 000 到 999 的数与 aa原创 2021-09-08 09:02:05 · 268 阅读 · 0 评论 -
洛谷 P7258 【[COCI2009-2010#3] SLATKISI】
题目传送门题目里对输入的描述似乎不太精确:Mirko最小的钞票上的零数Mirko 最小的钞票上的零数Mirko最小的钞票上的零数指的是101010的指数(即10310^3103,10410^4104,10510^5105上面的333,444,555)。题意分析通过对题意的分析,我们可以将题意简化成:将数字ccc四舍五入精确到kkk位顿时高大上的橙题就变成了小学数学题(这可能就是此题没有算法标签的原因之一)考虑问题众所周知C++C++C++的整型除法自带向下取整,所以不需要写复杂的四舍五入函原创 2021-09-08 08:59:06 · 169 阅读 · 0 评论 -
洛谷 P7259 【[COCI2009-2010#3] SORT】
题目传送门思考看到题目第一感觉是桶排,然而看到1≤C≤1091≤C≤10^91≤C≤109嗯······就很NICE1≤N≤1031≤N≤10^31≤N≤103然后就想到了map(不知道的可以看这里)尝试使用mapmapmap进行排序然而无果对于这道题来说,mapmapmap能做而普通数组不能做的就是存下数字的次数和出现位置。而如果将其中一个存到mapmapmap里,另一个存到普通数组里,然后将两者挂钩,就能通过对数组的排序来实现整体的排序。代码(具体做法见注释)#include&原创 2021-09-07 16:30:25 · 192 阅读 · 0 评论 -
洛谷 P6867 【[COCI2019-2020#5] Politicari】
直接模拟模拟代码#include<iostream>#include<cstdio>#define ll unsigned long long//不开long long 见祖宗using namespace std;ll k;int n,a[510][510];int u,v,t;int main(){ cin>>n>>k; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) c原创 2021-09-07 16:28:09 · 301 阅读 · 0 评论 -
洛谷 P7174 【[COCI2014-2015#4]CESTA】
思路根据小学数学教科书我们知道303030的倍数必定是101010的倍数,也是333的倍数;101010的倍数最后一位必定是000,333的倍数各位之和也是333的倍数。然后再来看数据范围:对于 100100100% 的数据,nnn 的位数不超过 10510^5105 。显然这题要用字符串了。那么怎样使结果最大呢?排序。排序之后各位之和不变,所以依然是333的倍数,而排序之后000一定在最后,所以依然是101010的倍数。所以排序之后的数也是303030的倍数。代码#include原创 2021-09-07 16:24:46 · 258 阅读 · 0 评论 -
洛谷 P7199 【[COCI2019-2020#1] Trol】
一、直接模拟看到题第一想法就是直接模拟,毕竟只是一道红题。模拟代码:#include<iostream>#include<cstdio>#define ll unsigned long longusing namespace std;int q;ll l,r;ll ans;ll f(ll n){ int r; int a=0; while(n/10!=0) { a=0; while(n!=0) { r=n%10; a+=r;原创 2021-09-07 16:23:03 · 327 阅读 · 0 评论