其他分享
首页 > 其他分享> > P7902 「PMOI-0」儒略の日 题解

P7902 「PMOI-0」儒略の日 题解

作者:互联网

我踩过的坑

  1. 对于数字 \(i\),若 \(i\) 为奇数,则数字 \(i\) 两次出现位置之差 必须 超过 \(d\)。

  2. 对于数字 \(i\),若 \(i\) 为偶数,则数字 \(i\) 两次出现位置之差 不能 超过 \(d\)。

第一句的要求是:两个出现位置之差要 \(> d\)。

而第二句的要求是:两个出现位置之差 \(\le d\)。

思路

代码

#include<bits/stdc++.h>
using namespace std;
int n,d;
int f(){
    int size=0;
    for(int i=1;i<=n;i++) 
      if(i%2==1) size++;
      else size+=2;
    return size;
}//用来遍历串的函数,用于判断是否有解。
int main(){
	cin>>n>>d;
    if(d>=f()){
    	cout<<-1;return 0;
    }//判断是否有解,若没有则直接输出 -1 并退出。
    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;
}

标签:le,数字,int,题解,P7902,之差,儒略,位置,有解
来源: https://www.cnblogs.com/lzx1609/p/P7902.html