@[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