F-Kobolds and Catacombs

牛客网

题意:对于\(n(n<=10^6)\)个数的序列,划分区间,每个区间内部从小到大排序,要求最后整个序列单调不下降,求最多可以划分为多少个区间。

分析:分别计算原始序列的前缀和,原始序列sort从小到大排序之后的前缀和,每两个前缀和相等的下标之间可以划分为一个区间,即答案就是前缀和相等的下标个数。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int read() {
char ch = getchar(); int x = 0, f = 1;
while (ch < '0' || ch>'9') { if (ch == '-') f = -1; ch = getchar(); }
while ('0' <= ch && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
return x * f;
}
const int N=1e6+5;
const int M=8e3+5;
const int mod=998244353;
ll sum1[N],sum2[N];
int a[N];
int main(){
int n=read();
for(int i=1;i<=n;++i){
a[i]=read();
sum1[i]=sum1[i-1]+a[i];
}
sort(a+1,a+n+1);
for(int i=1;i<=n;++i)sum2[i]=sum2[i-1]+a[i];
int ans=0;
for(int i=1;i<=n;++i){
if(sum1[i]==sum2[i])++ans;
}
cout<<ans<<endl;
return 0;
}

G-The Witchwood

牛客网

题意:给定n个数,求最大的k个数之和。

分析:签到题,应该要开long long。

K-Scholomance Academy

牛客网

题意:直接看这篇博客了解混淆矩阵、ROC曲线、AUC指标,就能看懂题目了,而且看懂题意,这道题就十分简单。

分析:我们要求的就是ROC曲线下方的面积。对于每个样本,题目中的'+'就是阳性,'-'就是阴性,当前阈值大于等于某样本的数值时,该样本判定为阳性,否则判定为阴性,因此会出现真阳TP、假阴FN、真阴TN、假阳FP四种情况。把两个样本分开并分别从小到大排序,根据阳性样本的值,让阈值递增,在每两个阳性样本之间阈值变化,TP不变,因此TPR也不变,即ROC曲线的纵坐标不变,而且很好求;现在只要考虑每两个阳性样本之间,FPR的变化范围,也就是ROC曲线横坐标的区间。阴性样本中数值越大的越容易假阳,因此随着阈值增大假阳样本数量递减,设置一个指针指向阴性样本的数组,阈值变化时,更新指针右移。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int read() {
char ch = getchar(); int x = 0, f = 1;
while (ch < '0' || ch>'9') { if (ch == '-') f = -1; ch = getchar(); }
while ('0' <= ch && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); }
return x * f;
}
const int N = 1e6 + 5;
const int M = 8e3 + 5;
const int mod = 998244353;
int n, pos[N], neg[N];
int main() {
cin>>n;
for (int i = 1; i <= n; ++i) {
char ch; cin >> ch;
int val;cin>>val;
if (ch == '+')pos[++pos[0]] = val;
else neg[++neg[0]] = val;
}
sort(pos + 1, pos + pos[0] + 1);
sort(neg + 1, neg + neg[0] + 1);
int now_tp = pos[0], now_fp = neg[0];
long double ans = 0.0, now_tpr = 1.0, now_fpr = 1.0;
int j = 1;
for (int i = 1; i <= pos[0]; ++i) {
while (j <= neg[0] && neg[j] < pos[i])++j;
long double r = now_fpr;
now_fp = neg[0] - j + 1; now_fpr = (long double)1.0 * now_fp / neg[0];
ans += (long double)(r - now_fpr) * now_tpr;
now_tp--; now_tpr = (long double)1.0 * now_tp / pos[0];
}
printf("%.12Lf\n", ans);
return 0;
}

ICPC2020 沈阳的更多相关文章

  1. 2016ACM/ICPC亚洲区沈阳站-重现赛赛题

    今天做的沈阳站重现赛,自己还是太水,只做出两道签到题,另外两道看懂题意了,但是也没能做出来. 1. Thickest Burger Time Limit: 2000/1000 MS (Java/Oth ...

  2. HDU 5510 Bazinga (2015沈阳现场赛,子串判断)

    Bazinga Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  3. HDU 5512 Pagodas (2015沈阳现场赛,找规律+gcd)

    Pagodas Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  4. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  5. HDU 5952 Counting Cliques 【DFS+剪枝】 (2016ACM/ICPC亚洲区沈阳站)

    Counting Cliques Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  6. HDU 5948 Thickest Burger 【模拟】 (2016ACM/ICPC亚洲区沈阳站)

    Thickest Burger Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  7. HDU 5949 Relative atomic mass 【模拟】 (2016ACM/ICPC亚洲区沈阳站)

    Relative atomic mass Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  8. 2015ACM/ICPC亚洲区沈阳站 Pagodas

    Pagodas Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  9. 2015ACM/ICPC亚洲区沈阳站 B-Bazinga

    Bazinga Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  10. ACM-ICPC 2018 沈阳赛区网络预赛 K Supreme Number(规律)

    https://nanti.jisuanke.com/t/31452 题意 给出一个n (2 ≤ N ≤ 10100 ),找到最接近且小于n的一个数,这个数需要满足每位上的数字构成的集合的每个非空子集 ...

随机推荐

  1. vue3.0中ref动态绑定

    // 自己使用 <div v-for="item in ['lisi','wanger']" :key="item"> <test :ref= ...

  2. Vue 非单文件组件(不常用)3步骤(创建、注册、使用)和几个注意点、组件的本质(VueComponent)

    Vue中使用组件的三大步骤: 1.定义组件(创建) 2.注册组件 3.使用组件(写组件标签) 一.如何定义一个组件? 使用Vue.extend(options)创建,其中options 和 new V ...

  3. Python实现XX短视频加密算法抓包分析及刷邀请

    Python实现XX短视频加密算法抓包分析及刷邀请 出自:https://zhuanlan.zhihu.com/p/466929667?utm_id=0 Python彳余 一个会常常更新互联网,编程的 ...

  4. Win10 修改系统自带字体

    文章来源: Win10怎样更改系统字体?Win10默认字体修改教程 - 系统之家 (xitongzhijia.net) 苹方字体下载,window系统专用[2021最新版]免费下载 - 知乎 (zhi ...

  5. 数值分析之数值积分 4.X

    求积公式 \[\int_{a}^{b} f(x) \mathrm{d} x \approx \sum_{k=0}^{n} A_{k} f\left(x_{k}\right) \] \(A_k\) 为求 ...

  6. mysql错误号码2003 can't connect to mysql server on 'localhost' (0)解决方案

    找到mysql安装目录下的Bin目录,在cmd中进入这个目录,运行net start mysql 却显示服务名无效 所以此时 首先在MYSQL的安装目录bin下,输入mysqld --install ...

  7. JavaSE 日期时间类整理

    一.创建日期对象 1.创建日期对象 //1.直接创建日期 Date date1 = new Date(); //2.创建指定日期 使用Date类 目标 2000-5-10 Date date2 = n ...

  8. SpringCloud之配置中心(config)的使用

    配置中心的作用就在于可以在项目启动时加载远程或本地的配置文件,将配置文件集中管理 springboot版本: 2.1.6.RELEASE springcloud版本: Finchley.RELEASE ...

  9. 带有FIFO硬件缓存的串口

    目录 51单片机的串口并没有配置FIFO硬件,故收发数据时只能一字节一字节地收发.最近接触了FIFO(先进先出)的硬件缓存,这样串口的配置就更多了一个维度. 以CH58x系列单片机为例,在CH583的 ...

  10. Linux系统安全:SNAT和DNAT的实现

    一.SNAT1.SNAT实验目的公司内有2台机器,但是只有一个公网ip,利用SNAT技术实现2台私网地址都可以访问公网. 2.SNAT实验环境准备①三台服务器:PC1客户端.PC2网关.PC3服务端. ...