热烈的盛夏来临了,阁下可否做好准备?

附上一篇B站评论,应该是早年知乎作品罢,挺文艺和有趣的。

很喜欢这种感觉。

夏天是什么呢? 是斑驳流动的树影,灯光暗淡的酒馆,氤氲着热气的晚风; 是阳光,溪河,燥热, 是年轻,刻骨,暗恋; 又是午后聒噪冗长的蝉鸣和赤裸白皙的双足, 慵懒又凌乱的碎发和卧室中褶皱的床单.

我啊,最喜欢夏天。

我从前在许多个夏天里穿着短袖和朋友倚靠着窗台上的栏杆喝着冰可乐闲谈。窗户对面是海,楼下是院子,院子里的中学生晚放学后嬉笑打闹,长相温文的少女低头抚摸白猫,一旁站着斜背书包拿着冰棒的少年。这些都是夏天,和夏天衍生出来的轻柔而遥远的琐碎。

老家在南方,一座古朴有质的小城。

我曾是那里一个普通得不能再普通的少年。夏天里睡了漫长的午觉醒来后穿衣洗漱,慌忙带了课本就踩上有些破旧的自行车奔向学校;刻画杂乱的书桌里藏着未送出的情书,也承载着一些爱慕的心绪。

傍晚时我在屋子里吹笛子,那声音穿过敞开的纱窗伴随着晚风传到很远,有时也会惊走几只鸣蝉。我也曾送陪伴我很久的人回家,楼底一个响指点亮楼梯间黯淡的黄灯,听到关门声再离开,即使她家在二楼。

那是一个喜欢绿色的女生。

我永远记得她穿着那件好看的绿色碎花布衫笑起来的样子,那么纯粹,那么美好。她不到十七岁,面容温煦,夏天里带我去看萤火虫和被城市霓虹衬的微弱的星光。我爱喝她的花茶,清淡,微甜,就像她一样。她学着大人的样子来和我一碰茶碗,碰上我的目光后有时会腼腆地把额前碎发往耳后一撩,又嫣然绽开笑脸。

我就在这样的一个个夏天里挣扎着松绑,又被推搡着成年,甚至来不及看一看周遭的光景,那一个个夏天就结束了。

那么合理,却又那么陡然。

至于那个女生,我和她也并没有以后。我没有手机,也没有她的联系方式,搬家后便和她断了联系。有些事就是这样自然而然地发生了,没有理由,也不需要理由。

就好像前几天误删了手机里的上千张照片。而这些照片,多数是去年暑假所存。我亲眼看着几千张照片一点一点消失,去年夏天的记忆,我高考完的记忆,我十八岁的记忆,一点一点消失,它们将不再触及我了,它们最终还是不会再触及我了。

我们都身着书页般的衣冠,恭敬步行在时间的尸首间。

朋友们盛酒的玻璃杯碰撞在一起,打断了我的思绪。 一瞬间我好像又回到了那几个夏天,她拿着茶碗看着我笑的夏天,风里有浓烈的栀子花香的夏天。

一个朋友对着我晃了晃杯子,我对他笑了一下以示拒绝,他也一笑予以回应,彼此心如明镜。

终是聚似飞霜不肯融,散如尘埃各西东。

牛客周赛 Round 17

img

A. 游游的正方形披萨

要使得横着切割和竖着切割差距最小的话,那么横着和竖着的刀法要十分接近,最多差1

对奇数和偶数分开讨论

应该不会不知道切两刀出3块罢()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
const int mod=998244353;
const int M0D=1e9+7;
const int N=1e1+6;
void solve(){
double n;
int k;
cin>>n>>k;
if(k%2==0)
cout<<fixed<<setprecision(2)<<n*n/((k/2+1)*(k/2+1))<<endl;
else
cout<<fixed<<setprecision(2)<<n*n/((k/2+1)*(k/2+2))<<endl;

}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T=1;
//cin>>T;
while(T--) solve();
return 0;
}

B. 游游的字母翻倍

复制一位师兄的代码:

模拟即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,l,r;
int main()
{
string s1,s2;
cin >> n >> m;
cin >> s1;
for (int i = 1;i <= m;i++)
{
cin >> l >> r;
s2 = "";
for (int j = 0;j < s1.size();j++)
{
if (j + 1 >= l && j + 1 <= r)
{
s2 += s1[j];
s2 += s1[j];
}
else
{
s2 += s1[j];
}
}
s1 = s2;
}
cout << s1;
return 0;
}

C. 数组平均

本场MVP题目,首先要贪心的想到前后要改

然后进行枚举前后改的个数,前缀和优化查询的过程。

来自珂朵莉

由于肯定是改变前半部分和后半部分的,这样才能保证最优秀

以枚举最大的没有被选中的项

如果选中某一个项为最大值,那比它小,而离的越近必然被保留,所以k的选择一定分布在前后缀.

alt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+100;
#define int long long
int a[N],b[N];
int n,m;
void solve()
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+1+n);
for(int i=1;i<=n;i++) b[i]=b[i-1]+a[i];

if(m==n)
{
cout<<"0.0000000"<<endl;
return ;
}
double res=1e18;
for(int i=0;i<=m;i++){
int j=m-i;
double sum=b[i]+b[n]-b[n-j];
double mi=min(1.0*a[i+1],sum*1.0/m);
double ma=max(1.0*a[n-j],sum*1.0/m);
res=min(ma-mi,res);
}
cout<<fixed<<setprecision(6)<<res<<endl;
return ;
}
signed main()
{
solve();
return 0;
}

D. 游游出游

感觉直接spfa+二分也许可以水过

Dij+二分应该也可以

前几天刚看这种题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
#define int long long
int n,m,h;
int dis[N];
int vis[N];
struct xx{
int v,w,d;
};
vector<xx> vv[N];
typedef pair<int,int> PII;
int dijkstr(int mid){
priority_queue<PII,vector<PII>,greater<PII>> q;
memset(dis,0x3f3f3f3f,sizeof dis);
memset(vis,0,sizeof vis);
q.emplace(0,1);
dis[1]=0;
while(!q.empty()){
auto [dist,u]=q.top();
q.pop();
if(vis[u]) continue;
vis[u]=1;
for(auto &[to,w,d]:vv[u]){
if(w<mid) continue;
if(dis[to]>dis[u]+d){
dis[to]=dis[u]+d;
q.emplace(dis[to],to);
}
}
}
return dis[n]<=h;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin>>n>>m>>h;
for(int i=0;i<m;i++){
int u,v,w,d;
cin>>u>>v>>w>>d;
vv[u].push_back({v,w,d});
vv[v].push_back({u,w,d});
}
int l=0,r=2e9;
while(l<r){
int mid=l+r+1>>1;
if(dijkstr(mid)) l=mid;
else r=mid-1;
}
if(!dijkstr(l)) cout<<-1;
else cout<<l;
}