1 条题解

  • 0
    @ 2025-8-24 22:34:06

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar yAlAxy
    菜炸了

    搬运于2025-08-24 22:34:06,当前版本为作者最后更新于2021-10-17 15:04:31,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    P7902题解

    本题思路:

    1. 构造方法:将偶数全部放在奇数之间,并且按顺序输出奇数。

    2. 这题若无解我们分奇数和偶数的情况讨论。

    3. 当给定的 n 为奇数时,同一个奇数应相差 n2×2+n2\dfrac{n}{2} \times 2 + \dfrac{n}{2} 并且应小于 d 否则,同一个奇数应相差 n2×2+n2\dfrac{n}{2} \times 2 + \dfrac{n}{2} 并且应小于等于 d 就输出负一。

    接下来——上代码。

    #include<bits/stdc++.h>
    using namespace std;
    int read()
    {
        int x=0,f=1;
    	char ch=getchar();
        while(ch<'0'||ch>'9')
    	{
    		if(ch=='-')
    			f=-1;
    		ch=getchar();
    	}
        while(ch>='0'&&ch<='9')
    	{
    		x=(x<<1)+(x<<3)+(ch^48);
    		ch=getchar();
    	}
        return x*f;
    }
    int main()
    {
    	cin.tie(0);
    	cout.tie(0);
    	int n=read(), d=read();
    	if((d>n/2*2+n/2&&n%2==1)||(d>=n/2*2+n/2&&n%2==0))
    	{
    		cout<<"-1";
    		return 0;
    	}
    	for(int i=1;i<=n;i+=2)
    		cout<<i<<" ";
    	for(int i=2;i<=n;i+=2)
    		cout<<i<<" "<<i<<" ";
    	for(int i=1;i<=n;i+=2)
    		cout<<i<<" ";
    	return 0;
    }
    
    • 1

    信息

    ID
    7184
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者