标签:10 题意 int 题解 rep 21th leq CSP
a. 期末预测之安全指数
题意
给定 n 个 \(w_{i}\) 和 \(score_{i}\),求出二者乘积和,输出这个数和0的最大值
数据范围
\(2\leq n\leq 10^{5}\)
\(-10\leq w_{i}\leq 10\)
\(0\leq score_{i}\leq 100\)
题解
- 按照题意做即可
Code
cpp
#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, n) for(int i = a; i < n; i ++)
int main ()
{
int n; cin>>n;
int res = 0;
rep(i, 0, n)
{
int a, b; cin>>a>>b;
res += a * b;
}
cout <<max(res,0)<<endl;
}
b. 期末预测之最佳阈值
题意
给定 \(m\) 组成绩 \(y_{i}\) 和其预测值 \(predict_{i}\),如果将其中一个值定为阈值 \(\theta\),
\[\operatorname{predict}_{\theta}(y)=\left\{\begin{array}{l}0(y<\theta) \\ 1(y \geq \theta)\end{array}\right. \]求出使得预测结果正确数量最大的阈值,如果存在多个为阈值最大的
数据范围
\(2\leq m\leq 10^{5}\)
题解
- 数据范围不能 \(O(n^{2})\),通过前缀和能够达到 \(O(n)\)
- 分别统计每个 0 和 1 的前缀和
- 将数据排序后从小到大遍历更新即可
- 对于相同的只算第一个即可,后面的 0 的前缀和会多计入,且应该属于 \(\geq\)
Code
cpp
#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, n) for(register int i = a; i < n; i ++)
#define fi first
#define se second
const int N = 1e5 + 10;
typedef pair<int,int> pii;
int s[2][N];
pii a[N];
int main()
{
int m; cin>>m;
rep(i, 1, m + 1) cin>>a[i].fi>>a[i].se;
sort(a + 1, a + m + 1);
rep(i, 0, 2)
{
rep(j, 1, m+1)
{
s[i][j] = s[i][j - 1] + (a[j].se == i);
}
}
pii ans = {0, -1};
rep(i, 1, m + 1)
{
pii now = {a[i].fi, s[0][i - 1] + s[1][m] - s[1][i - 1]};
if(now.se >= ans.se) ans = now;
while(i + 1 <= m && a[i + 1].fi == a[i].fi) i ++;
}
cout<<ans.fi;
}
c. 命令行选项
题意
数据范围
题解
Code
cpp
d. 无线网络
题意
数据范围
题解
Code
cpp
e. 出现次数最多的数
题意
数据范围
题解
Code
cpp
标签:10,题意,int,题解,rep,21th,leq,CSP 来源: https://www.cnblogs.com/hhyx/p/14608557.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。