凉心的比赛
B.这次比赛的时候我晚去了一会,等到我做这题的时候已经没有时间了,这道题是找到两个线段其中一个能包容另一个,我先用sort函数先对输入的数进行了排序,然后从头向后查找,后面符合条件的线段会替换前面的,能找的包含情况话就输出YES,否则就是NO。
代码如下:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
#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; } } }
更多精彩