首页 > 其他分享 >LY1380 [ 20231009 NOIP 模拟赛 T1 ] AK 神

LY1380 [ 20231009 NOIP 模拟赛 T1 ] AK 神

时间:2023-10-09 19:22:32浏览次数:41  
标签:NOIP LY1380 int 20231009 最终 pmod ifdef include equiv

题意

给定长度为 \(n\) 的序列 \(S\)。

\(A\),\(B\) 两人轮流取连续 \(k\) 个数,保证 \(n \equiv 1\pmod k\)。

\(A\) 使最终数字更小,\(B\) 使最终数字更大。

问取到数的和。

Sol

直接考虑每次选哪些数,怎么选显然是不好做的。

不难发现 \(n \equiv 1\pmod k\) 的条件。

题面提示我们要往最终剩下的数字想。

显然最终剩下的数与题目的问题等价。

对于一个序列 \(S_1, S_2, ..., S_i, ..., S_n\) 若其中 \(S_i\) 为最终留下的数。那就说明 \(1 \to i - 1\) 与 \(i + 1 \to n\) 都 \(\equiv 0\pmod k\)。

也就是 \(i \equiv 1\pmod k\)。

把所有位置排个序,求中位数即可。

Code

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <array>
#include <vector>
#define int long long
using namespace std;
#ifdef ONLINE_JUDGE

#define getchar() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2) ? EOF : *p1++)
char buf[1 << 23], *p1 = buf, *p2 = buf, ubuf[1 << 23], *u = ubuf;

#endif
int read() {
	int p = 0, flg = 1;
	char c = getchar();
	while (c < '0' || c > '9') {
		if (c == '-') flg = -1;
		c = getchar();
	}
	while (c >= '0' && c <= '9') {
		p = p * 10 + c - '0';
		c = getchar();
	}
	return p * flg;
}
void write(int x) {
	if (x < 0) {
		x = -x;
		putchar('-');
	}
	if (x > 9) {
		write(x / 10);
	}
	putchar(x % 10 + '0');
}

vector <int> isl;
signed main() {
#ifdef ONLINE_JUDGE
	freopen("ak.in", "r", stdin);
	freopen("ak.out", "w", stdout);
#endif
	int n = read(), k = read();
	int ans = 0;
	for (int i = 1; i <= n; i++) {
		int x = read();
		ans += x;
		if (i % k == 1 || k == 1)
			isl.push_back(x);
	}
	sort(isl.begin(), isl.end());
	write(ans - isl[(isl.size()) / 2]), puts("");
	return 0;
}

标签:NOIP,LY1380,int,20231009,最终,pmod,ifdef,include,equiv
From: https://www.cnblogs.com/cxqghzj/p/17752945.html

相关文章

  • 20231009 模拟赛总结
    模拟赛链接排名:\(\text{rank1}\)分数:\(100+100+70+20=290\)终于有一次模拟赛不掉分了。T1:最后一课/dist题目描述:在一个平面直角坐标系上,给定一条直线\(y=k\)和两个点\(P(x_1,y_1),Q(x_2,y_2)\),求经过水平线的两点的最短距离。(\(k,x_1,y_1,x_2,y_2\le5\times10^8\))思......
  • 华为云OBS配置-远程附件-20231009
    使用此服务前请先注册并绑定华为云官方合作伙伴账号,享受VIP服务和优惠价格(新购和续费都有专属折扣),更能领取大额代金券!  立即注册/已有账号绑定=>>! 如果不能绑定,请联系售前商务或工单联系售后处理!  创建华为云存储OBS步骤: 一、进入OBS控制台:https://storage.huawei......
  • 随笔20231009
    诺贝尔经济学奖获得者弗里德曼说:花自己的钱办自己的事,最为经济;花自己的钱给别人办事,最有效率;花别人的钱为自己办事,最为浪费;花别人的钱为别人办事,最不负责任。花自己的钱办自己的事,既讲节约,又讲效果;花自己的钱,办别人的事,只讲节约,不讲效果;花别人的钱,办自己的事,只讲效果,不讲节约;花别......
  • LY1366 [ 20231005 NOIP 模拟赛 T0 ] 加固
    题意设\(T\)是由\(26\)小写英文字母排列得到的字符串。\(T'\)由\(T\)复制若干次得到。给定字符串\(S\)为\(T'\)的子序列,求\(T'\)的最小复制次数。保证出现的不同字母不超过\(20\)种\(1\le|S|\le10^5\)Sol一个巧妙的转化,考虑将\(T\)串作为字典序,那么当......
  • LY1374 [ 20231008 NOIP 模拟赛 T2 ] 机房惨案
    题意给定一棵树,每次操作将一个点染成黑色。求询问的点到所有黑点的路径编号最小值。**数据保证第一次为染色操作**Sol注意到保证第一次为染色。考虑钦定根节点为染色的点。那么对于所有染色操作,暴力记录染色的点到根节点的路径上所有点的贡献。每个点只会贡献一次,这部分......
  • P1003 [NOIP2011 提高组] 铺地毯
    第一思路:开一个N*N的数组,每次都扫一遍地毯范围并标记编号然后你会发现:喜提MLE为什么呢?我们来看看数据范围0≤n≤1e4n的范围是1e4,数组总大小为1e16,大约需要4000TB的内存空间服务器也不带这么玩的正解:将地毯信息用结构体存储structnode{ intx1,y1,x2,y2;//x1......
  • 2023NOIP A层联测5
    A.T1(cook)复合题,考场上只做出来了分块的部分,没有想到那个组合数求和可以用莫队分块部分具体不说了,对散块部分加权时,可以采用归并优化时间复杂度(因为我北卡长哩,卡到了晚饭之后,卡了一下午,好欸!)现在考虑问题\(\sum_{i=0}^{k}\dbinom{x}{i}\)令$(S(n,m)=\sum_{i=0}^{m}C......
  • 洛谷 P1969 [NOIP2013 提高组] 积木大赛 - 小思维
    洛谷P1969[NOIP2013提高组]积木大赛[NOIP2013提高组]积木大赛题目描述春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为\(n\)的大厦,大厦可以看成由\(n\)块宽度为\(1\)的积木组成,第\(i\)块积木的最终高度需要是\(h_i\)。在搭建开始之前......
  • 2023NOIP A层联测6
    A.万花筒考虑发现每次相当于把x和x+d连边,不难发现最后一定是一些环证明可以看白简B.冒泡排序趟数期望写一下我曾经比较疑惑的点为什么inv和p一定一一对应,因为我们发现只要给出我们一个inv我们就可以倒推出唯一确定的p,所以它们是一一对应的关系这道......
  • P3953 [NOIP2017 提高组] 逛公园
    Description策策同学特别喜欢逛公园。公园可以看成一张\(N\)个点\(M\)条边构成的有向图,且没有自环和重边。其中\(1\)号点是公园的入口,\(N\)号点是公园的出口,每条边有一个非负权值,代表策策经过这条边所要花的时间。策策每天都会去逛公园,他总是从\(1\)号点进去,从\(N\)......