青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

ACM___________________________

______________白白の屋
posts - 182, comments - 102, trackbacks - 0, articles - 0
<2010年9月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用鏈接

留言簿(24)

隨筆分類(332)

隨筆檔案(182)

FRIENDS

搜索

積分與排名

最新隨筆

最新評論

閱讀排行榜

評論排行榜

HDOJ 1698 HDU 1698 Just a Hook ACM 1698 IN HDU

Posted on 2010-09-17 10:09 MiYu 閱讀(578) 評論(4)  編輯 收藏 引用 所屬分類: C/C++ 、ACM ( 數據結構 ) 、ACM ( 線段樹 )
MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋    

 

 

 

題目地址 :

      http://acm.hdu.edu.cn/showproblem.php?pid=1698

題目描述 : 

Just a Hook

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3841    Accepted Submission(s): 1675


Problem Description
In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same length.



Now Pudge wants to do some operations on the hook.

Let us number the consecutive metallic sticks of the hook from 1 to N. For each operation, Pudge can change the consecutive metallic sticks, numbered from X to Y, into cupreous sticks, silver sticks or golden sticks.
The total value of the hook is calculated as the sum of values of N metallic sticks. More precisely, the value for each kind of stick is calculated as follows:

For each cupreous stick, the value is 1.
For each silver stick, the value is 2.
For each golden stick, the value is 3.

Pudge wants to know the total value of the hook after performing the operations.
You may consider the original hook is made up of cupreous sticks.
 

Input
The input consists of several test cases. The first line of the input is the number of the cases. There are no more than 10 cases.
For each case, the first line contains an integer N, 1<=N<=100,000, which is the number of the sticks of Pudge’s meat hook and the second line contains an integer Q, 0<=Q<=100,000, which is the number of the operations.
Next Q lines, each line contains three integers X, Y, 1<=X<=Y<=N, Z, 1<=Z<=3, which defines an operation: change the sticks numbered from X to Y into the metal kind Z, where Z=1 represents the cupreous kind, Z=2 represents the silver kind and Z=3 represents the golden kind.
 

Output
For each case, print a number in a line representing the total value of the hook after the operations. Use the format in the example.
 

Sample Input
1 10 2 1 5 2 5 9 3
 

Sample Output
Case 1: The total value of the hook is 24.
 

 

標準的線段樹,  成段更新 ,......     具體看 代碼 注釋 .

 

代碼如下 :

 /*

Coded By  : MiYu

Link      : http://www.cnblogs.com/MiYu  || http://m.shnenglu.com/MiYu

Author By : MiYu

Test      : 1

Program   : 1698

*/

//#pragma warning( disable:4789 )

#include <iostream>

#include <algorithm>

#include <string>

#include <set>

#include <map>

#include <utility>

#include <queue>

#include <stack>

#include <list>

#include <vector>

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <cmath>

using namespace std;


typedef struct seg_tree{

int left, right, col;

bool cov; //標記當前線段是否被覆蓋, 如果true, 表示這一段線段的值都為 col. false則相反

int mid (){ return (left + right) >> 1; }

}SEG;

SEG seg[300010];

void creat ( int beg, int end, int rt = 1 ){

seg[rt].left = beg;

seg[rt].right = end;

seg[rt].col =  1;

seg[rt].cov =  true;

if ( beg == end ) return;

int mid = seg[rt].mid();

creat ( beg, mid, rt << 1 );

creat ( mid + 1, end, ( rt << 1 ) + 1 );

}

void modify ( int beg, int end, int val, int rt = 1 ){

int LL = rt << 1;

int RR = ( rt << 1 ) + 1;

if ( seg[rt].left == beg && seg[rt].right == end ){ //線段被覆蓋, 標記 cov 為true  

seg[rt].cov = true;

seg[rt].col = val;

return ;

}

if ( seg[rt].cov ){ //如果線段曾經被覆蓋,  標記 false, 將col往下傳  

seg[rt].cov = false;

seg[LL].col = seg[RR].col = seg[rt].col;

seg[LL].cov = seg[RR].cov = true;

}

int mid = seg[rt].mid();

if ( end <= mid ){

modify ( beg, end, val, LL );

} else if ( beg > mid ) {

modify ( beg, end, val, RR );

} else {

modify ( beg, mid, val, LL );

modify ( mid + 1, end, val, RR );

}

}

int quy ( int beg, int end, int rt = 1 ){

if ( seg[rt].cov ){  // 線段如果是被覆蓋的 , 直接返回這一段區間的值

return ( seg[rt].right - seg[rt].left + 1 ) * seg[rt].col;

}

int mid = seg[rt].mid();

return quy ( beg, mid, rt << 1 ) + quy ( mid + 1, end, ( rt << 1 ) + 1 );

}


int main ()

{

int T, ca = 1;

scanf ( "%d", &T );

while ( T -- ){

int N;

scanf ( "%d", &N );

creat ( 1, N );

int M;

scanf ( "%d", &M );

for ( int i = 1; i <= M; ++ i ){

int beg, end, val;

scanf ( "%d%d%d", &beg, &end, &val );

modify ( beg, end, val );

}

printf ( "Case %d: The total value of the hook is %d.\n", ca++,quy( 1, N ) );

}

    return 0;

}


/*

1

10

2

1 5 2

5 9 3

*/



/*    此為一牛人代碼 , 速度 非常快 !!!! 0rz.........

#include<stdio.h>

int a[100001][3],c[100001];

int main()

{

    int t,i,j,n,m,sum,v,w=1;

    scanf("%d",&t);

    while(t--&&scanf("%d %d",&n,&m))

    {

        sum=0;

        for(i=1;i<=m;i++)

        scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);

        for(i=1;i<=n;i++)

        {

            v=1;

            for(j=m;j>=1;j--)

            {

                if(a[j][0]<=i&&a[j][1]>=i)

                {

                    v=a[j][2];

                    break;

                }

            }

            sum+=v;

        }

        printf("Case %d: The total value of the hook is %d.\n",w++,sum);

    }

}



*/

 

Feedback

# re: HDOJ 1698 HDU 1698 Just a Hook ACM 1698 IN HDU[未登錄]  回復  更多評論   

2010-09-18 11:18 by bb
下面的代碼只是剛好數據不能卡把?復雜度O(n*m)~

# re: HDOJ 1698 HDU 1698 Just a Hook ACM 1698 IN HDU  回復  更多評論   

2010-09-18 11:42 by MiYu
Accepted 1698 437MS 4300K 2117 B C++
這是 線段樹 的 AC 判定,
Accepted 1698 218MS 1360K 630 B C++
這是后面方法的 AC 判定, 快了 一倍

# re: HDOJ 1698 HDU 1698 Just a Hook ACM 1698 IN HDU[未登錄]  回復  更多評論   

2010-09-18 17:39 by bb
不是呀,只是OJ數據沒卡到這方法~~

# re: HDOJ 1698 HDU 1698 Just a Hook ACM 1698 IN HDU  回復  更多評論   

2010-10-30 07:56 by MiYu
我覺得 哪方法 很牛B =. =
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久成人精品| 国产精品久久久久久久第一福利| 欧美激情免费在线| 久久九九热re6这里有精品| 欧美专区一区二区三区| 午夜伦理片一区| 久久国产乱子精品免费女 | 欧美三区在线视频| 欧美天堂亚洲电影院在线观看| 欧美体内she精视频在线观看| 国产精品拍天天在线| 国产日韩三区| 91久久中文| 亚洲一区二区在线看| 欧美在线日韩在线| 欧美激情精品| 亚洲视频播放| 免费久久99精品国产| 欧美日本在线看| 国产精品丝袜91| 亚洲国产精品va在看黑人| 一区二区av| 久久久久九九视频| 99视频精品免费观看| 先锋影音网一区二区| 快she精品国产999| 国产精品99免费看| 在线激情影院一区| 香蕉久久国产| 亚洲精品美女在线| 欧美亚洲一区| 欧美另类在线播放| 韩日在线一区| 亚洲欧美日韩国产综合精品二区| 久久亚洲精品一区| 亚洲性色视频| 欧美激情视频一区二区三区免费| 国产欧美日韩视频在线观看| 亚洲美女尤物影院| 蜜桃av综合| 欧美一区二区高清| 国产精品免费观看在线| 一区二区三区欧美在线| 欧美第一黄色网| 亚洲欧美日韩天堂| 亚洲国产精品第一区二区三区 | 欧美搞黄网站| 欧美一级理论性理论a| 欧美性色视频在线| 日韩亚洲成人av在线| 欧美成人免费在线观看| 销魂美女一区二区三区视频在线| 欧美天天在线| 宅男在线国产精品| 99re热这里只有精品免费视频| 欧美v日韩v国产v| 精品999在线观看| 久久久久久久久久久久久久一区| 亚洲在线黄色| 国产精品自拍在线| 亚洲欧美在线磁力| 亚洲中字在线| 国产欧美韩日| 久久人人精品| 久久米奇亚洲| 亚洲黄色在线看| 亚洲国产人成综合网站| 欧美激情精品久久久久久| 亚洲精品欧洲精品| 亚洲精选一区二区| 国产精品美女视频网站| 欧美影院成年免费版| 欧美伊人久久久久久午夜久久久久 | 欧美高清在线| 99国产精品久久久久久久| 亚洲国内自拍| 欧美日韩一区二区视频在线| 一区二区三区视频在线看| 99在线精品观看| 国产欧美日韩亚州综合| 欧美大片在线看| 欧美日韩国产不卡| 午夜精品成人在线视频| 香蕉av777xxx色综合一区| 一区二区三区自拍| 亚洲人体影院| 国产精品稀缺呦系列在线| 久久婷婷国产综合国色天香| 老牛国产精品一区的观看方式| 亚洲国产精品高清久久久| 亚洲精品小视频在线观看| 国产目拍亚洲精品99久久精品| 久久久久久综合网天天| 久久久国产精品一区二区三区| 亚洲第一福利视频| 亚洲天堂成人| 亚洲国产精品尤物yw在线观看| 在线亚洲自拍| 黄色精品网站| 日韩一级大片| 在线看日韩av| 一区二区三区毛片| 一区视频在线看| 亚洲伦理一区| 亚洲综合精品四区| 亚洲精选在线观看| 欧美在线国产| 亚洲在线电影| 欧美精品久久久久久久免费观看 | 老司机午夜精品视频在线观看| 麻豆成人在线| 欧美在线日韩在线| 欧美日韩ab| 欧美黄色小视频| 黄色成人免费网站| 亚洲免费在线视频| 99在线热播精品免费| 老色鬼精品视频在线观看播放| 亚洲欧美卡通另类91av| 欧美激情一区二区在线| 毛片av中文字幕一区二区| 国产精品实拍| 日韩视频免费在线| 亚洲精品一区二区三区四区高清| 欧美中文在线视频| 久久本道综合色狠狠五月| 欧美日韩国产一级| 亚洲国产欧美一区二区三区同亚洲| 国产真实久久| 午夜精品一区二区三区在线播放| 亚洲一区二区精品视频| 欧美精品麻豆| 亚洲欧洲午夜| 日韩视频专区| 欧美啪啪一区| 一区二区高清在线| 亚洲综合社区| 国产精品毛片大码女人| 亚洲私人黄色宅男| 99爱精品视频| 欧美在线视频不卡| 欧美日韩一区二区三区高清| 久久色在线观看| 狠狠88综合久久久久综合网| 午夜免费电影一区在线观看| 欧美在线播放视频| 国际精品欧美精品| 久久久久久精| 欧美成ee人免费视频| 亚洲福利视频网站| 欧美1区视频| 亚洲人成人99网站| 亚洲一区二区视频在线观看| 欧美午夜精品久久久久久久| 亚洲图中文字幕| 久久久久久久久蜜桃| 一区二区三区中文在线观看| 免费观看30秒视频久久| 亚洲国产高清视频| 亚洲午夜精品久久| 国产视频一区在线| 久久久久国产精品一区二区| 男同欧美伦乱| 一区二区三区视频在线| 国产精品一二三视频| 久久精品国产欧美激情| 欧美国产日本高清在线| 国产精品99久久久久久白浆小说| 国产精品毛片一区二区三区| 久久精品国产久精国产思思| 亚洲国产精品va| 午夜宅男久久久| 亚洲国产合集| 国产九九精品视频| 老司机午夜精品视频在线观看| 亚洲二区视频| 欧美一区二区性| 亚洲精品极品| 国产日韩在线视频| 欧美精品v国产精品v日韩精品| 亚洲一级电影| 亚洲国产经典视频| 久久国产视频网| 一本久久a久久免费精品不卡| 国产日韩欧美91| 欧美日韩高清在线一区| 久久精品国内一区二区三区| 99精品国产福利在线观看免费 | 在线成人h网| 国产精品久久久久久久第一福利 | 欧美xx69| 欧美一区二区成人| 亚洲少妇最新在线视频| 亚洲国产成人不卡| 久久三级视频| 久久久久久久一区二区| 亚洲欧洲99久久| 亚洲一区3d动漫同人无遮挡| 亚洲精选成人| 亚洲人午夜精品免费|