Good Bye 2022: 2023 is NEAR 题解
Posted nike0good
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Good Bye 2022: 2023 is NEAR 题解相关的知识,希望对你有一定的参考价值。
Koxia and Whiteboards
Statement
Kiyora 有
n
n
n块白板,从
1
1
1 到
n
n
n 编号。初始情况下, 第
i
i
i 块白板上写着一个整数
a
i
a_i
ai 。
Koxia 要进行
m
m
m次操作。第
j
j
j 次操作是,选择一块白板并将上面的整数修改为
b
j
b_j
bj 。
计算全部操作后所有白板上数字之和的最大可能值。
每次操作修改最小的数。
#include<bits/stdc++.h>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) \\
For(j,m-1) cout<<a[i][j]<<' ';\\
cout<<a[i][m]<<endl; \\
#pragma comment(linker, "/STACK:102400000,102400000")
#define ALL(x) (x).begin(),(x).end()
#define gmax(a,b) a=max(a,b);
#define gmin(a,b) a=min(a,b);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b)return (a*b)%F;
ll add(ll a,ll b)return (a+b)%F;
ll sub(ll a,ll b)return ((a-b)%F+F)%F;
void upd(ll &a,ll b)a=(a%F+b%F)%F;
inline int read()
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) if (ch=='-') f=-1; ch=getchar();
while(isdigit(ch)) x=x*10+ch-'0'; ch=getchar();
return x*f;
ll a[101010];
int main()
// freopen("A.in","r",stdin);
// freopen(".out","w",stdout);
int T=read();
while(T--)
int n=read(),m=read();
if(n==1)
For(i,n+m) cin>>a[i];
cout<<a[n+m]<<endl;
continue;
priority_queue<ll, vector<ll>, greater<ll> > q;
For(i,n)
q.push(read());
For(i,m) q.pop(),q.push(read());
ll ans=0;
while(!q.empty()) ans+=q.top(),q.pop();
cout<<ans<<endl;
return 0;
Koxia and Permutation
Statement
Reve 有两个整数
n
n
n 和
k
k
k 。
对于一个长度为
n
n
n的排列
p
p
p,我们令
c
c
c 是一个长度为
n
−
k
+
1
n-k+1
n−k+1的数组,其中
。
c
i
=
m
a
x
(
p
i
,
⋯
,
p
i
+
k
−
1
)
+
m
i
n
(
p
i
,
⋯
,
p
i
+
k
−
1
)
c_i = max(p_i,\\cdots, p_i+k-1)+min(p_i,\\cdots, p_i+k-1)
ci=max(pi,⋯,pi+k−1)+min(pi,⋯,pi+k−1)
定义一个排列
p
p
p 的代价是
c
c
c 中的最大值。
Koxia 希望你构造一个排列使得其代价尽可能小。
Statement
Joi 有一个数组
a
a
a,包含
n
n
n 个正整数。Koxia 希望你判定是否存在一个正整数
x
x
x 使得
g
c
d
(
a
i
+
x
,
a
j
+
x
)
=
1
gcd(a_i+x,a_j+x)=1
gcd(ai+x,aj+x)=1
对于所有
1
≤
i
<
j
≤
n
1\\le i \\lt j \\le n
1≤i<j≤n 都成立。
#include<bits/stdc++.h>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,0x3f,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define MEMx(a,b) memset(a,b,sizeof(a));
#define INF (0x3f3f3f3f)
#define F (1000000007)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define vi vector<int>
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %lld\\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
以上是关于Good Bye 2022: 2023 is NEAR 题解的主要内容,如果未能解决你的问题,请参考以下文章
Good Bye 2022: 2023 is NEAR 题解