本文主要是介绍cf 342B - Xenia and Spies(贪心),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
cf中的B题,由于比赛时题意理解不到位,所以wrong了。
思路:
简单的贪心,受到监视的时候就输出‘X’,否则就朝目标位置挪动。
没有想到的地方就是m次审讯后还可以传递情报,(其实m次审讯只是在所有审讯中抽出的m次,)
代码如下:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
#include <set>
#include <map>#define M 100005
#define mod 1000000007
#define INF 0x7fffffff
#define eps 1e-8
#define LL long long
#define LLU unsigned long longusing namespace std;
int t[M], l[M], r[M];
int n, m, s, f, next;
int main ()
{scanf("%d%d%d%d", &n, &m, &s, &f);for(int i = 0; i < m; ++i)scanf("%d%d%d", &t[i], &l[i], &r[i]);int dir = s<f?1:-1;for(int i = 0; i < m && s!=f; ++i){int tt = (i==0?t[i]:t[i]-t[i-1]);tt -= 1;if((f-s)/dir<tt){tt = (f-s)/dir;s = f;}elses += dir*tt;for(int j = 1; j <= tt; ++j)printf("%c", dir==1?'R':'L');if(s==f) break;next = s+dir;if(next>=l[i]&&next<=r[i]||s>=l[i]&&s<=r[i])printf("X");else{printf("%c", dir==1?'R':'L');s = next;}}if(s!=f){int tt = (f-s)/dir;for(int j = 1; j <= tt; ++j)printf("%c", dir==1?'R':'L');}printf("\n");return 0;
}
这篇关于cf 342B - Xenia and Spies(贪心)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!