乌兰察布市网站建设_网站建设公司_腾讯云_seo优化
2026/1/16 21:40:52 网站建设 项目流程

2025年华东师范大学计算机考研复试机试真题

2025年华东师范大学计算机考研复试上机真题

历年华东师范大学计算机考研复试上机真题

历年华东师范大学计算机考研复试机试真题

更多学校完整题目开源地址:https://gitcode.com/u014339447/pgcode

百度一下pgcode即可查看,输入 “学校名称” 即可筛选该校历年机试真题,包括真题、ac代码、解题思路、视频讲解。

基建高手-华东师范大学

题目描述

现在有n nn条赤金生产线,第i ii条生产线在启动后,每a i a_iai分钟可以产出一块赤金。

t = 0 t = 0t=0时刻,所有赤金生产线同时启动。

现在你需要找到一个最早的时刻T TT, 使得在0 00~T TT的时间中,产出的赤金块数不小于k kk.

输入格式

第一行两个整数n nnk kk.

第二行n nn个由空格分隔的整数a 1 , a 2 , … , a n a_1, a_2, \ldots, a_na1,a2,,an.

输出格式

一行一个整数T TT.

输入样例
3 3 1 1 1
输出样例
1
#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<map>#include<vector>#include<list>#include<string>#include<cmath>#include<queue>#include<sstream>#include<random>#include<set>usingnamespacestd;#defineintlonglongtypedeflonglongll;typedefpair<ll,ll>Pii;constll N=1e6+5;constll M=1e5+5;constll mod=1000000009;constll big=21e15;vector<int>f;// findFatherintfindf(inti){returnf[i]==i?i:f[i]=findf(f[i]);}voidmerge(inti,intj){f[findf(i)]=findf(j);}typedefstructedge{inth,t,w;}edge,*edgePtr;structcmp{booloperator()(constedge&p,constedge&p1){returnp.w>p1.w;}};inta[N];signedmain(){#pragmaregion MyRegion#ifdef_MSC_VER// 这段代码只在MSVC编译器(包括VS2019)中运行#defineON_MY_MACHINE1#else#defineON_MY_MACHINE0#endif#ifON_MY_MACHINEfreopen("in.txt","r",stdin);#endif#pragmaendregionintn,k;cin>>n>>k;for(inti=1;i<=n;i++){cin>>a[i];}intl=1,r=big;while(l<=r){intproduct=0;intmid=(l+r)/2;for(inti=1;i<=n;i++){product+=mid/a[i];}if(product>=k){r=mid-1;}else{l=mid+1;}}cout<<l;return0;}

计数问题-华东师范大学

题目描述

给定n nn个整数a 1 , … , a n a_1, \ldots, a_na1,,an,问[ l , r ] [l, r][l,r]中有多少数x xx,满足x xx能整除数组中任意一个数。

输入格式

第一行给定测试组数T TT

对于每组测试数据,第一行给定三个整数n nn,l ll,r rr,第二行n nn个整数,表示a 1 , … , a n a_1, \ldots, a_na1,,an

输出格式

T TT行,每行输出一个整数,表示答案。

输入样例
2 2 5 20 2 3 3 201 1120 3 7 11
输出样例
10 443
数据范围

T ≤ 10 T \leq 10T10

n ≤ 15 n \leq 15n15

2 ≤ a i ≤ 10 6 2 \leq a_i \leq 10^62ai106

1 ≤ l ≤ r ≤ 10 9 1 \leq l \leq r \leq 10^91lr109

50 % 50\%50%的数据,r − l ≤ 10 5 r - l \leq 10^5rl105

#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;typedeflonglongll;// 计算两数的最大公约数(GCD)llgcd(ll a,ll b){while(b){a%=b;swap(a,b);}returna;}intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intT;cin>>T;while(T--){intn;ll l,r;cin>>n>>l>>r;vector<ll>a(n);for(inti=0;i<n;++i){cin>>a[i];}ll ans=0;// 遍历所有非空子集(mask从1到(1<<n)-1)for(intmask=1;mask<(1<<n);++mask){ll current_lcm=1;intsubset_size=__builtin_popcount(mask);// 子集大小(二进制中1的个数)booloverflow=false;// 计算当前子集的LCMfor(inti=0;i<n;++i){if(mask&(1<<i)){// 如果第i个元素在子集中ll g=gcd(current_lcm,a[i]);// 避免LCM溢出:若current_lcm * (a[i]/g) > r,则后续倍数为0if(current_lcm>r/(a[i]/g)){overflow=true;break;}current_lcm=current_lcm/g*a[i];// 先除后乘避免溢出if(current_lcm>r){overflow=true;break;}}}if(overflow)continue;// LCM超过r,无有效倍数// 计算[current_lcm在[l, r]中的倍数数量]ll cnt=(r/current_lcm)-((l-1)/current_lcm);// 容斥原理:奇加偶减if(subset_size%2==1){ans+=cnt;}else{ans-=cnt;}}cout<<ans<<'\n';}return0;}

排列删除-华东师范大学

题目描述

给定一个长度为n nn的排列p pp,你可以删除序列中的一个数p i p_ipi当且仅当以下两个条件中的一个成立:

  • i = 1 i = 1i=1

  • i > 1 i > 1i>1,p i − 1 > p i p_{i-1} > p_ipi1>pi

你可以重复执行删除操作,直到p pp为空。

现在有q qq次询问,每次询问给出x , y x, yx,y,你需要回答p x p_xpx能否在p y p_ypy之前被删除。

输入格式

第一行给出n nn

第二行给出n nn个正整数表示序列p pp

第三行给出q qq

接下来q qq行每行两个正整数x , y x, yx,y表示询问。

输出格式

q qq行,每行输出YesNo表示询问的结果。

输入样例
7 1 3 7 5 2 4 6 4 3 1 2 5 7 4 6 4
输出样例
No Yes No Yes
#include<bits/stdc++.h>#defineendl'\n'#definelcp<<1#definercp<<1|1#defineintlonglong#definemax(a,b)((a)>(b)?(a):(b))#definemin(a,b)((a)<(b)?(a):(b))usingnamespacestd;constintN=1e6+10;inta[N];structnode{intl,r,val;}tr[N>>4];voidup(intp){tr[p].val=max(tr[lc].val,tr[rc].val);return;}voidbuild(intp,intll,intrr){tr[p].l=ll;tr[p].r=rr;if(ll==rr){tr[p].val=a[ll];return;}intmid=(ll+rr)>>1;build(lc,ll,mid);build(rc,mid+1,rr);up(p);return;}intquery(intp,intqi,intzhong){if(qi<=tr[p].l&&tr[p].r<=zhong){returntr[p].val;}intans=LLONG_MIN;intmid=(tr[p].l+tr[p].r)>>1;if(qi<=mid)ans=max(ans,query(lc,qi,zhong));if(zhong>mid)ans=max(ans,query(rc,qi,zhong));returnans;}voidsolve(){intn;cin>>n;for(inti=1;i<=n;i++){cin>>a[i];}build(1,1,n);intqq;cin>>qq;while(qq--){intll,rr;cin>>ll>>rr;if(ll==rr){cout<<"No"<<endl;continue;}if(ll<rr)cout<<"Yes"<<endl;else{intmmax=query(1,rr,ll);// cerr<<ll<<" "<<rr<<" "<<mmax<<endl;if(a[rr]==mmax)cout<<"Yes"<<endl;elsecout<<"No"<<endl;}}}signedmain(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// int t;cin >> t;while(t--)solve();return0;}

最小字符串-华东师范大学

题目描述

给定字符串 $ S $(全为大写字母),对任意字符,可扩展也可以不扩展,求给定字符串对应的字典序最小字符串。

扩展:如 $ A $ 可以扩展为 $ AA $,也可以不扩展,为 $ A $。

例:

输入 $ AC $,输出 $ AAC $。

输入 $ CA $,输出 $ CA $。

输入 $ AAB $,输出 $ AAAAB $。

输入样例
AAB
输出样例
AAAAB
#include<bits/stdc++.h>usingnamespacestd;intmain(){string s1,s2="";cin>>s1;intn=s1.size(),i=0,j=0;while(i!=n){i=j;while(s1[i]==s1[j]&&j!=n)j++;s2+=s1.substr(i,j-i);if(s1[i]<s1[j]&&j!=n)s2+=s1.substr(i,j-i);}cout<<s2<<endl;return0;}
输入样例
AAB
输出样例
AAAAB
#include<bits/stdc++.h>usingnamespacestd;intmain(){string s1,s2="";cin>>s1;intn=s1.size(),i=0,j=0;while(i!=n){i=j;while(s1[i]==s1[j]&&j!=n)j++;s2+=s1.substr(i,j-i);if(s1[i]<s1[j]&&j!=n)s2+=s1.substr(i,j-i);}cout<<s2<<endl;return0;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询