2.21 鲜花
打了一场模拟赛,又垫底了
模拟赛
T1
赛时 $ 0pts $
给定 $ 4 n $ 个数分成 $ n $ 组,使得对于每组四个数 $ a , b , c, d $ ,所有组中 $ a d - b c $的和最大。
一眼顶针鉴定为贪心
以为大数据会把 long long 卡掉,用的 int128
结果不仅没卡,而且快读寄了,锰挂 $ 100pts $
$ \large 卧式消愁 $
点击查看代码
#include <bits/stdc++.h>
using namespace std;
long long ans;
int arr[600000];
int main(){
int n;
cin>>n;
for(int i=1;i<=4*n;i++){
cin>>arr[i];
}
sort(arr+1,arr+4*n+1);
for(int i=1;i<=n;i++){
ans-=1ll*arr[i]*arr[2*n-i+1];
}
for(int i=4*n;i>2*n;i-=2){
ans+=1ll*arr[i]*arr[i-1];
}
cout<<ans;
}
T2
赛时 $ 70pts $
单调队列优化 $ DP $
至多铺 $ w_i $ 个 $ \ne $ 一定 铺 $ w_i $ 个
在读假题的情况下还能有 $ 70pts $ 简直是奇迹
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int n,s,w[500010],t,dp[500010][2];
int head,tail;
int ans;
struct node {
int num,id;
}q[1000010];
int main(){
#ifndef ONLINE_JUDGE
freopen("in.in","r",stdin);
#endif
cin>>n;
for(int i=1;i<=n;i++){
scanf("%d",&w[i]);
}
cin>>s;
int cnt=(s*n+99)/100;
// cout<<cnt<<endl;
int size,l=1,r=n;
while(l<=r){
size=(l+r)>>1;
head=1,tail=0;
// q[head]=1;
for(int i=1;i<=n;i++){
if(i>=size){
t=max(dp[i-size][1],dp[i-size][0])+n-(i-size);
while(head<=tail && q[tail].num<t)tail--;
q[++tail].num=t;
q[tail].id=i-size;
while(head<=tail && q[head].id<i-w[i])head++;
// dp[i]=max(dp[i],dp[max(i-w[i],0)]+min(w[i],i));
}
dp[i][0]=max(dp[i-1][0],dp[i-1][1]);
dp[i][1]=((head>tail?0:q[head].num)+i-n);
}
if (max(dp[n][0],dp[n][1])<cnt)
r=size-1;
else
l=size+1;
}
cout<<r<<endl;
}
T3 鸽
T4 鸽
今天的学术就写到这里把
\(t3\) 题解为 \(n^2\) ,但是 \(n \le 3e5\)
$ t4 $ 题解只有 \(30pts\)
半死不活的 lxyt 成功的从昨天一直 dying 到今天,连 Huge 都问是不是故意拖着的
(蚌
昨天晚上打羽毛球被 Huge 给端了,但是球拍不是我的
被飞花令暴虐的 Shadow 开始了反击,但还是最惨的一个
赛诺冷笑话:
--我的老婆和我的邻居偷情有了孩子,我现在要离开吗?
--当然不了,将来他们的孩子的生日宴会上需要一个小丑。