首页 > 其他 > 详细

Codeforces 761D Dasha and Very Difficult Problem(贪心)

时间:2017-02-05 18:03:35      阅读:410      评论:0      收藏:0      [点我收藏+]

题目链接 Dasha and Very Difficult Problem

求出ci的取值范围,按ci排名从小到大贪心即可。

需要注意的是,当当前的ci不满足在这个取值范围内的时候,判为无解。

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 #define rep(i,a,b) for(int i(a); i <= (b); ++i)
 6 
 7 const int N = 100000 + 10;
 8 int a[N], b[N], c[N], op[N];
 9 int l, r, L, R, cnt;
10 bool flag;
11 int n, x;
12 
13 int main(){
14 
15     scanf("%d%d%d", &n, &l, &r);
16     rep(i, 1, n) scanf("%d", a + i);
17     rep(i, 1, n) scanf("%d", c + i);
18     rep(i, 1, n) op[c[i]] = i;
19 
20     L = l - r, R = r - l; cnt = L; flag = true;
21     rep(i, 1, n){
22         x = op[i];
23         if (a[x] + cnt < l){
24             if (l - a[x] > cnt){
25                 b[x] = l;
26                 cnt = l - a[x] + 1;
27             }
28             else{
29                 flag = false;
30                 break;
31             }
32         }
33         else
34         if (a[x] + cnt > r){
35             flag = false;
36             break;
37         }
38         else{
39             b[x] = a[x] + cnt;
40             ++cnt;
41         }
42     }
43 
44     if (!flag) puts("-1");
45     else rep(i, 1, n) printf("%d ", b[i]);
46     return 0;
47 
48 }

 

Codeforces 761D Dasha and Very Difficult Problem(贪心)

原文:http://www.cnblogs.com/cxhscst2/p/6367954.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!