代码部队睡前故事
工业革命后,中产阶级家庭越来越多,父母和孩子开始拥有各自独立的卧室和作息时间。为了在睡前和孩子有一段温馨的专属时光,讲故事就成了一个完美的睡前仪式。“Bedtime story”一词由路易丝·钱德勒·莫尔顿在她1873年出版的《睡前故事》一书中首次提出。
如果你现在要睡觉的话,我可以给你讲一个故事:
小狐狸的瓶盖
从前,有一只特别的小狐狸,名叫小橘。
小橘和别的小狐狸不一样。别的狐狸喜欢追兔子、偷鸡蛋,但小橘喜欢——捡瓶盖。可乐的、果汁的、汽水的,圆圆的、亮晶晶的,他都小心翼翼地叼回家,用溪水洗干净,摆在窗台上。
可是森林里的小动物们都笑话他:“小橘小橘,捡破烂!瓶盖瓶盖,不值钱!”
小橘耷拉着耳朵,把瓶盖一个个收进小布袋里。那天傍晚,他坐在老橡树下,对着瓶盖嘀咕:“要是你们能变成星星就好了……”
话还没说完,一颗瓶盖突然“叮”的一声,自己飞了起来,闪烁着柔和的银光,像一颗小小的星星。接着,第二颗、第三颗……所有的瓶盖都飘了起来,围着小橘缓缓旋转,像一条流动的银河。
小橘惊讶得张大了嘴巴。
这时,一只老猫头鹰从树洞里探出头:“别怕,孩子。旧瓶盖装过很多不同的饮料——甜的、酸的、带气的。它们听过人们的欢笑声、碰杯声,甚至悄悄话。每一个瓶盖都储存了一点点快乐的记忆。当有人真心希望它们发光时,它们就会变成星星。”
小橘看着空中闪闪发光的“星星”,心里暖暖的。他轻轻吹了一口气,那些瓶盖星星就缓缓飘向森林各处:有的挂在蜘蛛网上,像露珠;有的落在兔宝宝枕边,像夜灯;还有的飘到山顶,远远望去,就像真正的星星落到了人间。
那天以后,森林里的小动物们不再笑话小橘了。每当夜晚来临,他们都会抬头寻找那些会飞的瓶盖星星。而小橘呢,还是喜欢收集瓶盖——只不过现在,他收集的不再是垃圾,而是等待被点亮的一点点光。
窗外的风轻轻吹着,月亮挂在树梢,像一个大大的、银色的瓶盖。
不过,作为一个老资历,你恐怕更喜欢代码部队队员都爱听的真正的睡前故事:CF simple greedy[EDITED]。
CF2238D Storming Arasaka
这道题是因数分解相关的,通常从质数入手。首先发现每个质数必须独立一层,并且最优时堆在层的前缀。
然后,从质数出发尝试求层数的一个下界。一个想法是以任意质数 \(p\) 为起点,每次乘任意一个 \(n\) 的质因数并前进一层,最终到达 \(n\)。每个起点的前进次数相等。
猜测这个下界就是答案。事实如此。分解 \(n=\prod\limits_{i=1}^m e_i^{c_i}\),答案是 \(m+(\sum c)-1\)。
CF2237D Fullmetal Bitchemist
一个非常重要的思想是“必要证充分”。
二个非常重要的思想是“量化证条件”。
判定优美性,先量化。令 \(0,1\) 分别为 \(+1,-1\),优美串的 \(sum\) 必然不是 \(3\) 的倍数。
还不够,一个长度大于 \(1\) 的交替 01 串不能操作,必须排除。
以上两个综合即充要,随便计数。
CF2233C Cost of a Bracket Sequence
答案的理想形态:一串右括号接一串左括号。
答案的计算形式:\(len-cnt\),其中 \(cnt\) 是不能匹配的括号个数。
答案的下界是 \(m-k\),其中 \(m\) 是原序列匹配的括号个数。此下界可取:
- 找到 \(j=\arg\max l_i+r_{i+1}\),其中 \(l,r\) 分别是一位置左侧右括号个数、右侧左括号个数。
- 随意删除 \([1,j]\) 中左括号和 \((j+1,n]\) 中右括号。
原理是 \(j\) 向右移动时,由其最大性总有左括号多于右括号,删除此处右括号必使答案 \(-1\)。左侧同理。
G104235D На уголки не разрезать!
无需多言。
#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
using namespace std;
signed main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
int n,m;scanf("%d%d",&n,&m);if(n>m)swap(n,m);
if(1ll*n*m%3!=1)puts("YES");
else if(n==1)puts(m==1?"NO":"YES");
else if(n==2)puts(m>2?"YES":"NO");
else if(n==4)puts("NO");
else if(n==5)puts("YES");
else puts("NO");
return 0;
}

浙公网安备 33010602011771号