没想到,一道简单的题把我制裁了……

自动找人系统

提交(Submit)

中文 切换语言(Change Language)

【题目描述】

给定三个参数a,b,c,表示年,月,日,(不考虑闰年)表示一个时间节点。他要找出在两个时间节点之间的时间(包括两个时间节点本身)。现在给定两个时间节点和一个时间,他要判断这个时间是否在这个时间段之中。

【数据格式】

输入三行,三个时间,每行有三个数,表示年月日。前两行表示两个时间节点(不一定按照第一个小于第二个的顺序给出),最后一行是这个时间发生的时间。保证合法

输出一个“Yes”或者“No”表示是否在这个时间段之中。

样例输入:

2007 1 1
2007 12 31
2007 3 22

样例输出:

Yes

下面是我魔改过的代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a,b,c;
	int aa,bb,cc;
	int aaa,bbb,ccc;
	cin>>a>>b>>c;
	cin>>aa>>bb>>cc;
	cin>>aaa>>bbb>>ccc;
	if((aaa>a||(aaa==a&&bbb>b)||(aaa==a&&bbb==b&&ccc>=c))&&(aaa<aa||(aaa==aa&&bbb<bb)||(aaa==aa&&bbb==bb&&ccc<=cc))){
		cout<<"Yes"<< endl;
	}else{
	cout<<"No"<<endl;
	}
}
75分

和:

#include<bits/stdc++.h>
using namespace std;
int main(){;
    int a,b,c,aa,bb,cc,aaa,bbb,ccc;
    int f=0;
	cin>>a>>b>>c>>aa>>bb>>cc>>aaa>>bbb>>ccc;
    if(a>=aa||b>=bb||c>=cc){
        int d=a,e=b,f=c;
        a=aa;
        aa=d;
        b=bb;
        bb=e;
        c=cc;
        cc=f;
    }
    if(aaa>a&&aaa<aa){
    	f=1;
    	cout<<"Yes";
    }
    if(f!=1&&(aaa==a&&aaa<aa)||(aaa<a&&aaa==aa)){
		if(bbb>=b&&bbb<=bb){
			if(ccc>=c&&ccc<=cc){
				cout<<"Yes";
				f=1;
			}
		}
		if(f==0){
			cout<<"No";
		}
	}
	if(f!=1&&aaa==a&&aaa==aa){
		if(bbb>=b&&bbb<=bb){
			if(ccc>=c&&ccc<=cc){
				cout<<"Yes";
				f=1;
			}
		}
		if(f==0){
			cout<<"No";
		}
	}
}
45分

(大佬求解)!

4 个赞

我改了100多遍……

3 个赞

载问一个

#include<bits/stdc++.h>
char a[]="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";
int main(){
    int i;
    char c;
    while(cin>>c){
        for(i=1;i<strlen(a);i++){
			if(a[i]==c) break;
		}
        if(a[i]) putchar(a[i-1]);
        else putchar(c);
    }
}

题目:I AM FINE TODAY.

1 个赞

题面呢

2 个赞

额……还是换一个吧

古怪的二分查找

Problem ID: 8590

Contest ID: 6603

必做题

Wrong Answer

40 分

时间:1s 空间:256M

题目描述

众所周知,二分是有很多模板的,大哈坚信一招鲜吃遍天的道理,所以他一直都写用着这样的模板。

image.png

大哈现在有一个问题,对于给出的三个正整数,n,x,y,他想要知道有多少个A数组(下标从0开始)可以满足这样的条件

  • A数组是正整数1~n的一个排列,并且A_y = xAy​=x
  • 对这个a数组运行大哈的二分模板,可以得到返回值为真

因为这样的数组数量可能很多,答案要求对1e9+71e9+7取模后输出

输入格式

只有一行,包含三个正整数n,x,y,(1\le n,x \le 1000,, 0\le y \le n-11≤n,x≤1000,0≤y≤n−1)

输出格式

样例输入

4 1 2

样例输出

6

样例解释:可能的排列为 (2,3,1,4), (2,4,1,3), (3,2,1,4), (3,4,1,2), (4,2,1,3), (4,3,1,2)
代码:

#include<bits/stdc++.h>
using namespace std;
long long a[1005],vis[1005],s=0,n,m,k,x,y,zz;
const int M=1e9+7;
int main(){
	cin>>n>>x>>y;
	int l=0,r=n,mid,c1=0,c2=0;
	while(l<r){
		mid=(l+r)/2;
		if(mid<=y){
			l=mid+1;
			if(mid!=y) c1++;
		}else{
			r=mid;
			c2++;
		}
	}
	int a1=x-1,a2=n-x,a3=(n-c1-c2-1);
	long long ans=1;
	for(int i=1;i<=c1;i++){
		ans=(ans*a1)%M;
		a1--;
	}for(int i=1;i<=c2;i++){
		ans=(ans*a2)%M;
		a2--;
	}for(int i=1;i<=c1+c2+1;i++){
		ans=(ans*a3)%M;
		a3--;
	}
	cout<<ans;
}
1 个赞

你好
:smile::smile::smile:

咳,小心被人举报啊

建议改成伪代码

我早A了,还有, @shtg008 别发AC代码,会有人抄