HDU 1698 Just a Hook
2008-07-05 20:07
162 查看
#include <iostream>
#define MAXN 100001
using namespace std;
int OP[MAXN][3];
int JUMP[MAXN];
int COLOR[MAXN];
int main()
{
int cas, ans, n, q, temp;
int i, j, k;
scanf("%d", &cas);
for (j = 1; j <= cas; j++)
{
scanf("%d %d", &n, &q);
for (i = 1; i <= n; i++)
{
COLOR[i] = 1;
JUMP[i] = i;
}
for (i = 0; i < q; i++)
scanf("%d %d %d", &OP[i][0], &OP[i][1], &OP[i][2]);
for (i = q - 1; i >= 0; i--)
{
for (k = OP[i][0]; k <= OP[i][1]; JUMP[temp] = OP[i][1] + 1)
{
temp = k;
if (JUMP[k] != k)
k = JUMP[k];
else
COLOR[k++] = OP[i][2];
}
}
for (i = 1, ans = 0; i <= n; i++)
ans += COLOR[i];
printf("Case %d: The total value of the hook is %d.\n", j, ans);
}
return 0;
}
#define MAXN 100001
using namespace std;
int OP[MAXN][3];
int JUMP[MAXN];
int COLOR[MAXN];
int main()
{
int cas, ans, n, q, temp;
int i, j, k;
scanf("%d", &cas);
for (j = 1; j <= cas; j++)
{
scanf("%d %d", &n, &q);
for (i = 1; i <= n; i++)
{
COLOR[i] = 1;
JUMP[i] = i;
}
for (i = 0; i < q; i++)
scanf("%d %d %d", &OP[i][0], &OP[i][1], &OP[i][2]);
for (i = q - 1; i >= 0; i--)
{
for (k = OP[i][0]; k <= OP[i][1]; JUMP[temp] = OP[i][1] + 1)
{
temp = k;
if (JUMP[k] != k)
k = JUMP[k];
else
COLOR[k++] = OP[i][2];
}
}
for (i = 1, ans = 0; i <= n; i++)
ans += COLOR[i];
printf("Case %d: The total value of the hook is %d.\n", j, ans);
}
return 0;
}
相关文章推荐
- Just a Hook (HDU 1698) 懒惰标记
- HDU 1698 Just A Hook (线段树,区间修改)
- F - Just a Hook HDU - 1698
- HDU 1698 Just a Hook(线段树成段更新)
- HDU 1698 Just a Hook(线段树区间修改)
- hdu 1698 Just a Hook(线段树基础)
- hdu 1698 Just a Hook(线段树-区间更新)
- hdu--1698 Just a Hook(线段树+区间更新+懒惰标记)
- HDU - 1698 Just a Hook —— 区间更新 区间查询
- HDU 1698 Just a Hook (线段树)
- HDU 1698 Just a Hook(区间修改,求累加和)
- HDU 1698 Just a Hook
- HDU 1698 Just a Hook 线段树区间更新(值进行覆盖)
- hdu1698 Just a Hook(成段更新+懒惰标记)
- [HDU 1698] Just a Hook splay
- F - Just a Hook HDU - 1698
- HDU 1698 Just a Hook
- HDU1698 Just a Hook(线段树区间更新、区间查询)
- HDU 1698 Just a Hook
- 【HDU 1698】Just a Hook