目录
1. 八大藤校2025fall标化要求已全部出炉
2. 上海“2024人才储备”计划启动!
伐木工小码哥
杰瑞吃奶酪
小码哥处理订单
黑手党
第k小的距离
养竹鼠
甜品配置
礼物
合数分解
均分糖果
持盾
咖啡品鉴师小码哥
1. 八大藤校2025fall标化要求已全部出炉
布朗大学要求2025Fall大部分申请者必须提交SAT/ACT成绩。
普林斯顿大学2023、2024、2025申请季都执行Test-Optional标化政策。
哈佛大学同样一直延续前几年的标化政策,从2023至2026申请季都执行Test-Optional标化政策。
耶鲁大学的新政策是“Test-Flexible”的,即允许申请者提交SAT或ACT考试成绩,但不再强制要求。
宾大近日宣布2024-25申请季仍保留Test-Optional标化政策,不强制提交SAT/ACT成绩。
哥大在2023年宣布将永久执行Test-Optional标化政策。
康奈尔大学在今年2月宣布,2025申请季讲继续延续将Test-Optional政策。
达特茅斯实行Test-Required标化政策。对于在美国高中就读的申请人,要求必须提交SAT或者ACT成绩;对于境外高中就读的申请人,要求提交SAT、ACT或3门AP成绩,或IB、A-Level等成绩。
2. 上海“2024人才储备”计划启动!
储备人才是上海的一种人才引进政策,类似于江苏浙江各个县市的紧缺人才引进,通常储备期3年。
✓ 各区的储备人才要求不相同,大致要求如下:
✓ 学历要求本科及以上,大部分要求硕士及以上,留学生对学校排名有要求
✓ 大多区非常看中学生在校的干部任职经历
✓ 政治面貌虽然不要求党员,但是资质审核时较为青睐党员
✓ 一般情况下要求是应届生,往届生一般不超过2年
伐木工小码哥
难度:黄金
时间限制:1秒巴:占用内存:128 M
伐木工人小码哥需要砍 M米长的木材,但只被允许砍伐一排树(考虑到环保)
小码哥的伐木机工作流程如下:设置一个高度参数(米),伐木机升起一个巨大的锯片到高度H,并锯掉所有树比H高的部分,就得到树木被锯下的部分。
请帮助小码哥找到伐木机锯片的最大的整数高度,使得他能得到的木材至少为M米。换句话说,如果再升高1米,他将得不到M米木材。
格式
输入格式:第一行2个整数N 和 M,N 表示树木的数量,M 表示需要的木材总长
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll N,M,l,r,mid,ans,a[1000007];
bool check(int num) {ll tot = 0;for (int i = 0; i < N; i++)if (a[i] >= num)tot += a[i] - num;return tot >= M;
}int main() {cin >> N >> M;for (int i = 0; i < N; i++) {cin >> a[i];r = max(r, a[i]);}while (l <= r) {mid = l + (r - l) / 2;if (check(mid))l = mid + 1, ans = mid;elser = mid - 1;}cout << ans;return 0;}
杰瑞吃奶酪
时间限制:1秒巴 占用内存:128 M少 难度:钻石
某一天,老鼠杰瑞抓住了一个机会,成功的到达了冰箱的附近,正当杰瑞打开冰箱门,想要享受美味的奶酪的时候,没想到冰箱里的奶酪太多了,奶酪洒了一地。汤姆猫听到了这个动静,正在火速赶往冰箱想要抓住杰瑞。杰瑞凭借与汤姆多年对抗的经历,仅凭借汤姆的脚步声便能推断汤姆还有多久抵达,现在,杰瑞并不怕汤姆,但汤姆抵达后必然影响它吃奶酪。于是杰瑞想要知道,在汤姆到达前,最多能吃到多少奶酪。
现在已知杰瑞与所有奶酪刚好排成一条直线,用坐标;记录每个奶酪的位置,杰瑞一开始的坐标为0,移动一个单位距离需要一个单位时间。
由于杰瑞能一口吃下一整块奶酪,因此吃奶酪的过程并不会花任何时间。
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 +7;
int t,n,l,r,mid,ans,a[N];bool check(int num) {for (int i = 0; i <= n - num; i++) {int j = i + num - 1;//a[i]和a[j]是区间左右两个端点if (a[j] <= 0 && -a[i] <= t)return true;if (a[i] >= 0 && a[j] <= t)return true;if (a[i] <= 0 && a[j] >= 0)if (min(-a[i], a[j]) + (a[j] - a[i]) <= t)return true;}return false;
}int main(){cin >>t >>n;for (int i=0; i < n;i++)cin >>a[i];sort(a,a + n);l=1,r=n;while (l<=r) {mid = l + (r - l) / 2;if (check(mid))l = mid + 1, ans = mid;elser = mid - 1;}cout <<ans;return 0;}
小码哥处理订单
难度:钻石时间限制:1秒四 占用内存:128 M
假期快到了,小码哥在宾馆打暑假工。
小码哥需要处理接下来n天的住房信息,其中第i天宾馆有"个房间可供租借。共有 m 份订单每份订单用三个正整数描述,分别为,sj,t;,表示需要从第8;天到第t;天住房(包括第8i天和第t 天),每天需要出租 d;个房间。
宾馆入住是先到先得,也就是说,小码哥按照订单给到的先后顺序来进行处理。如果在分配的过程中遇到一份订单使从第s天到第t,天中有至少一天剩余的房间数量不足d;个,则需要停止工作,通知当前申请人修改订单。
由于到了假期,宾馆入住人数很多,小码哥需要知道,是否会有订单无法完全满足。如果有,小码
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
using namespace std;
const int N=1e6 + 10;
int n,m,r[N],d[N],s[N],t[N],sub[N],need [N];
int le,ri,mid,ans;bool check(int num) {memset(sub, 0, sizeof(sub));for (int i = 1; i <= num; i++) {sub[s[i]] += d[i];sub[t[i] + 1] -= d[i];}for (int i = 1; i <= n; i++) {need[i] = need[i - 1] + sub[i];if (need[i] > r[i])return true;}return false;
}
int main(){
cin >>n >>m;
for (int i=1;i <= n;i++){
cin >>r[i];
}
for (int i=1;i<=m;i++) {cin >> d[i] >> s[i] >> t[i];
}int le = 1,ri = m;if (!check(m)){cout <<0;return 0;
}
while (le <= ri){
mid = le +(ri-le)/2;
if (check(mid))
ri = mid -1,ans = mid;
else
le = mid +1;
}
cout <<"-1"<<endl;
cout <<ans;
return 0;
}
黑手党
少难度:黄金 时间限制:1秒巴 占用内存:128 M
有几个人在玩游戏“黑手党”,这个游戏规则是每局必须有一个主持,(n-1)名选手。其中第i个人表示想玩 a局游戏且不当主持,请求出满足每人要求的最少的局数。
格式
输入格式:第一行为人数 n;
第二行为数列 a 。
输出格式:一行一个整数即为答案。
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5 + 10;
ll a[N],n,l,r,mid,ans,sum;bool check(ll num){return num * (n - 1)>=sum;}int main() {cin >> n;for (int i = 0; i < n; i++) {cin >> a[i];l = max(l, a[i]);sum += a[i];}r = sum;while (l <= r) {mid = l + (r - l) / 2;if (check(mid))r = mid - 1, ans = mid;elsel = mid + 1;}cout << ans;return 0;}
第k小的距离
难度:黄金四 占用内存:128 M时间限制:1秒
给定一个整型数组(n个)表示的位置,请返回所有数对中第k小的距离。一对(A,B)的距离表示A和B之间的绝对差值。
格式
输入格式:第一行输入两个整型n和k(n≤10“,0<k<n(n-1)/2);第二行输入整型数组。
输出格式:输出一个整型。
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
using namespace std;
const int N =1e6 + 10;
int n,k,l,r,mid,ans,a[N];
bool check(int num) {int cnt = 0;for (int r2 = 0; r2 < n; r2++) {int l2 = 0;while (a[r2] - a[l2] > num && r2 > l2)l2++;cnt += r2 - l2;}return cnt >= k;
}
int main() {cin >> n >> k;for (int i = 0; i < n; i++)cin >> a[i];sort(a, a + n);r = a[n - 1] - a[0];while (l <= r) {mid = l + (r - l) / 2;if (check(mid))r = mid - 1, ans = mid;elsel = mid + 1;}cout << ans;return 0;
}
养竹鼠
时间限制:1秒巴 占用内存:250 M难度:黄金
小码哥在饲养竹鼠,竹鼠棚里有N个隔间,这些隔间分布在一条直线上,坐标是1,2,3,·..,,(0 <i< 100000000)。小码哥有 M 只竹鼠,为了防止竹鼠中暑,他要尽可能让相邻两只竹鼠相隔越远越好。所以,所有竹鼠中相隔最近的两只竹鼠的距离的最大值是多少(1<M<N<50000)?
格式
输入格式:第一行,两个用空格隔开的数字N 和 M;后 N 行,每行一个整数表示每个隔间的坐标,坐标是唯一的,也就是两只竹鼠位置不会重合
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
using namespace std;
int N,M,l,r,mid,ans,a[50007];bool check(int num){int temp = a[0],tot = 1;for (int i=1;i<N;i++) {if (a[i] - temp >= num)temp = a[i], tot++;if (tot >= M)return true;}return false;}int main() {cin >> N >> M;for (int i = 0; i < N; i++)cin >> a[i];sort(a, a + N);r = a[N - 1];while (l <= r) {mid = l + (r - l) / 2;if (check(mid))l = mid + 1, ans = mid;elser = mid - 1;}cout << ans;return 0;}
甜品配置
少 难度:钻石时间限制:1秒巴 占用内存:128 M
小码哥的上司是一个爱吃甜品的人,他给了小码哥u的经费,去购买m 个甜品,这些甜品有 b的价格,和a;的甜度,上司希望甜度越高越好,但是他比较忙,没有时间来确定所有甜品的甜度,只会去看m 个甜品的中位数的甜度,于是小码哥决定在买m个甜品,总价格不超过v的情况下,尽可能的让中位数大。
如果m是偶数,那么中位数就是中间两个甜品的甜度的平均值。
格式
输入格式:第一行三个数v,n,m,分别代表经费,甜品数量以及需要买的甜品数量;接下来 n 行,每行两个数 a,b,分别代表甜品甜度以及价格。
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
struct SWEET{int a,b;
}sw[N];
int v,n,m,l,r,mid,ans,sum1 [N],sum2[N];
//sum1[i],sum2[i]存储了前面m前面一半和后面一半价格最小的甜品的价格和
//当m为奇数时,sum1和sum2存的都是m/2的。
//当m为偶数时,sum1存的是m/2-1,sum2存的是m/2。
bool cmp(SWEET s1,SWEET s2) {return s1.a<s2.a;}
int main(){cin >>v >>n >>m;for (int i=1;i<=n;i++)cin >> sw[i].a >>sw[i].b;sort(sw + 1,sw +n +1,cmp);priority_queue<int>q1,q2;for (int i=1;i<=n;++i){q1.push(sw[i].b);sum1[i] = sum1[i-1] + sw[i].b;if(q1.size()> m/2-1 + m%2)sum1[i] -= q1.top(),q1.pop();}for (int i=n;i>0;i--) {q2.push(sw[i].b);sum2[i] = sum2[i + 1] + sw[i].b;if (q2.size() > m / 2)sum2[i] -= q2.top(), q2.pop();}if(m%2){for (int i=n-m / 2; i>=m /2+1;i--)if (sum1[i -1] + sum2[i +1] + sw[i].b <=v) {cout << sw[i].a;break;}}else{for (int i=m/2;i<=n -m / 2;i++) {l = i + 1, r = n - m / 2 + 1;int tmp = 0;while (l <= r) {mid = l + (r - l) / 2;if (sum1[i - 1] + sum2[mid] + sw[i].b <= v)l = mid + 1, tmp = mid;elser = mid - 1;}if (tmp > i)ans = max(ans, sw[i].a + sw[tmp].a);}cout <<ans /2 <<endl;}return 0;
}
礼物
难度:钻石。时间限制:1秒四占用内存:128 M
找到一个最小的V,从1...V中选cnt个数给A,选cntz个数给B。A不要r的倍数,B 不要y的倍数。 ,y为质数。一个数不能同时给 A、B。
格式
输入格式:四个数 cnt1,cntz,必,y
输出格式:-个数 V
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
using namespace std;
int cnt1,cnt2,x,y;
bool check(int num) {if (num - num / (x * y) < cnt1 + cnt2)return 0;if (num - num / x < cnt1)return 0;if (num - num / y < cnt2)return 0;return 1;
}int main(){cin >>cnt1 >>cnt2 >>x >>y;int l = 1,r=2e9;int ans;int cnt =0;while (l<=r){int mid =l+(r-l)/2;if (check(mid))r=mid -1,ans = mid;elsel=mid+1;}printf("%d",ans);return 0;}
合数分解
乡 难度:黄金·时间限制:1秒四占用内存:128 M
给你一个正整数n,求最多能分成几个合数。若n为合数,它自身算一个合数。无解输
出-10
格式
输入格式:第一行一个正整数 T接下来 T 行每行表示一个测试数据。
输出格式:每一行输出一个答案。
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
using namespace std;
int t,n;
int main(){
cin >> t;
while (t--){
cin >>n;
if(n== 1|| n==2||n==3|| n==5|| n==7|| n==11)
cout<< "-1"<<endl;//因为1、2、3、5、7、11不能拆成合数
else if (n%4==0)
cout << n /4 <<endl;
else if (n%4==1)
cout<<n/4 -1<<endl;
else if (n%4 ==2)
cout << n /4 <<endl;
else if (n%4 ==3)
cout <<n /4 -1 <<endl;
}
return 0;
}
均分糖果
少 难度:钻石@时间限制:1秒四占用内存:128 M
小码哥有几个手下,位置从1到n,他们坐成一排,每个人有a 个糖果,每个人只能把糖果送给左右两个人,由于坐在1和几位置上的是术士,他们可以通过技艺,相互传递糖果,每人每次传递一个糖果代价为1。数据保证糖果一定可以被均分,不会出现小数情况。
格式
第一行一个正整数 n< 1e3 ,表示手下的个数;输入格式:接下来 n 行,每行一个整数 ai,表示第讠个手下得到的糖果的颗数。
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
using namespace std;
long long n,a[1007],c[1007],sum,avg,ans;
int main(){cin >>n;for (int i=1;i <= n;i++){cin >>a[i];sum += a[i];}avg = sum / n;for (int i=1;i <= n;i++)c[i] = c[i-1]+avg -a[i];sort(c + 1,c +n + 1);for (int i = 1;i <= n;i++)ans += abs(c[n / 2 + 1] - c[i]);cout <<ans;return 0;
}
持盾
难度:黄金时间限制:1秒巴 占用内存:128 M
n个盾卫在切尔诺伯格上寻找遇难者,但是非常不巧遇见了黑蛇,黑蛇用她的火焰攻击盾卫,在一片火海中,盾卫决定排成一列,在这火焰风暴中撤退。如图所示
红色箭头为黑蛇的攻击方向,显然盾卫们(黑色的方块)在排成一列的情况下,可以受到最少的攻
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
using namespace std;
const int N = 5e4;
struct NODE{
int w,s,sum;
}node [N];
bool cmp(NODE a,NODE b){return a.sum < b.sum;}
int n,ans =-0x3f3f3f3f,presum;
int main(){cin >>n;for (int i=1;i<=n;i++){cin >> node[i].w >> node[i].s;node[i].sum += node[i].w + node[i].s;}sort(node +1,node +n +1,cmp);for (int i=1;i<=n;i++){presum += node[i-1].w;ans = max(ans,presum - node[i].s);
}
cout <<ans;
return 0;
}
咖啡品鉴师小码哥
难度:钻石
时间限制:1秒巴: 占用内存:128 M
这天,小码哥想要喝一杯咖啡,现在有 n种调料,这杯咖啡只可以加入其中的 m种。
小码哥在得知所有的 n种调料后,用计算机算出了所有调料消耗的时间 c,以及调料的美味度Ui。小码哥要喝到” 最大的咖啡,也就是单位时间的美味度最大的咖啡
>表示求和,所以”表示美味度的总和 除以消耗时间的总和。
格式
输入格式:第一行为两个整数n,m,表示调料种数和能加入的调料数;接下来两行,每行为 n 个数,第一行第讠个整数表示美味度 vi,第二行第
//
// Created by abner on 2024/4/8.
//
#include <bits/stdc++.h>
using namespace std;
int n,m;
double v[205],c[205],t[205];
int check(double x) {double sum = 0;for (int i = 1; i <= n; i++) {t[i] = v[i] - x * c[i];}sort(t + 1, t + n + 1);for (int i = n; i >= n - m + 1; i--) {sum += t[i];}if (sum > 0)return 1;elsereturn 0;
}int main(){cin >>n >>m;for(int i =1;i<=n;i++){cin >>v[i];}for(int i=1;i<=n;i++){cin >>c[i];}double l = 0,r=1001;while (r-l>1e-6){double mid = (l + r)/ 2.0;if (check(mid))l=mid;elser=mid;}printf("%.3lf",l);return 0;}