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. eclipse项目转idea项目

    背景:用习惯了idea再去用eclipse实在用的不习惯,于是将老的eclipse项目导入到eclipse,网上有很多教程,看了很多博客都不行,一直报错,各种报错,现在终于好了,我们一起来看看怎么将e ...

  2. 第二周作业N67044-张铭扬

    1. 运行脚本可以显示出本机的ip地址 2. 如果ip地址中有3这个数字,那么就打印出当前的系统时间 3. 如果ip地址中不含3这个数字,就批量建立用户magedu_00, magedu_01, .. ...

  3. Vulnhub:maskcrafter-1.1靶机

    kali:192.168.111.111 靶机:192.168.111.187 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --script=http-enum 192.168. ...

  4. php 实现CURL请求接口

    $ch = curl_init (); //初始化 @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 @curl_setopt($ ...

  5. python 搭建自启动FTP服务器,编译后exe后个人随时可用,非常方便

    import win32apiimport win32conclass AutoRun: """ itemname:要添加的项值名称 , path:要添加的exe路径绝对 ...

  6. 使用vault配置加密

    简介 在使用ansible的过程中,不可避免的会存储一些敏感信息,比如在变量文件中存储帐号密码信息等. ansible通过ansible-vault命令行工具来提供对敏感文件的加密和解密. ansib ...

  7. allure安装配置

    代理节点配置allure 下载allure https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline 配置环境变 ...

  8. oracle 导出导入表 不到出指定表

    导出多个表 exp LSXYYSZHMRMS/******@PK99SERVICE file=d:\fuhcx.dmp  tables=(fhcxgxxx,fhcxjcxx,fhcxlbxx,fhcx ...

  9. gobuster安装

    Github地址:https://github.com/OJ/gobuste 第一种方式 sudo apt install golang-gogo install github.com/OJ/gobu ...

  10. wps - Word文档打开后不能编辑

    Word文档打开后不能编辑 解决方式 [审阅]-[限制编辑]-[设置文档的保护方式]-[修订]-[启动保护]-[停止保护] Word文档打开后不能编辑,可以这样处理 打开Word文档后,发现无法输入内 ...