问题 C: 付哥题做不完了
内存限制:1024 MB时间限制:2.000 S评测方式:文本比较命题人:admin提交:323解决:44
返回比赛提交提交记录侧边提交
题目描述
付哥今天在做题,他有两个题单A和B,里面的题目数量分别为n和m,每个题目题目付哥做完都需要花一定的时间,他规定自己在K的时间内尽可能多的做题。
但是目前有一个条件限制他,每个题单中的题只有当此题前面的题目做完时才能解锁,但是付哥能随时转换题单做题。
问付哥今天最多能做完几道题?
输入
n m K
题单A从前往后付哥做此题所需花的时间 A1 .. An
题单B从前往后付哥做此题所需花的时间 B1 .. Bm
1≤ n,m≤ 200000
1≤ K,Ai,Bi≤ 109
输出
最多的做题数
样例输入 复制
3 4 240
60 90 120
80 150 80 150
样例输出 复制
3
刚拿到题很懵,看了下题解,嗷嗷,原来是前缀和+遍历,以后要注意2e5范围内的数据要考虑遍历这种方法还有前缀和!!!
#include<bits/stdc++.h>
#define int long long
using namespace std;int a[200005];
int b[200005];signed main()
{int n,m,k;cin>>n>>m>>k;int temp;for(int i=1;i<=n;i++){cin>>temp;a[i]=a[i-1]+temp;}for(int i=1;i<=m;i++){cin>>temp;b[i]=b[i-1]+temp;}int ia=0;int ib=m;int all=0;int ans=0;for(int i=0;i<=n;i++){if(a[i]>k)break;while(a[i]+b[ib]>k){ib--;if(ib==0)break;}if(i+ib>ans)ans=i+ib;}cout<<ans<<endl;
}
问题 D: 约数的和
内存限制:1024 MB时间限制:1.000 S评测方式:文本比较命题人:admin提交:152解决:34
返回比赛提交提交记录侧边提交
题目描述
对于一个正整数X,f(X)是X正因数的个数。
给一个正整数N,求∑K=1N K∗f(K)
输出
N
1≤ N≤ 107
样例输入 复制
4
样例输出 复制
23
对于一个数i,在n内,以i为因子的数有n/i个,显然他们是一个等差数列,那么对它求和就可以了
#include<bits/stdc++.h>
#define int long long
using namespace std;int a[10005];signed main()
{int n;cin>>n;int ans=0;for(int i=1;i<=n;i++)ans+=n/i*(n/i+1)/2*i;cout<<ans<<endl;
}
问题 E: 数数问题
内存限制:1024 MB时间限制:2.000 S评测方式:文本比较命题人:admin提交:56解决:12
返回比赛提交提交记录侧边提交
题目描述
问有多少对长度为N的数组A和B满足以下条件。
1≤ Ai,Bi≤ M
Ai≠ Bi (1≤ i≤ N)
Ai≠ Aj且Bi≠ Bj (1≤ i< j≤ N)
输入
N M
1≤ N≤ M≤ 5× 105
输出
由于答案可能很大,输出其对109+7取模的结果。
样例输入 复制
2 2
样例输出 复制
2
不会捏