大佬求教啊~~~

P1986 元旦晚会

@[U41485](/space/show?uid=41485) @[Fitzwilliam_Darcy](/space/show?uid=26800) @[dimension_missing](/space/show?uid=36882) @[Algebra](/space/show?uid=34907) @[牛的传说](/space/show?uid=40985)
by 幽界の冥神 @ 2018-11-01 17:08:32


```cpp # include <cstdio> # include <algorithm> # include <cstring> #include<iostream> using namespace std; int n, m, t[30002], ans; struct node { int l, r, s; }f[5002], tmp[5002]; inline bool comp (node a, node b) { if (a.r == b.r) return a.l < b.l; else return a.r < b.r; } inline void merge_sort (int l, int r) { if (l == r) return ; int mid = (l+r)/2; merge_sort (l, mid); merge_sort (mid + 1, r); int i = l, k = l, j = r; while (i <= mid && j <= r) { if (comp (f[i], f[j])) { tmp[k] = f[i]; i ++; k ++; } else { tmp[k] = f[j]; j ++; k ++; } } while (i <= mid) { tmp[k] = f[i]; i ++; k ++; } while (j <= r) { tmp[k] = f[j]; j ++; k ++; } for (int i = l; i <= r; i ++) f[i] = tmp[i]; } int main () { scanf ("%d%d", &n, &m); for (int i = 1; i <= m; i ++){ scanf ("%d%d%d", &f[i].l, &f[i].r, &f[i].s); } merge_sort (1, m); for (int i = 1; i <= m; i ++) { int k = 0; for (int j = f[i].l; j <= f[i].r; j ++) k += t[j]; if (k < f[i].s) for (int j = f[i].r; j >= f[i].l; j --) { if (!t[j]) { t[j] = 1; k ++; ans ++; } if (k >= f[i].s) break; } } printf ("%d", ans); } ```
by Limerick @ 2018-11-01 18:01:38


@[幽界の冥神](/space/show?uid=33006)
by Limerick @ 2018-11-01 18:01:51


这归并没错啊
by Limerick @ 2018-11-01 18:08:05


好吧是我看错了
by Limerick @ 2018-11-01 18:13:04


```cpp # include <cstdio> # include <algorithm> # include <cstring> using namespace std; int n, m, t[30002], ans; struct node { int l, r, s; }f[5002], tmp[5002]; inline bool comp (node a, node b) { if (a.r == b.r) return a.l < b.l; else return a.r < b.r; } inline void merge_sort (int l, int r) { if (l == r) return ; int mid =(l+r)/2; merge_sort (l, mid); merge_sort (mid + 1, r); int i = l, k = l, j = r; while (i <= mid && j <= r) { if (comp (f[i], f[j])) { tmp[k] = f[i]; i ++; k ++; } else { tmp[k] = f[j]; j ++; k ++; } } while (i <= mid) { tmp[k] = f[i]; i ++; k ++; } while (j <= r) { tmp[k] = f[j]; j ++; k ++; } k=1; while(l<=r){ f[l++]=tmp[k++]; l++; k++; } } int main () { scanf ("%d%d", &n, &m); for (int i = 1; i <= m; i ++) scanf ("%d%d%d", &f[i].l, &f[i].r, &f[i].s); merge_sort (1, m); for (int i = 1; i <= m; i ++) { int k = 0; for (int j = f[i].l; j <= f[i].r; j ++) k += t[j]; if (k < f[i].s) for (int j = f[i].r; j >= f[i].l; j --) { if (!t[j]) { t[j] = 1; k ++; ans ++; } if (k >= f[i].s) break; } } printf ("%d", ans); } ```
by Limerick @ 2018-11-01 18:15:38


这样就对了
by Limerick @ 2018-11-01 18:15:48


好吧还是不对
by Limerick @ 2018-11-01 18:17:23


```cpp # include <cstdio> # include <algorithm> # include <cstring> using namespace std; int n, m, t[30002], ans; struct node { int l, r, s; }f[5002], tmp[5002]; inline bool comp (node a, node b) { if (a.r == b.r) return a.l < b.l; else return a.r < b.r; } inline void merge_sort (int l, int r) { if (l == r) return ; int mid =(l+r)/2; merge_sort (l, mid); merge_sort (mid + 1, r); int i = l, k = 1, j = mid+1; while (i <= mid && j <= r) { if (comp (f[i], f[j])) { tmp[k] = f[i]; i ++; k ++; } else { tmp[k] = f[j]; j ++; k ++; } } while (i <= mid) { tmp[k] = f[i]; i ++; k ++; } while (j <= r) { tmp[k] = f[j]; j ++; k ++; } k=1; while(l<=r){ f[l]=tmp[k]; l++; k++; } } int main () { scanf ("%d%d", &n, &m); for (int i = 1; i <= m; i ++) scanf ("%d%d%d", &f[i].l, &f[i].r, &f[i].s); merge_sort (1, m); for(int i=1;i<=m;i++){ //printf("%d",f[i].s); } for (int i = 1; i <= m; i ++) { int k = 0; for (int j = f[i].l; j <= f[i].r; j ++) k += t[j]; if (k < f[i].s) for (int j = f[i].r; j >= f[i].l; j --) { if (!t[j]) { t[j] = 1; k ++; ans ++; } if (k >= f[i].s) break; } } printf ("%d", ans); } ```
by Limerick @ 2018-11-01 18:21:54


AC代码(不要看上面) @[幽界の冥神](/space/show?uid=33006)
by Limerick @ 2018-11-01 18:22:22


| 下一页