首页 > 其他分享 >P7382 [COCI2018-2019#6] Simfonija (中位数)

P7382 [COCI2018-2019#6] Simfonija (中位数)

时间:2024-07-08 18:42:37浏览次数:7  
标签:std int P7382 sum 中位数 long 2019 Simfonija define

P7382 [COCI2018-2019#6] Simfonija

中位数

不妨设 \(C_i=A_i-B_i\),那么操作后的代数式可以写成:

\[\sum\limits_{i=1}^n|C_i+x| \]

如果 \(k=0\),那么 \(x\) 的取值就是一个经典问题了,即 \(C\) 序列的中位数(偶数取中间任意)。

如果 \(k\ne 0\),要使答案最小,就是将 \(k\) 个数的代价变为 \(0\),只需要考虑剩下 \(n-k\) 个数。而这 \(n-k\) 个数在数轴上一定是连续的(可以反证法证明),那么枚举这 \(n-k\) 个数所在位置区间即可。

计算答案预处理前缀和,复杂度 \(O(n)\)。

#include <bits/stdc++.h>
#define pii std::pair<int, int>
#define mk std::make_pair
#define fi first
#define se second
#define pb push_back

using i64 = long long;
using ull = unsigned long long;
const i64 iinf = 0x3f3f3f3f, linf = 0x3f3f3f3f3f3f3f3f;
const int N = 1e5 + 10;
int n, k;
i64 a[N], b[N], c[N], sum[N], ans = linf;
int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
	std::cin >> n >> k;
	for(int i = 1; i <= n; i++) {
		std::cin >> a[i];
	}
	for(int i = 1; i <= n; i++) {
		std::cin >> b[i];
	}
	for(int i = 1; i <= n; i++) {
		c[i] = a[i] - b[i];
	}
	std::sort(c + 1, c + n + 1);

	for(int i = 1; i <= n; i++) {
		sum[i] = sum[i - 1] + c[i];
	}

	int r = n - k;
	for(int i = r; i <= n; i++) {
		int l = i - r + 1;
		int p = (l + i) >> 1;
		ans = std::min(ans, (p - l) * c[p] - (sum[p - 1] - sum[l - 1]) + (sum[i] - sum[p]) - (i - p) * c[p]);
	}
	std::cout << ans << "\n";

	return 0;
}

标签:std,int,P7382,sum,中位数,long,2019,Simfonija,define
From: https://www.cnblogs.com/FireRaku/p/18290523

相关文章

  • MS SQL Server with SSRS 版本从2014升级到2019版本
    升级过程中的一些注意事项。一台服务器上同时安装了MSSQLServer和MSSQLServerReportingService。1.因MicrosoftSQLServer2019ReportingService是独立产品,不在集成于SQLServer服务安装,所以需要单独下载安装包并安装2.升级MSSQLServer版本之前,需要先升级MSSQL......
  • [CISCN2019 华北赛区 Day1 Web2]ikun
    进入题目发现找到lv6查看源码发现用lv标志点击下一页发现url参数page写脚本importrequestsforiinrange(500):url="http://248e4e18-a7a1-4bb1-adc1-e3a177974773.node4.buuoj.cn:81/shop?page={}".format(i)reponse=requests.get(url)if"lv6.png"inreponse.tex......
  • [CISCN2019 华北赛区 Day1 Web1]Dropbox
    进入题目注册一个账号登录进去后上传一个文件发现只能上传图片下载删除时分别抓包发现在download.php里下载,在delete.php处删除发现filename参数,有任意文件下载漏洞下载download.php,delete.php目录遍历在delete.php里发现class.phpdb=$db;}publi......
  • [CISCN2019 华北赛区 Day1 Web5]CyberPunk
    进入题目点击左下角发现不同文件查看index.php检查发现file参数猜测文件包含用php为协议读取源码require_once"config.php";if(!empty($_POST["user_name"])&&!empty($_POST["phone"])){$msg='';$pattern='/select|insert......
  • [CISCN2019 华北赛区 Day2 Web1]Hack World
    进入题目输入数字1数字20对select空格unionor等等测试发现没有过滤select空格也被过滤注意不能单独测试用亦或运算1^0为真尝试0^if((ascii(substr((select(flag)from(flag)),1,1))=100),0,1)回显正常根据回显判断正误编写脚本爆破,由于该网站请求太快会报429......
  • [CISCN2019 华东南赛区]Web4
    进入题目发现一个超链接、右键检查发现/read?url路径猜测后端语言不是php是python点击超链接跳转到百度猜测存在ssrf漏洞访问/etc/passwd成功尝试访问/app/app.py源码成功encoding:utf-8importre,random,uuid,urllibfromflaskimportFlask,session,requesta......
  • [CISCN2019 总决赛 Day2 Web1]Easyweb
    进入题目查看源码发现id参数可用sql注入脚本目录扫描发现robots.txt尝试fuzz爆破参数发现image.php.bak可用<?phpinclude"config.php";$id=isset($_GET["id"])?$_GET["id"]:"1";$path=isset($_GET["path"])?$_GET["path"]:"&......
  • [CISCN2019 华东南赛区]Web11
    进入题目注意到xff在url处随意输入目录·xff随之变化注意下放smarty是php模板猜测xff为模板注入点如下用if标签看到回显得到flagflag{6efda977-94fb-4d30-8668-fe28458ec2bf}......
  • [CISCN2019 华东南赛区]Double Secret
    进入题目由于请求不能过快,目录扫描工具失效可写脚本,根据题目两个secret,猜测有serect目录访问猜测还有一个secret参数随意输入发现源码泄露注意到有flask,考虑python模板注入注意到发现rc4加密找师傅的加密脚本importbase64fromurllib.parseimportquotedef......
  • [CISCN 2019 初赛]Love Math
    进入题目,直接源码代码审计、看师傅wp有黑名单字符过滤,有白名单函数过滤于是用编码绕过,利用eval函数执行命令,system('cat/flag.txt')base_convert(a,b,c)//将数值a按b进制转换为c进制dechex//将10进制转成16进制hex2bin()//16进制转成字符串base_convert(37907361743,......