码迷,mamicode.com
首页 > 其他好文 > 详细

凉心的比赛

时间:2020-01-17 22:48:44      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:end   条件   algo   情况   return   开始   思路   typedef   线段   

B.这次比赛的时候我晚去了一会,等到我做这题的时候已经没有时间了,这道题是找到两个线段其中一个能包容另一个,我先用sort函数先对输入的数进行了排序,然后从头向后查找,后面符合条件的线段会替换前面的,能找的包含情况话就输出YES,否则就是NO。

代码如下:

        #include <iostream>

#include <algorithm>
using namespace std;

typedef long long ll;
const int MAXN = 3e5 + 10;

struct node{
ll start, end, ll;
}a[MAXN];

bool cmp(struct node a, struct node b){
if (a.end != b.end){
return a.end < b.end;
}
else{
return a.start > b.start;
}
}

int main(){
ll n;
cin >> n;
for (ll i = 0; i < n; i++){
cin >> a[i].start >> a[i].end;
a[i].ll = i + 1;
}
sort(a, a + n, cmp);
ll max = 0, mian;
for (ll i = 0; i < n; i++){
if (a[i].start > max){
max = a[i].start;
mian = a[i].ll;
}
else{
cout << mian << " " << a[i].ll << endl;
return 0;
}
}
cout << "-1" << " " << "-1" << endl;
return 0;
}

C.地下城还有劳拉

我刚开始写这个的时候想的是一步一步来,先走到最下面再往一边走蛇形,一次一步,写完之后我真的是天真了,题目的数还是挺大的,我毫不意外的超了时间,然后我就升级了一下我的思路,我觉得一步一步不行的话,我就让他一次走一排,让他提提速,我改了改程序提交上以后,我又毫不意外的超时了,这时候我想到了我的终极思路,我先让他走到最下面,然后让你一下走完,对剩余的步数取除数和余数,然后判断除数的奇偶性,决定他向上走了多少步,也决定了他向那边走,在加上余数,就能的到想要的答案,如果步数低于(1,2)就说明他已经到了这里,所以直接输出(1,2)。

代码如下:

#include<iostream>
using namespace std;
int main()
{
long long n,m,k;
cin>>n>>m>>k;
long long a=1,b=1;
if(k+1<=n){
cout<<a+k<<" "<<b;
}
else{
k=k+a-n;
a=n;
k--;
b++;
long long x=k/(m-1);
long long y=k%(m-1);
a-=x;
if(x%2==0){
b+=y;
}else{
b=m-y;
}
if(a<1||b<2){
a=1;b=2;
cout<<a<<" "<<b;
}else{
cout<<a<<" "<<b;
}

}
}

 

 

 

凉心的比赛

标签:end   条件   algo   情况   return   开始   思路   typedef   线段   

原文地址:https://www.cnblogs.com/yclW/p/12207659.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!