{"id":840,"date":"2019-07-23T20:15:39","date_gmt":"2019-07-23T12:15:39","guid":{"rendered":"https:\/\/xbtzone.com\/blog\/?p=840"},"modified":"2020-05-20T11:49:54","modified_gmt":"2020-05-20T03:49:54","slug":"day-64-%e6%a0%91%e5%bd%a2%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%e4%b9%8b%e7%ba%bf%e6%ae%b5%e6%a0%91","status":"publish","type":"post","link":"https:\/\/xbtzone.com\/blog\/day-64-%e6%a0%91%e5%bd%a2%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84%e4%b9%8b%e7%ba%bf%e6%ae%b5%e6%a0%91\/","title":{"rendered":"Day 64 \u6811\u5f62\u6570\u636e\u7ed3\u6784\u4e4b\u7ebf\u6bb5\u6811"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote\"><p>\u7ebf\u6bb5\u6811\u662f\u4e00\u79cd\u57fa\u672c\u7684\u9ad8\u7ea7\u6570\u636e\u7ed3\u6784\uff0c\u5b66\u4e60\u5b83\u5bf9\u89e3\u51b3\u533a\u95f4\u95ee\u9898\u6709\u5f88\u5927\u5e2e\u52a9<\/p><cite>\u8fd9\u7bc7\u6587\u7ae0\u662f\u6211\u5bf9\u4e0a\u5b66\u671fACM-ICPC\u9009\u4fee\u8bfe\u7a0b\u7ed3\u8bfe\u8bba\u6587\u7684\u5c0f\u6574\u7406\u3002<\/cite><\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1 \u6982\u8ff0<\/h2>\n\n\n\n<p>\u7ebf\u6bb5\u6811\uff08Segment tree\uff09\u53c8\u540d\u533a\u95f4\u6811\uff0c\u662f\u4e00\u79cd\u9ad8\u7ea7\u6570\u636e\u7ed3\u6784\uff0c\u5b83\u57fa\u4e8e\u4e8c\u53c9\u641c\u7d22\u6811\u3002\u7ebf\u6bb5\u6811\u7ecf\u5e38\u7528\u4e8e\u89e3\u51b3\u533a\u95f4\u95ee\u9898\u548c\u7ebf\u6bb5\u95ee\u9898\uff0c\u5b83\u7684\u4f18\u70b9\u5728\u4e8e\u80fd\u5feb\u901f\u5730\u67e5\u8be2\u6216\u4fee\u6539\u67d0\u533a\u95f4\u8303\u56f4\u7684\u6307\u5b9a\u6807\u8bb0\u503c\u3002<\/p>\n\n\n\n<p>\u5b9e\u73b0\u7ebf\u6bb5\u6811\u8fd9\u4e00\u6570\u636e\u7ed3\u6784\u7684\u57fa\u672c\u601d\u60f3\uff1a<strong>\u4e8c\u5206\u6cd5\u548c\u9012\u5f52<\/strong>\u3002<\/p>\n\n\n\n<p>\u7ebf\u6bb5\u6811\u57fa\u4e8e\u4e8c\u53c9\u6811\u5f62\u7ed3\u6784\uff0c\u4e00\u822c\u91c7\u7528\u6570\u7ec4\u7ed3\u6784\u50a8\u5b58\uff0c\u6811\u7684\u6bcf\u4e2a\u7ed3\u70b9\u5305\u542b\u7684\u4fe1\u606f\u6709\uff1a<\/p>\n\n\n\n<p>\uff081\uff09\u533a\u95f4\u5de6\u7aef\u70b9<\/p>\n\n\n\n<p>\uff082\uff09\u533a\u95f4\u53f3\u7aef\u70b9<\/p>\n\n\n\n<p>\uff083\uff09\u6807\u8bb0\u7684\u6570\u636e<\/p>\n\n\n\n<p>\uff084\uff09\uff08\u53ef\u9009\uff09\u61d2\u6807\u8bb0\u3002<\/p>\n\n\n\n<p>\u4e00\u68f5\u8868\u793a\u533a\u95f4[1,4]\u7684\u7ebf\u6bb5\u6811\u53ef\u5982\u56fe1\u6240\u793a\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" loading=\"lazy\" width=\"641\" height=\"322\" src=\"https:\/\/xbtzone.com\/blog\/wp-content\/uploads\/2019\/07\/\u56fe\u7247-1.png\" alt=\"\" class=\"wp-image-842\"\/><figcaption>\u56fe1<\/figcaption><\/figure><\/div>\n\n\n\n<p>\u7ebf\u6bb5\u6811\u5177\u6709\u4ee5\u4e0b\u6027\u8d28\uff1a<\/p>\n\n\n\n<p><strong>\u6027\u8d28<\/strong><strong> 1 <\/strong>&nbsp;\u8bbe\u7ed3\u70b9\u6240\u8868\u793a\u7684\u533a\u95f4\u8303\u56f4\u4e3a[<em>left<\/em>,<em>right<\/em>],\u5219\u4e2d\u70b9\u5750\u6807<em>mid<\/em> = (<em>left<\/em> + <em>right<\/em>) \u00f7 2\uff0c\u5b83\u7684\u5de6\u5b50\u7ed3\u70b9\u6240\u8868\u793a\u7684\u533a\u95f4\u8303\u56f4\u4e3a[<em>left<\/em>,<em>mid<\/em>]\uff0c\u53f3\u5b50\u7ed3\u70b9\u6240\u8868\u793a\u7684\u533a\u95f4\u8303\u56f4\u4e3a[<em>mid<\/em> + 1,<em>right<\/em>]\u3002<\/p>\n\n\n\n<p><strong>\u6027\u8d28 2 <\/strong>&nbsp;\u82e5\u6709\u4e00\u7ed3\u70b9<em>k<\/em>\uff0c<em>k<\/em>\u4e3a\u5176\u5728\u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\uff0c\u5176\u5de6\u5b50\u7ed3\u70b9\u5728\u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\u4e3a2<em>k<\/em>\uff0c\u5176\u53f3\u5b50\u7ed3\u70b9\u5728\u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\u4e3a2<em>k<\/em>+1\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2 \u7ebf\u6bb5\u6811\u7684\u57fa\u672c\u64cd\u4f5c<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>\u4e00\u3001\u5f15\u4f8b<\/strong><\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" loading=\"lazy\" width=\"711\" height=\"106\" src=\"https:\/\/xbtzone.com\/blog\/wp-content\/uploads\/2019\/07\/\u5c4f\u5e55\u5feb\u7167-2019-07-23-\u4e0b\u53488.01.14.png\" alt=\"\" class=\"wp-image-843\"\/><\/figure><\/div>\n\n\n\n<p><strong>\u5206\u6790<\/strong><strong> <\/strong>\u53ef\u4ee5\u91c7\u7528\u679a\u4e3e\u6cd5\uff0c\u5bf9\u533a\u95f4\u91cc\u9762\u7684\u6bcf\u4e00\u4e2a\u6570\u90fd\u8fdb\u884c\u52a0<em>m<\/em>\u64cd\u4f5c\uff0c\u7b97\u6cd5\u590d\u6742\u5ea6\u4e3a<em>O<\/em>(<em>n<\/em>)\u3002\u4f46\u662f<em>n<\/em>\u7684\u6570\u636e\u8303\u56f4\u592a\u5927\uff0c\u91c7\u7528\u679a\u4e3e\u6cd5\u4f1a\u8d85\u65f6\u3002\u53ef\u4ee5\u91c7\u7528\u7ebf\u6bb5\u6811\u6cd5\u89e3\u51b3\u8be5\u95ee\u9898\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e8c\u3001\u61d2\u6807\u8bb0<\/h3>\n\n\n\n<p>\u89e3\u51b3\u4e0a\u8ff0\u95ee\u9898\uff0c\u5982\u679c\u5148\u5bf9\u533a\u95f4[<em>s<\/em>,<em>t<\/em>]\u5185\u7684\u6240\u6709\u53f6\u5b50\u7ed3\u70b9\u6240\u50a8\u5b58\u7684\u6574\u6570\u90fd\u8fdb\u884c\u4e00\u6b21\u52a0<em>m<\/em>\u64cd\u4f5c\uff0c\u518d\u5bf9\u5176\u975e\u53f6\u7236\u7ed3\u70b9\u56de\u6eaf\u6c42\u548c\uff0c\u6700\u540e\u5bf9\u5728\u533a\u95f4\u5185\u7684\u6240\u6709\u6570\u8fdb\u884c\u6c42\u548c\u5e76\u67e5\u8be2\uff0c\u5176\u7b97\u6cd5\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u4f3c\u4e4e\u8981\u6bd4<em>O<\/em>(<em>n<\/em>)\u8fd8\u8981\u9ad8\u5f97\u591a\u3002\u4f46\u6b63\u5982\u6982\u8ff0\u91cc\u9762\u6240\u8bf4\uff0c\u7ebf\u6bb5\u6811\u5e76\u4e0d\u9700\u8981\u5bf9\u67d0\u4e00\u533a\u95f4\u5185\u7684\u6240\u6709\u53f6\u5b50\u7ed3\u70b9\u8fdb\u884c\u4fee\u6539\u548c\u67e5\u8be2\u7684\u64cd\u4f5c\u3002\u5bf9\u4e8e\u5f15\u4f8b\u4e2d\u7684\u95ee\u9898\uff0c\u5728\u4fee\u6539\u533a\u95f4\u6570\u636e\u65f6\uff0c\u53ea\u9700\u8981\u5bf9\u67d0\u4e00\u533a\u95f4\u6240\u5728\u7684\u7ed3\u70b9\u52a0\u4e0a(<em>m<\/em>\u00d7\u533a\u95f4\u957f\u5ea6)\u5373\u53ef\uff0c\u8be5\u533a\u95f4\u7684\u6574\u6570\u548c\u6570\u636e\u5c31\u53ef\u4ee5\u76f4\u63a5\u67e5\u8be2\u51fa\u6765\u4e86\u3002\u4f46\u662f\uff0c\u4fee\u6539\u533a\u95f4\u548c\u67e5\u8be2\u533a\u95f4\u662f\u53ef\u4ee5\u4e0d\u540c\u7684\uff0c\u5728\u4fee\u6539\u533a\u95f4\u6570\u636e\u7ed3\u675f\u540e\u8981\u67e5\u8be2\u533a\u95f4\u6570\u636e\u65f6\uff0c\u5982\u679c\u8981\u67e5\u8be2\u7684\u533a\u95f4\u662f\u4e0a\u8ff0\u4fee\u6539\u533a\u95f4\u7684\u4e00\u4e2a\u5b50\u96c6\uff0c\u8fd9\u65f6\u5c31\u8981\u5bf9\u4e0a\u8ff0\u52a0\u6cd5\u64cd\u4f5c\u4e0b\u53d1\u5230\u5b50\u7ed3\u70b9\uff0c\u5373\u8ba9\u5b50\u7ed3\u70b9\u4e5f\u52a0\u4e0a(<em>m<\/em>\u00d7\u533a\u95f4\u957f\u5ea6)\uff0c\u4e3a\u5b9e\u73b0\u4e0b\u53d1\u64cd\u4f5c\uff0c\u6211\u4eec\u8981\u5f15\u5165\u4e00\u4e2a\u65b0\u7684\u7ed3\u70b9\u4fe1\u606f\uff1a<strong>\u61d2\u6807\u8bb0<\/strong>\uff0c\u7528\u4e8e\u7d2f\u79ef\u533a\u95f4\u7ed3\u70b9\u7684\u64cd\u4f5c\u3002\u5728\u67e5\u8be2\u88ab\u4fee\u6539\u6570\u636e\u7684\u533a\u95f4\u7ed3\u70b9\u7684\u5b50\u533a\u95f4\u7ed3\u70b9\u6570\u636e\u65f6\uff0c\u61d2\u6807\u8bb0\u4f1a\u53d1\u6325\u5176\u4e0b\u53d1\u7d2f\u8ba1\u7684\u52a0\u6cd5\u64cd\u4f5c\u529f\u80fd\u3002<\/p>\n\n\n\n<p>\u540c\u6837\u5730\uff0c\u5982\u679c\u8981\u4fee\u6539\u7684\u533a\u95f4\u662f\u67d0\u4e00\u533a\u95f4\u7684\u5b50\u96c6\uff0c\u8fd9\u65f6\u8981\u628a\u7ed3\u679c\u56de\u6eaf\u5230\u7236\u7ed3\u70b9\uff0c\u4f46\u6b64\u65f6\u5e76\u4e0d\u9700\u8981\u501f\u52a9\u61d2\u6807\u8bb0\uff0c\u56e0\u4e3a\u5728\u67d0\u6b21\u9012\u5f52\u64cd\u4f5c\u7ed3\u675f\u524d\u53ef\u4ee5\u76f4\u63a5\u628a\u7236\u7ed3\u70b9\u6570\u636e\u8d4b\u503c\u4e3a\u5de6\u53f3\u5b50\u7ed3\u70b9\u7684\u6570\u636e\u4e4b\u548c\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e09\u3001\u5efa\u7acb\u7ebf\u6bb5\u6811<\/h3>\n\n\n\n<p>\u7ebf\u6bb5\u6811\u57fa\u4e8e\u4e8c\u53c9\u641c\u7d22\u6811\uff0c\u5176\u6570\u636e\u7ed3\u6784\u4e0e\u4e8c\u53c9\u6811\u5f62\u6570\u636e\u7ed3\u6784\u7c7b\u4f3c\u3002<\/p>\n\n\n\n<p>\u672c\u4f8b\u91c7\u7528\u6570\u7ec4\u6765\u50a8\u5b58\u7ebf\u6bb5\u6811\u7684\u7ed3\u70b9\uff0c\u6570\u7ec4\u957f\u5ea6\u4e3a4<em>n<\/em>+1\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>#define max_n 1000000<\/p><p>typedef struct _tNode<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; int l;<\/p><p>&nbsp;&nbsp;&nbsp; int r;<\/p><p>&nbsp;&nbsp;&nbsp; int lazy;<\/p><p>&nbsp;&nbsp;&nbsp; int sum;<\/p><p>}Node;<\/p><p>Node node[4 * max_n + 1];<\/p><\/blockquote>\n\n\n\n<p>\u7ed3\u5408\u6027\u8d281\u548c\u6027\u8d282\uff0c\u5229\u7528\u4e8c\u5206\u6cd5\u548c\u9012\u5f52\u601d\u60f3\uff0c\u53ef\u4ee5\u5f88\u5bb9\u6613\u5730\u5efa\u7acb\u4e00\u68f5\u7ebf\u6bb5\u6811\u3002<em>k<\/em>\u8868\u793a\u6811\u6839\u7684\u6570\u7ec4\u4e0b\u6807\uff0c<em>l<\/em><em>\u3001r<\/em>\u5206\u522b\u8868\u793a\u533a\u95f4\u7684\u5de6\u53f3\u7aef\u70b9\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>void build(int k,int l,int r)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (l &gt; r) <\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<\/p><p>&nbsp;&nbsp;&nbsp; node[k].l = l;<\/p><p>&nbsp;&nbsp;&nbsp; node[k].r = r;<\/p><p>&nbsp;&nbsp;&nbsp; node[k].lazy = 0;<\/p><p>&nbsp;&nbsp;&nbsp; if (l == r)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].sum = 1;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp; int mid = (l + r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; build(k * 2, l, mid);<\/p><p>&nbsp;&nbsp;&nbsp; build(k * 2 + 1, mid + 1, r);<\/p><p>&nbsp;&nbsp;&nbsp; up(k);<\/p><p>}<\/p><\/blockquote>\n\n\n\n<p>up\u51fd\u6570\u6267\u884c\u5de6\u53f3\u5b50\u7ed3\u70b9\u6570\u636e\u4e4b\u548c\u56de\u6eaf\u7236\u7ed3\u70b9\u64cd\u4f5c\uff0c\u5176\u4ee3\u7801\u5982\u4e0b\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>void up(int k)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; node[k].sum = node[k * 2].sum + node[k * 2 + 1].sum;<\/p><p>}<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\u56db\u3001\u7ebf\u6bb5\u6811\u533a\u95f4\u67e5\u8be2<\/h3>\n\n\n\n<p>\u4ece\u6839\u7ed3\u70b9\u5f00\u59cb\uff0c\u5224\u65ad\u7ed3\u70b9\u6240\u8868\u793a\u7684\u533a\u95f4\u8303\u56f4\u662f\u5426\u5728\u6240\u8981\u67e5\u8be2\u7684\u533a\u95f4\u8303\u56f4\u4ee5\u5185\uff0c\u5982\u679c\u662f\u5219\u8fd4\u56de\u7ed3\u70b9\u6240\u8868\u793a\u7684\u533a\u95f4\u7684\u548c\u3002\u5426\u5219\uff0c\u5c06\u61d2\u6807\u8bb0\u4ece\u7236\u7ed3\u70b9\u4e0b\u53d1\u81f3\u5de6\u53f3\u5b50\u7ed3\u70b9\u3002\u88ab\u67e5\u8be2\u533a\u95f4\u6240\u5728\u7684\u7ed3\u70b9\u53ef\u80fd\u6a2a\u8de8\u4e24\u4e2a\u6216\u4e24\u4e2a\u4ee5\u4e0a\u7684\u7ed3\u70b9\uff0c\u56e0\u6b64\u5728\u4e0b\u4e00\u6b65\uff0c\u5982\u679c\u67e5\u8be2\u533a\u95f4\u7684\u5de6\u7aef\u70b9\u5c0f\u4e8e\u6216\u7b49\u4e8e\u5f53\u524d\u7ed3\u70b9\u533a\u95f4\u7684\u4e2d\u70b9\u65f6\uff0c\u9012\u5f52\u7ed3\u70b9\u7684\u5de6\u5b50\u6811\uff0c\u5982\u679c\u67e5\u8be2\u533a\u95f4\u7684\u53f3\u7aef\u70b9\u5927\u4e8e\u5f53\u524d\u7ed3\u70b9\u533a\u95f4\u7684\u4e2d\u70b9\u65f6\uff0c\u9012\u5f52\u7ed3\u70b9\u7684\u53f3\u5b50\u6811\u3002\u6700\u540e\u5c06\u5f97\u5230\u7684\u5de6\u5b50\u6811\u7684\u6574\u6570\u548c\u4e0e\u53f3\u5b50\u6811\u7684\u6574\u6570\u548c\u76f8\u52a0\u5e76\u8fd4\u56de\uff0c\u5373\u53ef\u5f97\u5230\u5f85\u67e5\u533a\u95f4\u7684\u548c\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>int query(int k,int l,int r)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; int sum_l = 0, sum_r = 0;<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].l &gt;= l &amp;&amp; node[k].r &lt;= r)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return node[k].sum;<\/p><p>&nbsp;&nbsp;&nbsp; down(k);<\/p><p>&nbsp;&nbsp;&nbsp; int mid = (node[k].l + node[k].r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; if (l &lt;= mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum_l = query(k * 2, l, r);<\/p><p>&nbsp;&nbsp;&nbsp; if (r &gt; mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum_r = query(k * 2 + 1, l, r);<\/p><p>&nbsp;&nbsp;&nbsp; return sum_l + sum_r;<\/p><p>}<\/p><\/blockquote>\n\n\n\n<p>\u7236\u7ed3\u70b9\u4e0b\u53d1\u61d2\u6807\u8bb0\u5230\u5de6\u53f3\u5b50\u7ed3\u70b9\u65f6\uff0c\u5982\u679c\u7236\u7ed3\u70b9\u65e0\u61d2\u6807\u8bb0\u8bb0\u5f55\uff0c\u5219\u76f4\u63a5\u8fd4\u56de\uff0c\u5982\u679c\u6709\uff0c\u5219\u628a\u5176\u5de6\u53f3\u5b50\u7ed3\u70b9\u7684\u61d2\u6807\u8bb0\u8d4b\u503c\u4e3a\u7236\u7ed3\u70b9\u7684\u61d2\u6807\u8bb0\uff0c\u518d\u5c06\u5de6\u53f3\u5b50\u7ed3\u70b9\u6240\u5b58\u50a8\u7684\u6570\u8d4b\u503c\u4e3a\u61d2\u6807\u8bb0\u4e0e\u5de6\u53f3\u5b50\u7ed3\u70b9\u5404\u81ea\u6240\u4ee3\u8868\u7684\u533a\u95f4\u957f\u5ea6\u4e4b\u79ef\uff0c\u6700\u540e\u5c06\u7236\u7ed3\u70b9\u7684\u61d2\u6807\u8bb0\u6e05\u7a7a\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>void down(int k)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].lazy)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k * 2].lazy += node[k].lazy;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k * 2 + 1].lazy += node[k].lazy;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k * 2].sum += node[k].lazy * (node[k * 2].r &#8211; node[k * 2].l + 1);<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k * 2 + 1].sum += node[k].lazy * (node[k * 2 + 1].r &#8211; node[k * 2 + 1].l + 1);<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].lazy = 0;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>}<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e94\u3001\u7ebf\u6bb5\u6811\u533a\u95f4\u4fee\u6539<\/h3>\n\n\n\n<p>\u4e0e\u7ebf\u6bb5\u6811\u7684\u533a\u95f4\u67e5\u8be2\u7c7b\u4f3c\uff0c\u4ece\u6839\u7ed3\u70b9\u5f00\u59cb\uff0c\u5982\u679c\u5f53\u524d\u7ed3\u70b9\u6240\u8868\u793a\u7684\u533a\u95f4\u5728\u4fee\u6539\u533a\u95f4\u5185\uff0c\u5219\u5c06\u8be5\u7ed3\u70b9\u6240\u5b58\u7684\u6570\u52a0\u4e0a(<em>m<\/em>\u00d7\u7ed3\u70b9\u533a\u95f4\u957f\u5ea6)\uff0c\u5e76\u4e14\u5c06\u8be5\u7ed3\u70b9\u7684\u61d2\u6807\u8bb0\u52a0\u4e0a<em>m<\/em>\u3002\u5426\u5219\uff0c\u5c06\u8be5\u7ed3\u70b9\u7684\u61d2\u6807\u8bb0\u4e0b\u53d1\uff0c\u5e76\u4e14\u6839\u636e\u533a\u95f4\u7684\u8de8\u533a\u60c5\u51b5\uff0c\u9012\u5f52\u5176\u5de6\u53f3\u5b50\u6811\uff0c\u6700\u540e\u5c06\u7ed3\u70b9\u7684\u5de6\u53f3\u5b50\u7ed3\u70b9\u7684\u6570\u4e0a\u4f20\u56de\u6eaf\u81f3\u8be5\u7236\u7ed3\u70b9\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>void add(int k, int l, int r,int m)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].l &gt;= l &amp;&amp; node[k].r &lt;= r)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].sum += (node[k].r &#8211; node[k].l + 1) * m;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].lazy += m;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp; down(k);<\/p><p>&nbsp;&nbsp;&nbsp; int mid = (node[k].l + node[k].r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; if (l &lt;= mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(k * 2, l, r, m);<\/p><p>&nbsp;&nbsp;&nbsp; if (r &gt; mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(k * 2 + 1, l, r, m);<\/p><p>&nbsp;&nbsp;&nbsp; up(k);<\/p><p>}<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\u516d\u3001\u7ebf\u6bb5\u6811\u7684\u66f4\u591a\u64cd\u4f5c<\/h3>\n\n\n\n<p>\u9664\u4e86\u533a\u95f4\u67e5\u8be2\u548c\u533a\u95f4\u4fee\u6539\u5916\uff0c\u7ebf\u6bb5\u6811\u8fd8\u53ef\u4ee5\u5b9e\u73b0\u5355\u70b9\u67e5\u8be2\u548c\u5355\u70b9\u4fee\u6539\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>int query_s(int k,int x)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].l == node[k].r)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return node[k].sum;<\/p><p>&nbsp;&nbsp;&nbsp; down(k);<\/p><p>&nbsp;&nbsp;&nbsp; int mid = (node[k].l + node[k].r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; if (x &lt;= mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return query_s(k * 2, x);<\/p><p>&nbsp;&nbsp;&nbsp; else<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return query_s(k * 2 + 1, x);<\/p><p>&nbsp;&nbsp;&nbsp; return 0;<\/p><p>}<\/p><p>void add_s(int k,int x,int m)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].l == node[k].r)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].sum += m;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp; down(k);<\/p><p>&nbsp;&nbsp;&nbsp; int mid = (node[k].l + node[k].r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; if (x &lt;= mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_s(k * 2, x, m);<\/p><p>&nbsp;&nbsp;&nbsp; else<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_s(k * 2 + 1, x, m);<\/p><p>&nbsp;&nbsp;&nbsp; up(k);<\/p><p>}<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e03\u3001\u5b8c\u6574\u4ee3\u7801<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>#include &lt;stdio.h&gt;<\/p><p>#define max_n 1000000<\/p><p>typedef struct _tNode<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; int l;<\/p><p>&nbsp;&nbsp;&nbsp; int r;<\/p><p>&nbsp;&nbsp;&nbsp; int lazy;<\/p><p>&nbsp;&nbsp;&nbsp; int sum;<\/p><p>}Node;<\/p><p>Node node[4 * max_n + 1];<\/p><p>void up(int k)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; node[k].sum = node[k * 2].sum + node[k * 2 + 1].sum;<\/p><p>}<\/p><p>void down(int k)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].lazy)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k * 2].lazy += node[k].lazy;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k * 2 + 1].lazy += node[k].lazy;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k * 2].sum += node[k].lazy * (node[k * 2].r &#8211; node[k * 2].l + 1);<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k * 2 + 1].sum += node[k].lazy * (node[k * 2 + 1].r &#8211; node[k * 2 + 1].l + 1);<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].lazy = 0;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>}<\/p><p>void build(int k,int l,int r)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (l &gt; r) <\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<\/p><p>&nbsp;&nbsp;&nbsp; node[k].l = l;<\/p><p>&nbsp;&nbsp;&nbsp; node[k].r = r;<\/p><p>&nbsp;&nbsp;&nbsp; node[k].lazy = 0;<\/p><p>&nbsp;&nbsp;&nbsp; if (l == r)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].sum = 1;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp; int mid = (l + r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; build(k * 2, l, mid);<\/p><p>&nbsp;&nbsp;&nbsp; build(k * 2 + 1, mid + 1, r);<\/p><p>&nbsp;&nbsp;&nbsp; up(k);<\/p><p>}<\/p><p>int query_s(int k,int x)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].l == node[k].r)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return node[k].sum;<\/p><p>&nbsp;&nbsp;&nbsp; down(k);<\/p><p>&nbsp;&nbsp;&nbsp; int mid = (node[k].l + node[k].r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; if (x &lt;= mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return query_s(k * 2, x);<\/p><p>&nbsp;&nbsp;&nbsp; else<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return query_s(k * 2 + 1, x);<\/p><p>&nbsp;&nbsp;&nbsp; return 0;<\/p><p>}<\/p><p>void add_s(int k,int x,int m)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].l == node[k].r)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].sum += m;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp; down(k);<\/p><p>&nbsp;&nbsp;&nbsp; int mid = (node[k].l + node[k].r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; if (x &lt;= mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_s(k * 2, x, m);<\/p><p>&nbsp;&nbsp;&nbsp; else<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_s(k * 2 + 1, x, m);<\/p><p>&nbsp;&nbsp;&nbsp; up(k);<\/p><p>}<\/p><p>int query(int k,int l,int r)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; int sum_l = 0, sum_r = 0;<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].l &gt;= l &amp;&amp; node[k].r &lt;= r)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return node[k].sum;<\/p><p>&nbsp;&nbsp;&nbsp; down(k);<\/p><p>&nbsp;&nbsp;&nbsp; int mid = (node[k].l + node[k].r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; if (l &lt;= mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum_l = query(k * 2, l, r);<\/p><p>&nbsp;&nbsp;&nbsp; if (r &gt; mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum_r = query(k * 2 + 1, l, r);<\/p><p>&nbsp;&nbsp;&nbsp; return sum_l + sum_r;<\/p><p>}<\/p><p>void add(int k, int l, int r,int m)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].l &gt;= l &amp;&amp; node[k].r &lt;= r)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].sum += (node[k].r &#8211; node[k].l + 1) * m;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].lazy += m;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp; down(k);<\/p><p>&nbsp;&nbsp;&nbsp; int mid = (node[k].l + node[k].r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; if (l &lt;= mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(k * 2, l, r, m);<\/p><p>&nbsp;&nbsp;&nbsp; if (r &gt; mid)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add(k * 2 + 1, l, r, m);<\/p><p>&nbsp;&nbsp;&nbsp; up(k);<\/p><p>}<\/p><p>int main(void)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; int n, m, l, r, s, t;<\/p><p>&nbsp;&nbsp;&nbsp; build(1, 1, max_n);<\/p><p>&nbsp;&nbsp;&nbsp; printf(&#8220;n = &#8220;);<\/p><p>&nbsp;&nbsp;&nbsp; scanf(&#8220;%d&#8221;, &amp;n);<\/p><p>&nbsp;&nbsp;&nbsp; printf(&#8220;m = &#8220;);<\/p><p>&nbsp;&nbsp;&nbsp; scanf(&#8220;%d&#8221;, &amp;m);<\/p><p>&nbsp;&nbsp;&nbsp; printf(&#8220;l = &#8220;);<\/p><p>&nbsp;&nbsp;&nbsp; scanf(&#8220;%d&#8221;, &amp;l);<\/p><p>&nbsp;&nbsp;&nbsp; printf(&#8220;r = &#8220;);<\/p><p>&nbsp;&nbsp;&nbsp; scanf(&#8220;%d&#8221;, &amp;r);<\/p><p>&nbsp;&nbsp;&nbsp; if (l &gt; r)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l = l ^ r;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = l ^ r;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l = l ^ r;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp; add(1, l, r, m);<\/p><p>&nbsp;&nbsp;&nbsp; printf(&#8220;s = &#8220;);<\/p><p>&nbsp;&nbsp;&nbsp; scanf(&#8220;%d&#8221;, &amp;s);<\/p><p>&nbsp;&nbsp;&nbsp; printf(&#8220;t = &#8220;);<\/p><p>&nbsp;&nbsp;&nbsp; scanf(&#8220;%d&#8221;, &amp;t);<\/p><p>&nbsp;&nbsp;&nbsp; if (s &gt; t)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s = s ^ t;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = s ^ t;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s = s ^ t;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp; printf(&#8220;sum = %d\\n&#8221;, query(1, s, t));<\/p><p>&nbsp;&nbsp;&nbsp; return 0;<\/p><p>}<\/p><\/blockquote>\n\n\n\n<p>\u6d4b\u8bd5\u7ed3\u679c\u5982\u56fe2.7\u6240\u793a\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" loading=\"lazy\" width=\"422\" height=\"281\" src=\"https:\/\/xbtzone.com\/blog\/wp-content\/uploads\/2019\/07\/\u56fe\u7247-1-1.png\" alt=\"\" class=\"wp-image-845\"\/><figcaption>\u56fe2.7<\/figcaption><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3 \u7ebf\u6bb5\u6811\u7684\u5e94\u7528\u2014\u2014POJ 2777 <\/h2>\n\n\n\n<p>\u94fe\u63a5\uff1a<em><a href=\"http:\/\/poj.org\/problem?id=2777\">http:\/\/poj.org\/problem?id=2777<\/a><\/em><\/p>\n\n\n\n<p style=\"text-align:center\"><strong>Count Color<\/strong><\/p>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td>\n  <strong>Time Limit:<\/strong>&nbsp;1000MS\n  <\/td><td>\n  <strong>Memory Limit:<\/strong>&nbsp;65536K\n  <\/td><\/tr><tr><td>\n  <strong>Total Submissions:<\/strong>&nbsp;54642\n  <\/td><td>\n  <strong>Accepted:<\/strong>&nbsp;16407\n  <\/td><\/tr><\/tbody><\/table>\n\n\n\n<p><strong>Description<\/strong><\/p>\n\n\n\n<p>Chosen Problem Solving and Program design as\nan optional course, you are required to solve all kinds of problems. Here, we\nget a new problem.&nbsp;<br>\n<br>\nThere is a very long board with length L centimeter, L is a positive integer,\nso we can evenly divide the board into L segments, and they are labeled by 1,\n2, &#8230; L from left to right, each is 1 centimeter long. Now we have to color\nthe board &#8211; one segment with only one color. We can do following two operations\non the board:&nbsp;<br>\n<br>\n1. &#8220;C A B C&#8221; Color the board from segment A to segment B with color\nC.&nbsp;<br>\n2. &#8220;P A B&#8221; Output the number of different colors painted between\nsegment A and segment B (including).&nbsp;<br>\n<br>\nIn our daily life, we have very few words to describe a color (red, green,\nblue, yellow\u2026), so you may assume that the total number of different colors T\nis very small. To make it simple, we express the names of colors as color 1,\ncolor 2, &#8230; color T. At the beginning, the board was painted in color 1. Now\nthe rest of problem is left to your.&nbsp;<\/p>\n\n\n\n<p><strong>Input<\/strong><\/p>\n\n\n\n<p>First line of input contains L (1 &lt;= L\n&lt;= 100000), T (1 &lt;= T &lt;= 30) and O (1 &lt;= O &lt;= 100000). Here O\ndenotes the number of operations. Following O lines, each contains &#8220;C A B\nC&#8221; or &#8220;P A B&#8221; (here A, B, C are integers, and A may be larger\nthan B) as an operation defined previously.<\/p>\n\n\n\n<p><strong>Output<\/strong><\/p>\n\n\n\n<p>Ouput results of the output operation in\norder, each line contains a number.<\/p>\n\n\n\n<p><strong>Sample Input<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>2 2 4<\/p><p>C 1 1 2<\/p><p>P 1 2<\/p><p>C 2 2 2<\/p><p>P 1 2<\/p><\/blockquote>\n\n\n\n<p><strong>Sample Output<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>2<\/p><p>1<\/p><\/blockquote>\n\n\n\n<p><strong>\u9898\u76ee\u5927\u610f<\/strong>\n\u6709\u4e00\u957f\u5ea6\u4e3aL cm\u7684\u677f\uff0c\u5c06\u677f\u5e73\u5747\u5206\u6210L\u5757\uff0c\u6bcf\u4e00\u5757\u7684\u989c\u8272\u9ed8\u8ba4\u4e3a\u989c\u82721\uff0c\u73b0\u5728\u6709T\u79cd\u989c\u6599\uff0c\u4e24\u79cd\u64cd\u4f5c\uff0c\u4e00\u79cd\u662f\u5728\u5757A\u4e0e\u5757B\u4e4b\u95f4\u6d82\u4e0a\u989c\u8272C\uff0c\u53e6\u4e00\u79cd\u662f\u8f93\u51fa\u5757A\u4e0e\u5757B\u4e4b\u95f4\u6709\u591a\u5c11\u79cd\u4e0d\u540c\u7684\u989c\u8272\uff0c\u5171\u6709O\u9879\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p><strong>\u5206\u6790<\/strong> \u8fd9\u4e00\u9898\u662f\u4e00\u9053\u5178\u578b\u7684\u7ebf\u6bb5\u6811\u7684\u5e94\u7528\u95ee\u9898\u3002\u56e0\u4e3aT\u5c0f\u4e8e30\uff0c\u53ef\u4ee5\u5229\u7528\u4e8c\u8fdb\u5236\u64cd\u4f5c\uff0c\u628a\u533a\u95f4\u7684\u989c\u8272\u5c5e\u6027\u4f5c\u4e3a\u7ebf\u6bb5\u6811\u7ed3\u70b9\u7684\u6807\u8bb0\u6570\u636e\u30021\u8868\u793a\u6709\u8fd9\u79cd\u989c\u8272\uff0c0\u8868\u793a\u6ca1\u6709\u8fd9\u79cd\u989c\u8272\u3002\u4e8c\u8fdb\u5236\u5e8f\u5217\u201c10000001000010000100000000000000\u201d\u8868\u793a\u8be5\u533a\u95f4\u6709\u989c\u82721\u3001\u989c\u82728\u3001\u989c\u827213\u548c\u989c\u827218\u8fd9\u56db\u79cd\u989c\u8272\u3002\u5728\u67e5\u8be2\u67d0\u533a\u95f4\u5757\u542b\u6709\u591a\u5c11\u79cd\u989c\u8272\u65f6\uff0c\u5c06\u533a\u95f4\u7684\u989c\u8272\u5c5e\u6027\u4e8c\u8fdb\u5236\u5e8f\u5217\u4ece\u5de6\u5230\u53f3\u626b\u63cf\uff0c\u5e8f\u5217\u4e2d1\u7684\u4e2a\u6570\u5373\u4e3a\u533a\u95f4\u7684\u989c\u8272\u79cd\u6570\u3002<\/p>\n\n\n\n<p><strong>\u89e3<\/strong><\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>#include &lt;stdio.h&gt;<\/p><p>#define max_n 100000<\/p><p>struct _tNode<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; int l;<\/p><p>&nbsp;&nbsp;&nbsp; int r;<\/p><p>&nbsp;&nbsp;&nbsp; int c;<\/p><p>&nbsp;&nbsp;&nbsp; int lazy;<\/p><p>}node[4 * max_n + 1];<\/p><p>void up(int k)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; node[k].c = node[k * 2].c | node[k * 2 + 1].c;<\/p><p>}<\/p><p>void down(int k)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].lazy)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k * 2].lazy = node[k * 2 + 1].lazy = node[k].lazy;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k * 2].c = node[k * 2 + 1].c = node[k].lazy;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].lazy = 0;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>}<\/p><p>void build(int k, int l, int r)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (l &gt; r) return;<\/p><p>&nbsp;&nbsp;&nbsp; node[k].l = l;<\/p><p>&nbsp;&nbsp;&nbsp; node[k].r = r;<\/p><p>&nbsp;&nbsp;&nbsp; node[k].lazy = 0;<\/p><p>&nbsp;&nbsp;&nbsp; if (l == r)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].c = 1;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp; int m = (l + r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; build(k * 2, l, m);<\/p><p>&nbsp;&nbsp;&nbsp; build(k * 2 + 1, m + 1, r);<\/p><p>&nbsp;&nbsp;&nbsp; up(k);<\/p><p>}<\/p><p>void paint(int k, int l, int r, int c)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].l &gt;= l &amp;&amp; node[k].r &lt;= r)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].c = 1 &lt;&lt; (c &#8211; 1);<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[k].lazy = 1 &lt;&lt; (c &#8211; 1);<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp; down(k);<\/p><p>&nbsp;&nbsp;&nbsp; int m = (node[k].l + node[k].r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; if (l &lt;= m)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paint(k * 2, l, r, c);<\/p><p>&nbsp;&nbsp;&nbsp; if (r &gt; m)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paint(k * 2 + 1, l, r, c);<\/p><p>&nbsp;&nbsp;&nbsp; up(k);<\/p><p>}<\/p><p>int query(int k, int l, int r)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; int a = 0, b = 0;<\/p><p>&nbsp;&nbsp;&nbsp; if (node[k].l &gt;= l &amp;&amp; node[k].r &lt;= r)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return node[k].c;<\/p><p>&nbsp;&nbsp;&nbsp; down(k);<\/p><p>&nbsp;&nbsp;&nbsp; int m = (node[k].l + node[k].r) \/ 2;<\/p><p>&nbsp;&nbsp;&nbsp; if (l &lt;= m)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = query(k * 2, l, r);<\/p><p>&nbsp;&nbsp;&nbsp; if (r &gt; m)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = query(k * 2 + 1, l, r);<\/p><p>&nbsp;&nbsp;&nbsp; return a | b;<\/p><p>}<\/p><p>int main(void)<\/p><p>{<\/p><p>&nbsp;&nbsp;&nbsp; int n, t, o;<\/p><p>&nbsp;&nbsp;&nbsp; char op;<\/p><p>&nbsp;&nbsp;&nbsp; int l, r, c;<\/p><p>&nbsp;&nbsp;&nbsp; scanf(&#8220;%d %d %d&#8221;, &amp;n, &amp;t, &amp;o);<\/p><p>&nbsp;&nbsp;&nbsp; build(1, 1, n);<\/p><p>&nbsp;&nbsp;&nbsp; while (o&#8211;)<\/p><p>&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf(&#8221; %c&#8221;, &amp;op);<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (op == &#8216;C&#8217;)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf(&#8220;%d %d %d&#8221;, &amp;l, &amp;r, &amp;c);<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (l &gt; r)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l = l ^ r;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = l ^ r;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l = l ^ r;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; paint(1, l, r, c);<\/p><p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (op == &#8216;P&#8217;)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int total;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int sum = 0;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf(&#8220;%d %d&#8221;, &amp;l, &amp;r);<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (l &gt; r)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l = l ^ r;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = l ^ r;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l = l ^ r;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; total = query(1, l, r);<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (total)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (total &amp; 1)<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum++;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; total &gt;&gt;= 1;<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&#8220;%d\\n&#8221;, sum);<\/p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/p><p>&nbsp;&nbsp;&nbsp; }<\/p><p>}<\/p><\/blockquote>\n\n\n\n<p>\u8fd0\u884c\u7ed3\u679c\u5982\u56fe3.1\u6240\u793a\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" loading=\"lazy\" width=\"345\" height=\"231\" src=\"https:\/\/xbtzone.com\/blog\/wp-content\/uploads\/2019\/07\/\u56fe\u7247-1-2.png\" alt=\"\" class=\"wp-image-846\"\/><figcaption>\u56fe3.1<\/figcaption><\/figure><\/div>\n\n\n\n<p>\u63d0\u4ea4\u7ed3\u679c\u5982\u56fe3.2\u6240\u793a\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" loading=\"lazy\" width=\"515\" height=\"43\" src=\"https:\/\/xbtzone.com\/blog\/wp-content\/uploads\/2019\/07\/\u56fe\u7247-1-3.png\" alt=\"\" class=\"wp-image-851\"\/><figcaption>\u56fe3.2<\/figcaption><\/figure><\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4 \u603b\u7ed3<\/h2>\n\n\n\n<p>\u7ebf\u6bb5\u6811\u662f\u4e00\u79cd\u9ad8\u7ea7\u6570\u636e\u7ed3\u6784\uff0c\u5229\u7528\u597d\u7ebf\u6bb5\u6811\uff0c\u53ef\u4ee5\u9ad8\u6548\u7387\u5730\u89e3\u51b3\u533a\u95f4\u95ee\u9898\u548c\u7ebf\u6bb5\u95ee\u9898\u3002\u7ebf\u6bb5\u6811\u7684\u6570\u636e\u7ed3\u6784\u8fd8\u53ef\u4ee5\u4f7f\u7528\u94fe\u5f0f\u7ed3\u6784\uff0c\u51cf\u5c11\u7a7a\u95f4\u5360\u7528\uff0c\u7f3a\u70b9\u662f\u7ed3\u70b9\u7684\u8bbf\u95ee\u6548\u7387\u4f1a\u6709\u6240\u964d\u4f4e\u3002<\/p>\n\n\n\n<p>\u6587\u4e2d\u7ebf\u6bb5\u6811\u6570\u7ec4\u957f\u5ea6\u4e3a4<em>n<\/em>+1\uff0c\u5728\u5b9e\u9645\u5e94\u7528\u4e0a\u5e76\u7528\u4e0d\u5230\u90a3\u4e48\u591a\uff0c\u8fd9\u9020\u6210\u4e86\u5927\u91cf\u7684\u7a7a\u95f4\u6d6a\u8d39\uff0c\u53ef\u4ee5\u5229\u7528\u6df1\u5ea6\u4f18\u5148\u641c\u7d22\u5e8f\u5217\u8fdb\u884c\u4f18\u5316\uff0c\u4ee3\u66ff\u539f\u6570\u7ec4\u4e0b\u6807\uff0c\u53ef\u4ee5\u628a\u7a7a\u95f4\u5360\u7528\u538b\u7f29\u52302<em>n<\/em>+1\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5 \u53c2\u8003\u8d44\u6599<\/h2>\n\n\n\n<p>1.Segment\ntree. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Segment_tree\">https:\/\/en.wikipedia.org\/wiki\/Segment_tree<\/a>. <em>Wikipedia<\/em>.<\/p>\n\n\n\n<p>2.\u2605\u5fc6\u5148\u2605.\u300a[\u5947\u602a\u4f46\u6709\u7528\u7684\u6570\u636e\u7ed3\u6784]\u7ebf\u6bb5\u6811\u300b. <a href=\"https:\/\/cloud.tencent.com\/developer\/article\/1149069\">https:\/\/cloud.tencent.com\/developer\/article\/1149069<\/a>. <em>\u817e\u8baf\u4e91<\/em>.<\/p>\n\n\n\n<p>3. <a href=\"https:\/\/home.cnblogs.com\/u\/TheRoadToTheGold\/\">TRTTG<\/a>. \u300a\u6d45\u8c08\u7ebf\u6bb5\u6811\u300b. <a href=\"https:\/\/www.cnblogs.com\/TheRoadToTheGold\/p\/6254255.html\">https:\/\/www.cnblogs.com\/TheRoadToTheGold\/p\/6254255.html<\/a>. <em>\u535a\u5ba2\u56ed<\/em>. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7ebf\u6bb5\u6811\u662f\u4e00\u79cd\u57fa\u672c\u7684\u9ad8\u7ea7\u6570\u636e\u7ed3\u6784\uff0c\u5b66\u4e60\u5b83\u5bf9\u89e3\u51b3\u533a\u95f4\u95ee\u9898\u6709\u5f88\u5927\u5e2e\u52a9 \u8fd9\u7bc7\u6587\u7ae0\u662f\u6211\u5bf9\u4e0a\u5b66\u671fACM-ICPC [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[],"_links":{"self":[{"href":"https:\/\/xbtzone.com\/blog\/wp-json\/wp\/v2\/posts\/840"}],"collection":[{"href":"https:\/\/xbtzone.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xbtzone.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xbtzone.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/xbtzone.com\/blog\/wp-json\/wp\/v2\/comments?post=840"}],"version-history":[{"count":0,"href":"https:\/\/xbtzone.com\/blog\/wp-json\/wp\/v2\/posts\/840\/revisions"}],"wp:attachment":[{"href":"https:\/\/xbtzone.com\/blog\/wp-json\/wp\/v2\/media?parent=840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xbtzone.com\/blog\/wp-json\/wp\/v2\/categories?post=840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xbtzone.com\/blog\/wp-json\/wp\/v2\/tags?post=840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}