首页 > 其他分享 >洛谷 P6874 [COCI2013-2014#6] KOCKICE

洛谷 P6874 [COCI2013-2014#6] KOCKICE

时间:2024-11-16 16:19:10浏览次数:1  
标签:洛谷 int P6874 COCI2013 mid long check

动笔算算样例可得一个性质,只要确定中间位置的数是多少,其他位置就可以直接求出。

如果我们暴枚中间的数,必然超时。

于是我们需要用二分

如果中间位置上的数是答案,那么无论什么数,操作次数一定多于他。

所以我们只要判断关系就能判断往哪边找。

代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 3e5 + 5;
const long long MAXX = 1e14;
long long n;
long long m[N], s[N];
long long check(long long k){
	long long count = 0;
	for (long long i = 1; i <= (n >> 1) + 1; ++i) {// n >> 1相当于n / 2
		long long a = k + n / 2 + 1 - i;
		count += abs(a - m[i]) + abs(a - s[i]);
	}
	for (long long i = (n >> 1) + 2; i <= n; ++i) {
		long long b = k + i - n / 2 - 1;
		count += abs(b - m[i]) + abs(b - s[i]);
	}
	return count;
}
int main(){
	cin >> n;
	for (int i = 1; i <= n; ++i) {
		cin >> m[i];
	}
	for (int i = 1; i <= n; ++i) {
		cin >> s[i];
	}
	long long L = 0, R = MAXX;
	while (L < R) {
		long long mid = (L + R) >> 1;
		if (check(mid) < check(mid+1)) {//如果mid+1的操作次数多于mid的,答案在左边
			R = mid;
		} else {
			L = mid + 1;
		}
	}
	cout << check(L);
	return 0;
}

标签:洛谷,int,P6874,COCI2013,mid,long,check
From: https://www.cnblogs.com/yang-guang-hao-AKIOI/p/18549445

相关文章

  • CSP/信奥赛C++语法基础刷题训练(9):洛谷P1035:[NOIP2002 普及组] 级数求和
    CSP/信奥赛C++语法基础刷题训练(9):洛谷P1035:[NOIP2002普及组]级数求和题目描述已知:Sn=1......
  • CSP/信奥赛C++语法基础刷题训练(10):洛谷P1307:[NOIP2011 普及组] 数字反转
    CSP/信奥赛C++语法基础刷题训练(10):洛谷P1307:[NOIP2011普及组]数字反转题目描述给定一个整数NNN,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,......
  • 洛谷 P2890 [USACO07OPEN] Cheapest Palindrome G 做题记录
    我不会区间dp。设\(f_{i,j}\)表示使得区间\([i,j]\)为回文串的最小操作代价,\(cost_{i,j}\)表示字母\(i\)删除/添加的耗费,那么显而易见的,我们有:\(f_{i,j}\to\min(f_{i,j-1}+\min(cost_{s_j,0},cost_{s_j,1}),f_{i+1,j}+\min(cost_{s_i,0},cost_{s_i,1}))\)。当\(s_i......
  • Java 21和Java 8在洛谷上的区别
    Java21默认开大内存很容易遇到所以如果换成Java8最后一个我也不知道为啥,有大佬帮忙看一下吗逆序对-洛谷importjava.util.*;publicclassMain{  staticScannercin=newScanner(System.in);  //非递归版本的归并排序,返回逆序对的数量  publics......
  • 洛谷 P1365 WJMZBMR打osu! / Easy 做题记录
    设\(len\)表示当前的期望连击数,设\(ans\)为当前的答案,我们分类讨论来更新\(ans\):当现在打到了这个音符,那么\(ans\toans+(len+1)^2-len^2=ans+len\times2+1\)。当现在没打到这个音符,那么\(ans\)不变。当现在不知道打没打到,那么\(ans\toans+\frac{(len\times2......
  • 【洛谷】P1047 [NOIP2005 普及组] 校门外的树
    题目描述某校大门外长度为 l 的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。我们可以把马路看成一个数轴,马路的一端在数轴 00 的位置,另一端在 l 的位置;数轴上的每个整数点即 0,1,2,…,l都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数......
  • 【洛谷】P5727 【深基5.例3】冰雹猜想
    题目描述给出一个正整数 n,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 3 再加 1,否则除以 2。经过若干次循环后,最终都会回到 1。经过验证很大的数字(7×10^11)都可以按照这样的方式比变成 1,所以被称为“冰雹猜想”。例如当 n 是 20,变化的过程是 20......
  • 【洛谷】P5728 【深基5.例5】旗鼓相当的对手
    题目描述现有 N 名同学参加了期末考试,并且获得了每名同学的信息:语文、数学、英语成绩(均为不超过 150 的自然数)。如果某对学生 〈i,j〉 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。现在想知道这些同学中,有几对“旗鼓相当的......
  • 【题解】洛谷P11186: 三目运算
    不好玩!!!这是个树形结构,直接暴力模拟,但过不去,但是需要发现答案是个区间,我们对字符串处理时记录最大值最小值,然后到叶子节点时我们将此时的区间存起来,查询时直接二分查询这个数对于的区间就可以了。总结:不好玩!!!#include<bits/stdc++.h>usingnamespacestd;#definelllonglon......
  • 洛谷P11183 [ROIR 2018 Day2] 大数据处理
    涉及知识点:动态开点线段树,贪心前言很妙很感性直观的贪心,做完神清气爽。题意Link有一个长为\(2^k\)的序列,编号从\(0\)开始,你要在上面染色,每次只能染色\([k2^i,(k+1)2^i-1]\)的区间(\(0\leqi<k\)),问最少要染色多少次才能变成给定的目标序列。目标序列以形如\((x_1,y_1),(......