Logo Iceturky 的博客

博客

标签
暂无

ABC176F Brave CHAIN题解

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-22 23:13:52

ABC176F Brave CHAIN题解

Link

很好的一道题。

首先考虑扔三张留两张相当于有一个大小为 $2$ 的包,每次只能装两张牌。

考虑dp。设 $f_{i,x,y}$ 表示前 $i+2$ 张牌(因为三张三张分组所以相当于枚举是哪一组),保留了 $x$ 和 $y$ 的最大收益。

首先有 $\mathrm{O(n)}$ 大常数转移做法,总复杂度 $\mathrm{O(n^3)}$ ,过不去。

首先发现若当前三张 $a=A_i,b=A_{i+1},c=A_{i+2}$ 相同则可以直接删去,容易发现是对的。

然后发现除了上一种情况,与 $a,b,c$ 无关的状态在一次转移中是不会被改变的。那么被改变的状态数就是 $\mathrm{O(n)}$ 的。

这启发我们找只与 $a,b,c$ 相关状态的转移方程。转移中重要的是 $a,b,c$ 而非 $x,y$ 。

对于 $a,b,c$ 相同的情况上面已经去掉了,不考虑。

若有两个数字 $a=a,b=a$ 相同,则若想要增加贡献则必须要找到某一个状态 $f_{i-1,x=a,c}$ 的最大值,然后再加一。

然后是一般的没有贡献的状态更新,容易发现只会跟 $a,b,c$ 相关的状态会被更新。

这两个都是 $\mathrm{O(n)}$ 级别的。

细节的,第一种是查询列最大值,第二种是查询全局最大值以及列最大值。

像背包一样压掉一维,这样才能保证不会被转移的状态不会占用复杂度。

由于两种转移可能同时发生,所以用 vector 来转移。

code

const int N=2e3+5;

int f[N][N];
int mx[N];\/\/行\/列最大值,这里这个矩阵是沿对角线对称的

int t[N*3];

struct hhh{
	int u,v,w;
};
vector<hhh>_new;

void clr(vector<hhh>&vec){
	vector<hhh>c;
	swap(c,vec);
}

signed main(){
	int n=read();
	for(int i=1;i<=3*n;i++)
		t[i]=read();
	memset(f,-0x3f,sizeof(f));
	memset(mx,-0x3f,sizeof(mx));
	mx[t[1]]=mx[t[2]]=0;
	f[t[1]][t[2]]=f[t[2]][t[1]]=0;
	int d=0;
	for(int i=3;i<3*n;i+=3){
		int a=t[i],b=t[i+1],c=t[i+2];
		if(a==b&&b==c)
			d++;\/\/全局加
		else{
			int mxx=-inf;
			for(int j=1;j<=n;j++){
				_new.pb({j,a,mx[j]});
				_new.pb({j,b,mx[j]});
				_new.pb({j,c,mx[j]});
				mxx=max(mxx,mx[j]);
			}
			_new.pb({a,b,max(mxx,f[c][c]+1)});
			_new.pb({b,c,max(mxx,f[a][a]+1)});
			_new.pb({a,c,max(mxx,f[b][b]+1)});\/\/以上是第二种转移
			if(a==b||a==c||b==c){\/\/第一种转移
				if(b==c)
					swap(a,b);
				if(a==c)
					swap(b,c);
				for(int j=1;j<=n;j++)
					_new.pb({j,c,f[a][j]+1});
			}
			for(hhh x:_new){
				f[x.u][x.v]=f[x.v][x.u]=max(f[x.u][x.v],x.w);
				mx[x.u]=max(mx[x.u],x.w);
				mx[x.v]=max(mx[x.v],x.w);
			}
			clr(_new);
		}
	}
	int ans=f[t[3*n]][t[3*n]]+1;\/\/最后两个可能会再造成一次贡献
	for(int i=1;i<=n;i++)
		ans=max(ans,mx[i]);
	print(ans+d),pc('\n');
	return 0;
}

敬启、耽溺夏日

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-24 21:50:44

夏天总是伴随着不透气的大太阳,吵吵闹闹的人群。

中考结束后的第一个暑假,但却与平常并无区别:每天还是继续着有人塞题就做,不会或没题就摆的浑浑噩噩的日子。

突然意识到自己已经要步入高中,成为一名壮年选手了。自己总是意识不到时间的流逝。

比如刚刚随到的这首歌:拝啓、夏に溺れる。

没记错的话,这首歌是在去年的暑假,往sdsc的路上第一次听的。一年前,我坐车的时候,插着耳机的我,歌单已经找不到什么感兴趣的歌。我翻了翻熟悉的 p 主的个人页面,发现我还没听过拿不拿的这张看起来很有意思的专辑。

专里面只有一首在寒假打mai听过的ウミユリ海底譚是熟悉的,于是我把整张专下载下来,以应对接下来的车程。

专辑的名字是花と水飴、最終電車。

未曾有半点留意,这一个暑假在 蛍火 空の暮れ 中落下帷幕。

之后的一年是怎么过的?怎么这么快就到了一个新的暑假。

无论过去如何,我也只能告别这一年了。

夕闇、空の果て,又是一个新的暑假。

敬启、耽溺夏日。

CF525D Arthur and Walls题解

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-26 22:08:32

Link

我一开始想的是每次选一个 . 连通块来bfs,向外扩展,由于第二次扩展开始就是矩形的扩展,可以很好地避免多次枚举同一个位置导致复杂度假掉。但这个复杂度也是假的,因为第一次扩展就是假的。第一次扩展形状是不规则的,所以很难找到一种方法使它正确的扩展。

考虑观察不规则的连通块与规则的连通块有什么不同与相同。发现不规则的连通块一定具有“向内突出的角”。形式化的说,一定存在一个 $2\times2$ 的子矩形,其中有三个 . ,一个 * 。而规则的一定没有。那么我们直接根据这个bfs即可。把所有初始的向内突出的角去掉,再找其会影响的子矩形,这个的数量显然是 $3$ 。然后继续扩展即可。

code

const int N=2e3+5;
const int dx[4]={0,0,1,1},dy[4]={0,1,0,1},Dx[8]={0,1,1,1,0,-1,-1,-1},Dy[8]={1,1,0,-1,-1,-1,0,1};

char s[N];

bool tag[N][N],vis[N][N];

bool check(int x,int y){
	if(tag[x][y])
		return 0;
	for(int i=0;i<4;i++){
		int sx=x+dx[i]-1,sy=y+dy[i]-1;
		int cnt=0;
		for(int j=0;j<4;j++)
			cnt+=tag[sx+dx[j]][sy+dy[j]];
		if(cnt==3)
			return 1;
	}return 0;
}

queue<pir> q;

signed main(){
	int n=read(),m=read();
	for(int i=1;i<=n;i++){
		scanf("%s",s+1);
		for(int j=1;j<=m;j++)
			tag[i][j]=s[j]=='.';
	}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			if(check(i,j))
				q.push({i,j}),vis[i][j]=1;
	while(!q.empty()){
		int x=q.front().fi,y=q.front().se;
		q.pop();
		tag[x][y]=1;
		for(int i=0;i<8;i++){
			int xx=x+Dx[i],yy=y+Dy[i];
			if(xx<=0||xx>n||yy<=0||yy>m||vis[xx][yy])
				continue;
			if(check(xx,yy))
				q.push({xx,yy}),vis[xx][yy]=1;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++)
			pc(tag[i][j]?'.':'*');
		pc('\n');
	}
	return 0;
}\/\/\/woshishakou

CF702F T-shirts题解

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-26 22:09:09

Link

考虑衣服来减人的钱而非人买衣服。这样只需要衣服顺序加入即可完成对 $q$ 的限制。

问题转化为有一个集合,每次把集合分为两部分,一部分小于 $c$ ,另一部分大于等于 $c$ ,使第二部分元素的计数器增加,值减少 $c$ ,再合并两个集合。看起来很像平衡树,但中间会有重叠。

考虑重叠部分,发现其都至少减少了一半。因此对于重叠的部分直接暴力插入,每一个元素最多会被暴力插入 $\mathrm{O(\log w)}$ 次,不重叠部分直接合并即可。

实现上使用了 splay ,每次将树分为三部分,小于 $c$ ,介于 $c+1$ 与 $2c$ 之间与大于 $2c$ 。中间部分暴力修改后暴力插入到第一个集合内,后面部分直接打标记,与第一部分合并。由于这两部分没有交,所以合并是均摊 $\mathrm{O(\log n)}$ 。

中间因为在 find 时没有把找的那个点的 tag 给 pushdown 调了好久。

code

const int N=2e5+5;

struct shirts{
	int c,p;
	bool operator<(shirts ano)const{
		return p==ano.p?c<ano.c:p>ano.p;
	}
}a[N];

int ans[N];

struct Splay{
	struct node{
		int fa,s[2];
		int val;
		int cnt,id;
		int tag1,tag2;
	}t[N<<5];
	int rt,idx;
	Splay(){
		rt=idx=0;
	}
	void pushdown(int x){
		if(t[x].tag1==0&&t[x].tag2==0)
			return;
		if(t[x].s[0]){
			t[t[x].s[0]].tag1+=t[x].tag1;
			t[t[x].s[0]].tag2+=t[x].tag2;
			t[t[x].s[0]].val+=t[x].tag1;
			t[t[x].s[0]].cnt+=t[x].tag2;
		}
		if(t[x].s[1]){
			t[t[x].s[1]].tag1+=t[x].tag1;
			t[t[x].s[1]].tag2+=t[x].tag2;
			t[t[x].s[1]].val+=t[x].tag1;
			t[t[x].s[1]].cnt+=t[x].tag2;
		}
		t[x].tag1=t[x].tag2=0;
	}
	void rotate(int x){
		int y=t[x].fa,z=t[y].fa;
		pushdown(z),pushdown(y);pushdown(x);
		bool w=x==t[y].s[1];
		if(z)
			t[z].s[y==t[z].s[1]]=x;
		t[x].fa=z;
		t[y].s[w]=t[x].s[w^1];
		t[t[x].s[w^1]].fa=y;
		t[x].s[w^1]=y;
		t[y].fa=x;
	}
	void splay(int x,int k){
		if(x==0||x==k)
			return;
		while(t[x].fa!=k){
			int y=t[x].fa;
			if(t[y].fa!=k){
				int z=t[y].fa;
				if((x==t[y].s[1])^(y==t[z].s[1]))
					rotate(x);
				else
					rotate(y);
			}rotate(x);
		}
		if(k==0)
			rt=x;
	}
	int fd(int x,int num){
		while(t[x].s[num>t[x].val])
			pushdown(x),x=t[x].s[num>t[x].val];
		pushdown(x);
		return x;
	}
	void insert(int num,int id,int cnt){
		int y=fd(rt,num);
		int x=++idx;
		t[x].cnt=cnt,t[x].id=id;
		t[y].s[num>t[y].val]=x;
		t[x].fa=y;
		t[x].s[0]=t[x].s[1]=t[x].tag1=t[x].tag2=0;
		t[x].val=num;
		splay(x,0);
	}
	void clr(int x){
		if(x==0)
			return;
		pushdown(x);
\/\/		cout<<"clr"<<x<<" "<<t[x].id<<" "<<t[x].val<<" "<<t[x].cnt<<endl;
		insert(t[x].val,t[x].id,t[x].cnt);
		clr(t[x].s[0]);
		clr(t[x].s[1]);
	}
	void update(int num){
		splay(fd(rt,num),0);
		if(t[rt].val>=num)
			splay(fd(t[rt].s[0],inf),0);
\/\/		cout<<t[rt].val<<endl;
		splay(fd(t[rt].s[1],num*2),rt);
		int tmp=t[rt].s[1];
		if(t[tmp].val<num*2)
			splay(fd(t[tmp].s[1],-inf),rt);\/\/可能会存在不存在这一部分的情况
		tmp=t[rt].s[1];
\/\/		cout<<"rt:"<<t[tmp].id<<" "<<t[tmp].val<<" "<<t[tmp].cnt<<" "<<t[tmp].tag1<<" "<<t[tmp].tag2<<endl;
\/\/		cout<<"ls:"<<t[t[tmp].s[0]].id<<" "<<t[t[tmp].s[0]].val<<" "<<t[t[tmp].s[0]].cnt<<" "<<t[t[tmp].s[0]].tag1<<" "<<t[t[tmp].s[0]].tag2<<endl;
\/\/		cout<<"rs:"<<t[t[tmp].s[1]].id<<" "<<t[t[tmp].s[1]].val<<" "<<t[t[tmp].s[1]].cnt<<" "<<t[t[tmp].s[1]].tag1<<" "<<t[t[tmp].s[1]].tag2<<endl;
		t[tmp].tag1+=-num;
		t[tmp].tag2++;
		t[tmp].val+=-num;
		t[tmp].cnt++;
		pushdown(tmp);
		int tmpp=t[tmp].s[0];
		t[tmp].s[0]=0;
		clr(tmpp);
	}
	void output(int x){
		int tmp=x;
		cout<<"x:"<<t[tmp].id<<" "<<t[tmp].val<<" "<<t[tmp].cnt<<" "<<t[tmp].tag1<<" "<<t[tmp].tag2<<endl;
		cout<<"ls:"<<t[t[tmp].s[0]].id<<" "<<t[t[tmp].s[0]].val<<" "<<t[t[tmp].s[0]].cnt<<" "<<t[t[tmp].s[0]].tag1<<" "<<t[t[tmp].s[0]].tag2<<endl;
		cout<<"rs:"<<t[t[tmp].s[1]].id<<" "<<t[t[tmp].s[1]].val<<" "<<t[t[tmp].s[1]].cnt<<" "<<t[t[tmp].s[1]].tag1<<" "<<t[t[tmp].s[1]].tag2<<endl;
		if(t[tmp].s[0])
			output(t[tmp].s[0]);
		if(t[tmp].s[1])
			output(t[tmp].s[1]);
	}
	void dfs(int x){
		pushdown(x);
\/\/		print(x),pc(' '),print(t[x].id),pc(' '),print(t[x].val),pc(' '),print(t[x].cnt),pc('\n');
		ans[t[x].id]=t[x].cnt;
		if(t[x].s[0])
			dfs(t[x].s[0]);
		if(t[x].s[1])
			dfs(t[x].s[1]);
	}
}T;

signed main(){
	signed n=read();
	for(int i=1;i<=n;i++)
		a[i]={read(),read()};
	sort(a+1,a+1+n);
	int m=read();
	T.insert(inf,0,0);
\/\/		T.dfs(T.rt),pc('\n'),
	T.insert(-inf,0,0);
\/\/		T.dfs(T.rt),pc('\n');
	for(int i=1;i<=m;i++)
\/\/		T.dfs(T.rt),pc('\n'),
		T.insert(read(),i,0);
\/\/	T.dfs(T.rt),pc('\n');
	for(int i=1;i<=n;i++){
\/\/		T.dfs(T.rt);
\/\/		cout<<endl;
\/\/		cout<<a[i].c<<endl;
\/\/		cout<<endl;
		T.update(a[i].c);
\/\/		T.output(T.rt);
	}
	T.dfs(T.rt);
	for(int i=1;i<=m;i++)
		print(ans[i]),pc(' ');
	pc('\n');
	return 0;
}

白日梦想家

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-26 22:10:12

Ground Control to Major Tom

做着进队拿牌的白日梦与高二D都没有的白日梦。

but it came back with a story to say.

做着与瘦小的男人暂时放下手边的事情去追逐摄影师的白日梦。

Look into the sun as the new days rise

做着在钢琴前弹出一段旋律的梦。


在还在摆的时候突然发现自己的洛谷通过数在昨天达到了1k。

在我的通过数达到七百多的时候机房同学就有人破1k了,于是我从那时就开始关注自己的通过数了。虽然看的频率并不高,但基本每一月都会翻上几遍个人主页看看自己的通过数到了多少。

现在终于到了啊,

像做梦一样。

ABC219F - Cleaning Robot题解

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-29 21:35:17

按照二元组意义下的模等价类分类。

考虑如何定义二元组下的模。考虑到模实际是减去若干次某一个数字,那么二元组下两个元素减去数字的次数也肯定要相同。若二元组是 $(x,y)$ ,模数是 $(a,b)$ ,那么结果可以为 $(x\bmod a,y-\lfloor\frac{x}{a}\rfloor b)$ 。

分完类就一眼了。

实现时需要注意正负号。

无论是 $x,y,a,b$ 都可以为负。

实现的很唐。

code

const int N=2e5+5;

char s[N];

pir p[N];

map<pir,bool>apr;

map<int,set<int> >mp[N<<1];

int k[N];

int c,d;
bool same(pir aa,pir bb){
	return (aa.fi%c+c)%c==(bb.fi%c+c)%c&&aa.se-floor(aa.fi*1.0\/c)*d==bb.se-floor(bb.fi*1.0\/c)*d;
}
bool cmp(pir aa,pir bb){
	if((aa.fi%c+c)%c==(bb.fi%c+c)%c&&aa.se-floor(aa.fi*1.0\/c)*d==bb.se-floor(bb.fi*1.0\/c)*d){
		return aa.fi<bb.fi;
	}
	if((aa.fi%c+c)%c==(bb.fi%c+c)%c)
		return aa.se-floor(aa.fi*1.0\/c)*d<bb.se-floor(bb.fi*1.0\/c)*d;
	return (aa.fi%c+c)%c<(bb.fi%c+c)%c;
}

signed main(){
	scanf("%s",s+1);
	int n=strlen(s+1);
	int T=read();
	c=0,d=0;
	for(int i=1;i<=n;i++){
		if(s[i]=='L')
			c--;
		if(s[i]=='R')
			c++;
		if(s[i]=='U')
			d++;
		if(s[i]=='D')
			d--;
	}
	
	{
		if(c<0){
			for(int i=1;i<=n;i++){
				if(s[i]=='L')
					s[i]='R';
				else if(s[i]=='R')
					s[i]='L';
			}
		}
		if(d<0){
			for(int i=1;i<=n;i++){
				if(s[i]=='U')
					s[i]='D';
				else if(s[i]=='D')
					s[i]='U';
			}
		}
	}
	
	c=0,d=0;
	apr[{0,0}]=1;
	int cnt=0;
	for(int i=1;i<=n;i++){
		if(s[i]=='L')
			c--;
		if(s[i]=='R')
			c++;
		if(s[i]=='U')
			d++;
		if(s[i]=='D')
			d--;
		if(apr[{c,d}])
			continue;
		p[++cnt]={c,d};
		apr[{c,d}]=1;
	}
	n=cnt;
	if(c==0){
		for(int i=1;i<=n;i++)swap(p[i].fi,p[i].se);
		swap(c,d);
	}
	if(T==1||(c==0&&d==0)){
		print(n+1),pc('\n');
		return 0;
	}
	p[++n]={0,0};
	sort(p+1,p+1+n,cmp);
	int ans=T;
	for(int i=2;i<=n;i++){
		if(same(p[i-1],p[i]))
			ans+=min(T,(p[i].fi-p[i-1].fi)\/c);
		else
			ans+=T;
	}print(ans),pc('\n');
	return 0;
}

MX1195A. 差异序列题解

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-29 21:35:37

原题Link

求所有满足 $a_i,b_i\geq0$ ,$\sum a=\sum b=m$,的 $(\sum_{i=1}^n|a_i-b_i|)^2$ 的和。

首先要放弃dp想组合。

dp状态可能也没有多优,但是想不出其他做法了。设 $g_{i,x,y}$ 表示前 $i$ 个数,两个数列的和分别为 $x$ 和 $y$ 的方案数,再设一个贡献和和贡献平方和,考虑怎么把当前数的差塞到贡献的平方和里。但这个是 $\mathrm{O(nm^4)}$ 的。

考虑组合数。

绝对值太难绷,将其转化为 $\max-\min$ 。这样贡献就是 $(\sum\max-\sum\min)^2$ 。实际上,$\sum(\max+\min)=2m$ ,用这个吧 $\max$ 给替换掉,得到贡献为 $(2m-2\sum\min)^2$ 。

这样的好处是可以通过 $\sum\min$ 的方案数来求。

方案数就要比上面简单了,首先 $\min$ 每一项都只会是 $a$ 或 $b$ 内。先不考虑其在哪里,而是统一的吧 $a$ 和 $b$ 都变成最小值,然后再在较大值上加一些数来使其和达到 $m$ 。

首先是 $\sum\min$ 在数列里的分配。设 $s=\sum\min$ 。考虑插板。方案数为 $C_{s-1+n}^{n-1}$ 。

然后考虑剩余的 $m-\sum\min$ 如何分配给 $\max$ 。首先发现不能同时分给 $a_i$ 和 $b_i$ ,因为这样会改变 $ \sum\min$ 。

那么直接枚举 $a$ 中多少位置是 $\max$ ,剩下的全都给 $b$ 即可。但是需要注意的是,如果 $a$ 中有 $\max$ 被分配了 $0$ ,$b$ 中也有,那么这是会数重的。

所以可以直接钦定 $b$ 中 $\max$ 可以分配 $0$ ,$a$ 不可就可以。

这个式子是 $\sum C_n^x\cdot C_{m-s-1}^{x-1}\cdot C_{m-s-1+n-x}^{n-x-1}$ 。

后两个中,前面那个是 $a$ 的分配方案,后面是 $b$ 的。

然后乘起来即可。$ans=\sum_{s=0}^m\sum_{x=0}^nC_{s-1+n}^{n-1}\cdot C_n^x\cdot C_{m-s-1}^{x-1}\cdot C_{m-s-1+n-x}^{n-x-1}$ 。

代码不放了。

尼龙线

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-08-07 21:39:26

前几天随到了鱼韵的尼龙线。这首歌的合成器质感很强,让人感觉自己身处都市夜晚的海边,耳边是海风,还有夜市的嘈杂声,更远处是起伏的波浪与不算特别亮的月牙。你从岸边推开一艘小木舟,坐在上面,飘在海上。感受着潮汐。

突然想到了彻夜之歌。当然指的是那一部动画。它原作的灵感来源是一首非常有名(霓虹区域限定)的同名说唱歌曲。这首歌的氛围则变成了夜晚都市的街头自由自在的翱翔,与动画一样。

这部动画虽然没什么热度(同期还算排得上号),但却是我最喜欢的动画之一。单就第一季的进度,它充满了夜晚自由,悠闲,空旷无比却又十分充实的氛围。夜晚时的画面用了大面积的紫色来填充天空,用了温暖的黄色来做街灯的光亮,非常的时髦。

在这样的氛围中,剧情都可以先放在一边(参考自台长某期视频但我断章取义了)。主要是剧情还没差到影响观感的地步。

印象最深的还是前几集,光和小荠在街上漫步,在空中翱翔的场景。

听说后期变成热血战斗了,懒得喷。

在听尼龙线的时候,眼前突然就浮现出了光在夜晚穿上鞋子出门的画面。在自主售货机旁遇到了那个粉毛吸血鬼。

鱼韵最近的一张专里有尼龙线的remix版,那版更飘忽不定,也更加柔和。它把原曲若干乐器拆开,每一种单独成一部分,听起来像是在入梦前大脑的世界,沉浸,轻微,奇异。

有时间想要给彻夜之歌剪一个MAD,音乐就用这首鱼韵的尼龙线。

从明天开始

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-08-09 21:26:00

好像有点感冒。

基本上摆了一天。只能通过补几道讲过正解的暴力比正解难写的题来安慰自己今天还是有进步的。

到头来连题解都懒得补。

最近在关注挺好萌,希望立希能夺冠。

明天晚上败犬女主就更新了。

明天休息就可以再看一遍少歌剧场版了。

僕らは流されていくよ

我们都是随波逐流的人

「明日から」って何もかも捨てて

一句“从明天开始”就把一切舍弃掉

追いかけることさえ出来なくて

就连追求些什么都做不到

今日もまた一人考えてる

今天也是这样 在一个人思索着

写到这里的时候突然随到了放牛班的春天里的插曲 Cerf-volant。

这首歌是在作为主角的老师(抱歉我忘记他叫啥名字了)被校长辞退后,经过楼下时被一只又一只的纸飞机砸到时的配乐。非常好听。

这一幕也是我这部电影里最喜欢的一幕之一。这是孩子们的救赎。

发现自己的鲜花写成了日记,那就这样吧,明天之后再说。

最近写的鲜花好多。是这段时间的问题吗。

朝日

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-08-11 06:34:00

晚上没有睡着,便很早起了。

宿舍走廊是东西向的,在经过通往楼梯口的拐角处,我不经意间向走来的方向看。走廊的尽头是正从山上升起的太阳。

它是那么耀眼,以至于我只有抬起手遮挡它的光线才能够靠近它。

我先前从未往走廊深处走,现在却抬着手,一步一步靠近那个发光的小圆圈。

还是无比的耀眼。

愛だけが確かにあるままただ平等に

只有爱是确实存在而平等的

平等に確実に単純に滑稽に

平等的确实的单纯的滑稽的

朝日は登る

朝日升起

大好きだよ 大好きだよ

最喜欢了,最喜欢了

大好きだよって

最喜欢你了

何度言えば安心だろう? (何度言えば幸せだろう?)

要说几次才会安心呢(要说几次才能幸福呢)

共 52 篇博客