{"id":220,"date":"2015-04-05T23:58:05","date_gmt":"2015-04-05T14:58:05","guid":{"rendered":"http:\/\/conchan.akita.jp\/blog\/?p=220"},"modified":"2015-04-05T23:58:32","modified_gmt":"2015-04-05T14:58:32","slug":"ctfa_question_h","status":"publish","type":"post","link":"https:\/\/conchan.akita.jp\/blog\/ctfa_question_h\/","title":{"rendered":"CODE THANKS FESTIVAL A\u65e5\u7a0bH\u554f\u984c\u89e3\u8aac &#8211; \u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u306b\u3064\u3044\u3066"},"content":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f\u3001\u30b3\u30f3\u3061\u3083\u3093\u3053\u3068\u4f50\u3005\u6728\u3067\u3059\u3002<br \/> \u79cb\u7530\u306b\u7af6\u6280\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u3063\u3066\u3044\u308b\u306e\u304b\uff1f\u3068\u3075\u3068\u601d\u3046\u306a\u3069\u3057\u3066\u3044\u307e\u3059\u3002 <br \/>\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u81ea\u4f53\u3001\u79cb\u7530\u306b\u5c11\u306a\u3044\u3088\u3046\u306a\u3002<\/p>\n<p>\u3055\u3066\u3001\u7af6\u6280\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u5927\u4f1a\u300cCODE THANKS FESTIVAL 2014 A\u65e5\u7a0b\u300d\u306e\u30aa\u30f3\u30b5\u30a4\u30c8\u306e\u61c7\u89aa\u4f1a\u3067\u306f&#8221;\u66f8\u9053\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0&#8221;\u3068\u3044\u3046\u30b3\u30f3\u30c6\u30f3\u30c4\u304c\u3042\u308a\u307e\u3057\u3066\u3067\u3059\u306d&#8230; <br \/>\u3061\u3087\u3044\u3068\u66f8\u9053\u3057\u305f\u3089chokudai\u3055\u3093\u8cde\u3092\u3044\u305f\u3060\u3044\u3066\u3057\u307e\u3063\u305f\u306e\u3067\u3059\u3088\u3002<\/p>\n<blockquote class=\"twitter-tweet\" lang=\"ja\">\n<p>\u66f8\u9053\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0chokudai\u8cde\u767a\u8868\u4e2d#codefes <a href=\"http:\/\/t.co\/xSOyH1JfFP\">pic.twitter.com\/xSOyH1JfFP<\/a> ? \u30c8\u30a4\u30ec5\u500b\u3055\u3093 (@chako0407) <a href=\"https:\/\/twitter.com\/chako0407\/status\/541532002638245889\">2014, 12\u6708 7<\/a><\/p>\n<\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\">\/\/ <![CDATA[\n\n\/\/ ]]><\/script><\/p>\n<p>\u305d\u306e\u6642\u306b\u300c\u3053\u306e\u4eba\u306bH\u554f\u984c(\u4eca\u56de\u306e\u30b3\u30f3\u30c6\u30b9\u30c8\u306e\u6700\u96e3\u95a2\u554f\u984c)\u3092\u89e3\u3044\u3066Twitter\u306b\u6d41\u3057\u3066\u3082\u3089\u304a\u3046\u300d\u3068\u3044\u3046\u3053\u3068\u306b\u3055\u308c\u3066\u3057\u307e\u3063\u305f\u306e\u3067\u3059\u3002<\/p>\n<p>\u00a0\u3068\u3044\u3046\u308f\u3051\u3067\u3001\u3042\u308c\u304b\u30891\u30f6\u6708\u3001\u89e3\u304d\u307e\u3057\u305f(\u6295\u7a3f\u306f\u3068\u3066\u3082\u9045\u304f\u306a\u3063\u3066\u3057\u307e\u3063\u305f)\u3002 <br \/>(\u5197\u8ac7\u3060\u3063\u305f\u306e\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u308f\u308a\u3068\u5197\u8ac7\u5206\u304b\u3089\u306a\u3044\u4eba\u9593\u3060\u3063\u305f\u308a\u3059\u308b\u3057\u3001\u3042\u3068\u3053\u3046\u3044\u3046\u306e\u306f\u4f7f\u547d\u611f\u306b\u71c3\u3048\u308b)<\/p>\n<p>\u5f53\u8a18\u4e8b\u306e\u76ee\u6b21\u306f\u3001\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3067\u3059\u3002 <br \/>\u6e80\u70b9\u89e3\u7b54\u30b3\u30fc\u30c9\u3092\u5148\u306b\u898b\u305f\u3044\u65b9\u3084\u3001\u304a\u6025\u304e\u306e\u65b9\u306f2-4\u3092\u3069\u3046\u305e\u3002 <br \/>\u53c2\u52a0\u8a18\u306f\u2192<a href=\"https:\/\/conchan.akita.jp\/blog\/code-thanks-festival-onsite\/\" target=\"_blank\">\u3053\u3061\u3089\uff01<\/a>(\u5199\u771f\u5927\u91cf\u306b\u3064\u304d\u91cd\u3044\u304b\u3082,\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u3067\u304d\u306a\u304f\u3066\u3082\u3064\u3044\u3066\u3044\u3051\u308b)<\/p>\n<p>1. CTF A\u65e5\u7a0b H\u554f\u984c\u306e\u78ba\u8a8d <br \/>2. \u89e3\u8aac<br \/> \u00a0 \u30002-1. \u307e\u305a\u306f\u5168\u63a2\u7d22\u3092\u66f8\u3053\u3046<br \/> \u00a0 \u30002-2. \u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3063\u3066\u4f55\uff1f\u4f55\u306a\u306e\uff01\uff1f<br \/> \u00a0 \u30002-3. 4\u4e57\u30aa\u30fc\u30c0\u30fc\u306b\u3059\u308b<br \/> \u00a0 \u30002-4. \u7d50\u8ad6\u3068\u6700\u7d42\u7684\u306a\u6e80\u70b9\u30b3\u30fc\u30c9<br \/>3. \u304a\u307e\u3051\uff1a\u66f8\u9053\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3067\u66f8\u3044\u305f\u30b3\u30fc\u30c9\u306b\u3064\u3044\u3066<\/p>\n<p>\u3053\u306e\u8a18\u4e8b\u306b\u3042\u308b\u3001\u79c1\u304c\u66f8\u3044\u305f\u30b3\u30fc\u30c9\u306f\u30b3\u30d4\u30fc\u30fb\u6539\u5909\u7b49\u3054\u81ea\u7531\u306b\u3001\u7686\u3055\u3093\u306e\u8cac\u4efb\u306e\u3082\u3068\u3067\u3069\u3046\u305e\u30fc\u3002<\/p>\n<p>_____________________________________________________<\/p>\n<h5>1. CTF A\u65e5\u7a0b H\u554f\u984c\u306e\u78ba\u8a8d<\/h5>\n<p>H\u554f\u984c\u30da\u30fc\u30b8\u2192<a href=\"http:\/\/code-thanks-festival-2014-a-open.contest.atcoder.jp\/tasks\/code_thanks_festival_14_quala_h\" target=\"_blank\">\u3053\u3061\u3089<\/a> <br \/>chokudai\u3055\u3093\u306b\u3088\u308b\u89e3\u8aac\u30b9\u30e9\u30a4\u30c9\u2192<a href=\"http:\/\/www.slideshare.net\/chokudai\/thanks2014-a\" target=\"_blank\">\u3053\u3061\u3089<\/a> <br \/>y3eadgbe\u3055\u3093\u306b\u3088\u308b\u6e80\u70b9\u89e3\u7b54\u30b3\u30fc\u30c9\u2192<a href=\"http:\/\/code-thanks-festival-2014-a-open.contest.atcoder.jp\/submissions\/294369\" target=\"_blank\">\u3053\u3061\u3089<\/a> <br \/>\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u306b\u3064\u3044\u3066\u8ff0\u3079\u3089\u308c\u3066\u3044\u308b\u4ed6\u30b5\u30a4\u30c8\u3055\u3093\u2192<a href=\"http:\/\/d.hatena.ne.jp\/jetbead\/20120513\/1336895972\" target=\"_blank\">\u3053\u3061\u3089<\/a>\u00a0\u3068\u304b <a href=\"http:\/\/trivial-contents.com\/programming\/algorithm\/search\/rabin_karp_search.html\" target=\"_blank\">\u3053\u3061\u3089<\/a> <br \/>\u203b\u3053\u306e\u8a18\u4e8b\u306f\u89e3\u8aac\u30b9\u30e9\u30a4\u30c9\u3068y3eadgbe\u3055\u3093\u306e\u30b3\u30fc\u30c9\u3092\u3042\u3061\u3053\u3061\u5f15\u7528\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u89e3\u8aac\u30b9\u30e9\u30a4\u30c9\u306b\u66f8\u3044\u3066\u3042\u308b\u554f\u984c\u6982\u7565\u3092\u305d\u306e\u307e\u307e\u66f8\u304f\u3068&#8230; <br \/>\u30fb\u7e26R\u884c\u3001\u6a2aC\u5217\u306e\u5404\u30de\u30b9\u306b\u6587\u5b57\u5217\u304c\u66f8\u304b\u308c\u3066\u3044\u308b\u3002 <br \/>\u30fb2*2\u4ee5\u4e0a\u306e\u9818\u57df\u3067\u3001\u70b9\u5bfe\u79f0\u306a\u5f62\u306b\u306a\u3063\u3066\u3044\u308b\u3082\u306e\u306e\u7dcf\u6570\u3092\u6c42\u3081\u3088\u3002 <br \/>\u30fb1&lt;=R&lt;=250 <br \/>\u30fb1&lt;=C&lt;=250 <br \/>\u3042\u3068\u7279\u7b46\u70b9\u306f\u3001\u5236\u9650\u6642\u9593\u304c8\u79d2\u3068\u3001\u666e\u6bb5\u306e\u554f\u984c\u3068\u306f\u9055\u3046\u3068\u3053\u308d\u3002<\/p>\n<h5>2. \u89e3\u8aac<\/h5>\n<p>\u89e3\u8aac\u306f\u3001\u3060\u3093\u3060\u3093\u6e80\u70b9\u89e3\u6cd5\u306b\u306a\u308b\u3088\u3046\u306b\u89e3\u3044\u3066\u3044\u305f\u306e\u3067\u3001\u305d\u306e\u6d41\u308c\u305d\u306e\u307e\u307e\u66f8\u304d\u307e\u3059\u3002 <br \/>\u5168\u63a2\u7d22\u2192\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u21924\u4e57\u30aa\u30fc\u30c0\u30fc\u5316\u3000\u3068\u306a\u308a\u307e\u3059\u3002 <br \/>\u6700\u5f8c\u306b\u7d50\u8ad6\u3068\u6e80\u70b9\u30b3\u30fc\u30c9\u3092\u8f09\u305b\u307e\u3059\u3002 <br \/>\u8a00\u8a9e\u306fC++(C\u3063\u307d\u3044\u30b3\u30fc\u30c9\u306bC++\u306eSTL\u3092\u5165\u308c\u305f\u7a0b\u5ea6\u306e\u3082\u306e)\u3067\u3059\u3002<\/p>\n<h6>2-1. \u307e\u305a\u306f\u5168\u63a2\u7d22\u3092\u66f8\u3053\u3046<\/h6>\n<p>\u00a0\uff08\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3092\u77e5\u3089\u306a\u3044\u524d\u63d0\u3067\u3059\uff09<\/p>\n<p><strong>\u3053\u306e\u9805\u76ee\u306e\u7d50\u8ad6<\/strong>\uff1a\u6587\u5b57\u5217\u5358\u4f4d\u3067<span style=\"text-decoration: underline;\">\u666e\u901a\u306b\u6587\u5b57\u5217\u51e6\u7406<\/span>\u3059\u308b\u5168\u63a2\u7d22\u306f<span style=\"text-decoration: underline;\">5\u4e57\u30aa\u30fc\u30c0\u30fc<\/span>\u3067TLE\u300115\u70b9\u3002<\/p>\n<p>\u5168\u3066\u306e\u30d1\u30bf\u30fc\u30f3\uff08\u5207\u308a\u51fa\u3057\u30c7\u30b6\u30a4\u30f3\u5019\u88dc\u306e\u56db\u89d2\u5f62\uff09\u3092\u8a66\u3059\u30b3\u30fc\u30c9\u3092\u66f8\u3053\u3046\uff01 <br \/>&#8230;\u3068\u306f\u8a00\u3044\u3064\u3064\u3001\u672c\u756a\u3067\u540c\u3058\u3053\u3068\u601d\u3063\u3066\u3055\u3063\u3071\u308a\u30b3\u30fc\u30c9\u66f8\u3051\u306a\u304b\u3063\u305f\u81ea\u5206\u304c\u3044\u307e\u3059&#8230;\u3002<\/p>\n<p>\u5168\u63a2\u7d22\u306f\u3001for\u30eb\u30fc\u30d7\u304c4\u91cd\u306b\u306a\u308a\u307e\u3059\u3002 <br \/>\u8868\u5f62\u5f0f\u3060\u304b\u30892\u91cd\u30eb\u30fc\u30d7&#8230;\u3058\u3083\u306a\u3044\uff01 <br \/>\u89e3\u8aac\u30b9\u30e9\u30a4\u30c9p45\u306b\u3042\u308a\u307e\u3059\u304c\u3001\u5de6\u4e0a\u5ea7\u6a19\u3068\u53f3\u4e0b\u5ea7\u6a19\u3092\u3001\u305d\u308c\u305e\u308cfor\u30eb\u30fc\u30d72\u91cd\u3067\u56de\u3057\u307e\u3059\u3002 <br \/>\u5de6\u4e0a\u5ea7\u6a19\u306b\u3064\u3044\u3066\u30012\u6b21\u5143\u8868\u5168\u63a2\u7d22\u3001\u53f3\u4e0a\u5ea7\u6a19\u306b\u3064\u3044\u3066\u3082\u30012\u6b21\u5143\u8868\u5168\u63a2\u7d22\u3001\u639b\u3051\u5408\u308f\u305b\u30662*2=4\u91cd\u30eb\u30fc\u30d7\u3002<\/p>\n<p>\u3053\u3053\u307e\u3067\u306e\u30bd\u30fc\u30b9\u306f\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3002<br \/>include\u6587\u306a\u3069\u306f\u7701\u7565\u3002<\/p>\n<pre title=\"\u9014\u4e2d\u306e\u30b3\u30fc\u30c9\" class=\"lang:c++ mark:9 decode:true\">#define FOR(i,a,b) for(int i=(a);i&lt;(b);i++)    \/\/ FOR(\u5909\u6570, a\u304b\u3089, b\u307e\u3067(b\u542b\u307e\u305a))\r\n\r\nint solve(int R, int C, vector&lt;string&gt; &amp;field){\r\n\tint ans = 0;\r\n\tFOR(HU_r, 0, field.size()){\r\n\t\tFOR(HU_c, 0, C - 1){\r\n\t\t\tFOR(MS_r, HU_r + 1, field.size()){\r\n\t\t\t\tFOR(MS_c, HU_c + 1, field[HU_r].size()){\r\n\t\t\t\t\tif (Check(HU_r, HU_c, MS_r, MS_c, field))\r\n\t\t\t\t\t\tans++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn ans;\r\n}\r\n\r\nint main(){\r\n\tfastIO;\r\n\tint R = 0, C = 0;\r\n\tstring temp;\r\n\t\/\/ \u5165\u529b\r\n\tcin &gt;&gt; R &gt;&gt; C;\r\n\tvector&lt;string&gt; field;\r\n\tfield.reserve(R);\r\n\tFOR(i, 0, R){\r\n\t\tcin &gt;&gt; temp;\r\n\t\tfield.push_back(temp);\r\n\t}\r\n\t\/\/ \u5165\u529b\u304a\u308f\u308a\r\n\r\n\tcout &lt;&lt; solve(R, C, field) &lt;&lt; endl;\r\n\r\n\treturn 0;\r\n}<\/pre>\n<p>\u5de6\u4e0a\u3068\u304b\u53f3\u4e0b\u3068\u304b\u3001\u82f1\u8a33\u5206\u304b\u3089\u306a\u3044\u306e\u3067HU\u3068MS\u3002_r\u306f\u7e26(\u884c)\u3002 _c\u306f\u6a2a(\u5217)\u3002<br \/> \u5de6\u4e0a\u5ea7\u6a19\u3068\u53f3\u4e0b\u5ea7\u6a19\u304c\u91cd\u306a\u308b\u30d1\u30bf\u30fc\u30f3\u306f\u7b54\u3048\u306b\u306a\u308a\u5f97\u306a\u3044\u3001MS\u5ea7\u6a19\u306fHU\u5ea7\u6a19\u306b\u4e00\u756a\u8fd1\u3044\u30d1\u30bf\u30fc\u30f3\u3067_r\u3001_c\u3068\u3082\u306bHU+1\u3002<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics1_674x476.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-334\" src=\"https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics1_674x476.png\" alt=\"20141207fes38\" width=\"674\" height=\"476\" srcset=\"https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics1_674x476.png 674w, https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics1_674x476-300x212.png 300w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><\/a><\/p>\n<p>\u8abf\u67fb\u9806\u756a\u306e\u30a4\u30e1\u30fc\u30b8\u3002<br \/>\u9752\u70b9\u3068\u8d64\u70b9\u3067\u56f2\u307e\u308c\u308b\u56db\u89d2\u5f62\u304c\u3001\u70b9\u5bfe\u79f0\u304b\u3069\u3046\u304b\u3002<br \/>\u5de6\u4e0a\u5ea7\u6a19(\u9752\u70b9)\u3068\u53f3\u4e0b\u5ea7\u6a19(\u8d64\u70b9)\u304c\u91cd\u306a\u308b\u30d1\u30bf\u30fc\u30f3\u306f\u3001\u7b54\u3048\u306b\u306a\u308a\u5f97\u306a\u3044\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u3055\u3066\u3001Check\u95a2\u6570<span style=\"color: #ffff00;\">(9\u884c\u76ee)<\/span>\u306b\u306f2\u70b9\u306e\u5ea7\u6a19\u3092\u6e21\u3057\u3066\u3001\u3053\u306e\u5ea7\u6a19\u3067\u6307\u5b9a\u3055\u308c\u308b\u56db\u89d2\u5f62\u304c\u70b9\u5bfe\u79f0\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b\u51e6\u7406\u3092\u3057\u307e\u3059\u3002 <br \/>C++\u306f\u6587\u5b57\u5217\u578b\u3067\u3042\u308bstring\u304c\u5b58\u5728\u3059\u308b\u306e\u3067\u3001\u6587\u5b57\u5217\u5358\u4f4d\u30671\u884c\u305a\u3064\u6bd4\u8f03\u3057\u3066\u3044\u3053\u3046\uff01<br \/> (C\u8a00\u8a9e\u3060\u3068string\u304c\u306a\u3044\u306e\u3067\u3001\u6587\u5b57\u5358\u4f4d\u3002) <br \/>\u56db\u89d2\u5f62\u306e\u6700\u4e0a\u884c\u306e\u6587\u5b57\u5217\u3068\u6700\u4e0b\u884c\u306e\u53cd\u8ee2\u6587\u5b57\u5217\u304c\u7b49\u3057\u3044\u304b\u6bd4\u8f03\u3001\u6b21\u306b\u6700\u4e0a\u884c+1\u884c\u76ee\u3068\u6700\u4e0b\u884c-1\u884c\u76ee\u3001\u6b21\u306b&#8230;\u3068\u3044\u3046\u611f\u3058\u3002 <br \/>\u89e3\u8aac\u30b9\u30e9\u30a4\u30c9p46\u306b\u3042\u308a\u307e\u3059\u306d\u3002 <br \/>\u53cd\u8ee2\u6587\u5b57\u5217\u306f\u3001reverse()\u3092\u4f7f\u7528\u3057\u307e\u3059(&lt;algorithm&gt;\u306b\u542b\u307e\u308c\u307e\u3059)\u3002 <br \/>\u623b\u308a\u5024\u306fvoid\u3067\u3059\u3002 string\u3067\u306f\u306a\u3044\u306e\u3067string\u00a0temp = reverse(a.begin(),a.end());\u3068\u306f\u66f8\u3051\u307e\u305b\u3093\u3001\u6ce8\u610f\u3002 <br \/>\u6587\u5b57\u5217\u306e\u6bd4\u8f03\u306f==\u3067\u3067\u304d\u307e\u3059\u3002 Java\u3060\u3068\u30c0\u30e1\u3067\u3059\u3002 (\u305f\u307e\u306b\u3054\u3063\u3061\u3083\u306b\u306a\u308b\u3088\u306d\uff01\u306d\u3063\u3001\u306a\u308b\u3088\u306d\uff01\uff1f)<\/p>\n<p>\u8a08\u7b97\u91cf\u3067\u3059\u304c\u3001solve\u95a2\u6570\u306e4\u91cd\u30eb\u30fc\u30d7\u3067\u6700\u60aa\u3060\u3044\u305f\u3044R^2*C^2\u3001Check\u95a2\u6570\u306ewhile\u30eb\u30fc\u30d7\u3067i\u304c\u6700\u60aaR\/2\u3001\u5168\u4f53\u30aa\u30fc\u30c0\u30fc\u3067O(R^3C^2)\u3067\u3057\u3087\u3046\u304b\u3002 <br \/>R\u3082C\u3082MAX250\u306a\u306e\u3067250^5=9765\u51046250\u4e07\u3067\u3059\u3002 <br \/>\/\/ 100^5=100\u5104<br \/> \u30b3\u30f3\u30c6\u30b9\u30c8\u5f53\u65e5\u306e\u4f1a\u5834\u751f\u89e3\u8aac\u3067\u3001\u300cAtCoder\u3060\u30681\u5104\u30aa\u30fc\u30c0\u30fc\u304f\u3089\u3044\u304c\u30ae\u30ea\u30ae\u30ea(=2sec)\u300d\u3068\u3044\u3046\u8a71\u304c\u3042\u3063\u305f\u6c17\u304c\u3059\u308b\u306e\u3067\u3001\u3068\u3066\u30828sec\u306b\u306f\u9593\u306b\u5408\u3044\u307e\u305b\u3093\u3002 <br \/>\uff08\u8a08\u7b97\u91cf\u306e\u8a71\u306f\u82e6\u624b\u3067\u3044\u3064\u3082\u5927\u96d1\u628a\u306b\u3068\u3089\u3048\u3066\u3044\u307e\u3059\u3002log\u3068\u304b\u51fa\u308b\u3068\u3082\u3063\u3068\u5206\u304b\u308a\u307e\u305b\u3093\u3002\u7279\u306b\u52c9\u5f37\u3057\u3066\u3044\u306a\u3044\u304b\u3089\u3067\u3059\u3002\uff09<\/p>\n<p>\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3002<\/p>\n<pre title=\"ctfA_H\u554f\u984c_\u6587\u5b57\u5217\u51e6\u7406TLE15\u70b9\u30b3\u30fc\u30c9\" class=\"lang:c++ decode:true\">\/\/ #define _CRT_SECURE_NO_WARNINGS\r\n#include &lt;iostream&gt;\r\n#include &lt;cstdio&gt;\r\n#include &lt;algorithm&gt;\r\n#include &lt;string&gt;\r\n#include &lt;vector&gt;\r\n#include &lt;map&gt;\r\n#include &lt;set&gt;\r\n#include &lt;stack&gt;\r\n#include &lt;cmath&gt;\r\n#include &lt;cstdlib&gt;\r\n#include &lt;functional&gt;\r\n#include &lt;locale&gt;\r\n#include &lt;cctype&gt;\r\n#include &lt;sstream&gt;\r\nusing namespace std;\r\n\r\ntypedef long long LL;\r\ntypedef vector&lt;int&gt; VI;\r\ntypedef vector&lt;VI&gt; VVI;\r\ntypedef map&lt;int, int&gt; MAPII;\r\ntypedef vector&lt;pair&lt;int, int&gt; &gt; VPII;\r\ntypedef multimap&lt;int, string, greater&lt;int&gt; &gt; MuMIS;\r\n\r\n#define MP make_pair\r\n#define fastIO  cin.tie(0); ios::sync_with_stdio(false);\r\n#define FOR(i,a,b) for(int i=(a);i&lt;(b);i++)\r\n\/\/for gcc (\u672atest)\r\n\/\/ #define FOREACH_IT(it,c) for(typeof(c)::iterator it=(c).begin(); it!=(c).end(); ++it)\r\n\/\/for Visual Studio\r\n#define foreach_it(type,it,c) for(type::iterator it=c.begin(),c_end=c.end();it!=c_end;++it)\r\n\/\/ \u672atest\r\n#define DUMP_VVI(b) FOR(i,0,b.size()){FOR(j,0,b[i].size())printf(\"%d \",b[i][j]);puts(\"\");}\r\n\r\n\/\/ ------------------- include, typedef, define END. -------------------\r\n\r\nbool Check(int HU_r, int HU_c, int MS_r, int MS_c, vector&lt;string&gt; &amp;field){\r\n\tbool ret = false;\r\n\tint h = MS_r - HU_r;\r\n\tint w = MS_c - HU_c;\r\n\tint i=0;\r\n\tstring temp1,temp2;\r\n\twhile(HU_r+i &lt;= MS_r-i){\r\n\t\ttemp1 = field[HU_r+i].substr(HU_c, w+1);\r\n\t\ttemp2 = field[MS_r-i].substr(HU_c, w+1);\r\n\t\treverse(temp2.begin(), temp2.end());\r\n\t\tif(temp1 != temp2){\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\ti++;\r\n\t}\r\n\tret = true;\r\n\treturn ret;\r\n}\r\n\r\nint solve(int R, int C, vector&lt;string&gt; &amp;field){\r\n\tint ans = 0;\r\n\tFOR(HU_r, 0, field.size()){\r\n\t\tFOR(HU_c, 0, C - 1){\r\n\t\t\tFOR(MS_r, HU_r + 1, field.size()){\r\n\t\t\t\tFOR(MS_c, HU_c + 1, field[HU_r].size()){\r\n\t\t\t\t\tif (Check(HU_r, HU_c, MS_r, MS_c, field))\r\n\t\t\t\t\t\tans++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn ans;\r\n}\r\n\r\nint main(){\r\n\tfastIO;\r\n\tint R = 0, C = 0;\r\n\tstring temp;\r\n\t\/\/ \u5165\u529b\r\n\tcin &gt;&gt; R &gt;&gt; C;\r\n\tvector&lt;string&gt; field;\r\n\tfield.reserve(R);\r\n\tFOR(i, 0, R){\r\n\t\tcin &gt;&gt; temp;\r\n\t\tfield.push_back(temp);\r\n\t}\r\n\t\/\/ \u5165\u529b\u304a\u308f\u308a\r\n\r\n\tcout &lt;&lt; solve(R, C, field) &lt;&lt; endl;\r\n\r\n\treturn 0;\r\n}<\/pre>\n<p>\u63d0\u51fa\u7d50\u679c\u306f\u3001\u90e8\u5206\u70b915\u70b9\u306eTLE\u3067\u3059\u2192<a href=\"http:\/\/code-thanks-festival-2014-a-open.contest.atcoder.jp\/submissions\/302614\" target=\"_blank\">\u3053\u3061\u3089\uff01<\/a> <br \/>\u666e\u901a\u306b\u6587\u5b57\u5217\u51e6\u7406\u3059\u308b\u3068\u3001\u9045\u3044\u306e\u3067\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<h6>2-2. \u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3063\u3066\u4f55\uff1f\u4f55\u306a\u306e\uff01\uff1f<\/h6>\n<p><strong>\u3053\u306e\u9805\u76ee\u306e\u7d50\u8ad6<\/strong>\uff1a\u6587\u5b57\u5217\u3092<span style=\"text-decoration: underline;\">\u6570\u5024\u306b\u5909\u63db\u3057\u3066\u6bd4\u8f03<\/span>\u3059\u308b\u3068\u901f\u3044\u30025\u4e57\u30aa\u30fc\u30c0\u30fc\u3067\u5909\u308f\u3089\u306a\u3044\u304c<span style=\"text-decoration: underline;\">TLE\u306e45\u70b9<\/span>get\u3002<\/p>\n<blockquote class=\"twitter-tweet\" lang=\"ja\">\n<p>H\u554f\u984c\u3001\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3002\u521d\u8033\u3067\u3059\u3002 \u2014 \u30b3\u30f3\u3061\u3083\u3093@ctfH\u554f\u984c\u89e3\u8aac\u57f7\u7b46\u4e2d (@conchan_akita) <a href=\"https:\/\/twitter.com\/conchan_akita\/status\/541489351515856896\">2014, 12\u6708 7<\/a><\/p>\n<\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\">\/\/ <![CDATA[\n\n\/\/ ]]><\/script><\/p>\n<p>\u6587\u5b57\u5217\u6bd4\u8f03\u3092\u9ad8\u901f\u5316\u3057\u307e\u3057\u3087\u3046\u3002 <br \/>\u89e3\u8aacp47\u306b&#8221;\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5&#8221;\u306a\u308b\u6587\u5b57\u5217\u304c\u5b58\u5728\u3057\u307e\u3059\u3002 <br \/>\u4f1a\u5834\u751f\u89e3\u8aac\u3067&#8221;\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5&#8221;\u3068\u805e\u3044\u305f\u3068\u304d\u3001\u7686\u3055\u3093\u5206\u304b\u3089\u306a\u3055\u305d\u3046\u3067\u5b89\u5fc3\u3057\u307e\u3057\u305f(\u81ea\u5206\u3082\u5206\u304b\u3089\u306a\u3044\u306e\u3067)\u3002<\/p>\n<blockquote class=\"twitter-tweet\" lang=\"ja\">\n<p>\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3001\u306a\u3093\u304b\u5f37\u305d\u3046 <a href=\"https:\/\/twitter.com\/hashtag\/codefes?src=hash\">#codefes<\/a> \u2014 Genki @ \u5c31\u6d3b\u6226\u58eb (@GenkiSugimotoJP) <a href=\"https:\/\/twitter.com\/GenkiSugimotoJP\/status\/541489320763215872\">2014, 12\u6708 7<\/a><\/p>\n<\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" lang=\"ja\"><p>\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3063\u3066\u306a\u3093\u3067\u3059\u304b\uff01\uff1f <a href=\"https:\/\/twitter.com\/hashtag\/codefes?src=hash\">#codefes<\/a> \u2014 68pF (@686868ah) <a href=\"https:\/\/twitter.com\/686868ah\/status\/541489334327574529\">2014, 12\u6708 7<\/a><\/p><\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\">\/\/ <![CDATA[\n\n\/\/ ]]><\/script><\/p>\n<blockquote class=\"twitter-tweet\" lang=\"ja\">\n<p>\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u306a\u3093\u3066\u521d\u3081\u3066\u805e\u3044\u305f\u3000<a href=\"https:\/\/twitter.com\/hashtag\/codefes?src=hash\">#codefes<\/a> \u2014 \u3068\u307e\u3068 (@poe03) <a href=\"https:\/\/twitter.com\/poe03\/status\/541489347959087104\">2014, 12\u6708 7<\/a><\/p>\n<\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" lang=\"ja\"><p>\u5fc5\u6bba\u6280\u307f\u305f\u3044\u306a\u540d\u524d(\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5) <a href=\"https:\/\/twitter.com\/hashtag\/codefes?src=hash\">#codefes<\/a> \u2014 \u3082\u3063\u3055\u3093\u3055\u3093 (@moxtsuan) <a href=\"https:\/\/twitter.com\/moxtsuan\/status\/541489350416949249\">2014, 12\u6708 7<\/a><\/p><\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\">\/\/ <![CDATA[\n\n\/\/ ]]><\/script><\/p>\n<blockquote class=\"twitter-tweet\" lang=\"ja\">\n<p>rolling hash, \u87fb\u672c\u306b\u8f09\u3063\u3066\u3044\u308b\u3093\u3060\u3088\u306d <a href=\"https:\/\/twitter.com\/hashtag\/codefes?src=hash\">#codefes<\/a> \u2014 koba (@kobae964) <a href=\"https:\/\/twitter.com\/kobae964\/status\/541489384587943937\">2014, 12\u6708 7<\/a><\/p>\n<\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" lang=\"ja\"><p>\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5? <a href=\"https:\/\/twitter.com\/hashtag\/codefes?src=hash\">#codefes<\/a> \u2014 kado@94 (@kado_m) <a href=\"https:\/\/twitter.com\/kado_m\/status\/541490428164333569\">2014, 12\u6708 7<\/a><\/p><\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\">\/\/ <![CDATA[\n\n\/\/ ]]><\/script><\/p>\n<blockquote class=\"twitter-tweet\" lang=\"ja\">\n<p>H \u554f\u984c\u306e\u89e3\u8aac\u3001\u4f55\u3092\u8a00\u3063\u3066\u3044\u308b\u306e\u304b\u3055\u3063\u3071\u308a\u3060\u3063\u305f\u2026 <a href=\"https:\/\/twitter.com\/hashtag\/codefes?src=hash\">#codefes<\/a> \u2014 \u305f\u3051 (@ww24) <a href=\"https:\/\/twitter.com\/ww24\/status\/541491075471265792\">2014, 12\u6708 7<\/a><\/p>\n<\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\">\/\/ <![CDATA[\n\n\/\/ ]]><\/script><\/p>\n<p>\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3092\u4f7f\u3046\u3068\u3001\u6587\u5b57\u5217\u3092\u3001\u6570\u5024\u306e\u56db\u5247\u6f14\u7b97\u306b\u3088\u3063\u3066\u30cf\u30c3\u30b7\u30e5\u5024\u306b\u7f6e\u304d\u63db\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 <br \/>\u6587\u5b57\u3092\u6271\u3046\u3088\u308a\u6570\u5024\u306e\u56db\u5247\u6f14\u7b97\u306e\u65b9\u304c\u901f\u3044\u3088\u3046\u306a\u306e\u3067\u3001\u305c\u3072\u899a\u3048\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>\u25cf\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5<\/p>\n<p>\u6587\u5b57\u5217\u3092\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306b\u3088\u3063\u3066\u30cf\u30c3\u30b7\u30e5\u5024\u306b\u3059\u308b\u3002<br \/>2\u3064\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u304c\u7b49\u3057\u3044\u3068\u3044\u3046\u3053\u3068\u306f\u3001\u305d\u306e2\u3064\u306e\u6587\u5b57\u5217\u306f\u7b49\u3057\u3044\u3068\u3044\u3048\u308b\u3002 <br \/>(\u305d\u3046\u8a00\u3048\u308b\u3088\u3046\u306a\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3092\u7528\u3044\u308b)<\/p>\n<p>H\u554f\u984c\u3067\u306f\u3001\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3068\u547c\u3070\u308c\u308b\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u3092\u4f7f\u3046\u3002<br \/> <del>\uff08&#8221;\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5&#8221;\u304c\u3001\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u540d\u306a\u306e\u304b\u3053\u306e\u624b\u6cd5\u306e\u540d\u524d\u304b\u306f\u3088\u304f\u5206\u304b\u3089\u306a\u3044\uff09<\/del> \u2190\u305f\u3076\u3093\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u540d\u3002<br \/>\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u306f\u3001\u6587\u5b57\u5217\u306e\u691c\u7d22(\u30e9\u30d3\u30f3-\u30ab\u30fc\u30d7\u6587\u5b57\u5217\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0)\u306b\u7528\u3044\u3089\u308c\u3001\u6587\u5b57\u5217\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u9ad8\u901f\u306b\u6c42\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002<\/p>\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u3068\u308b\u3002 (\u89e3\u8aac\u30b9\u30e9\u30a4\u30c9\u3068\u3061\u3087\u3063\u3068\u9055\u3046\u306e\u3067\u6ce8\u610f)<\/p>\n<pre title=\"\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u306b\u304a\u3051\u308b\u30cf\u30c3\u30b7\u30e5\u306e\u53d6\u308a\u65b9\" class=\"lang:c++ decode:true \">\/\/ \u6587\u5b57\u5217abc\u306e\u30cf\u30c3\u30b7\u30e5\u5024H\u3092\u6c42\u3081\u308b\r\nstring str = \"abc\";\r\nlong long int base = 1000000009;\r\nlong long int H = str[0] * base^2 + str[1] * base^1 + str[2] * base^0;\r\n\/\/ str[0] * base^2 \u3068\u3044\u3046\u306e\u306f\u3001 (a\u306e\u6587\u5b57\u30b3\u30fc\u30c9) * (base\u306e2\u4e57) \u3092\u610f\u5473\u3059\u308b\u3002<\/pre>\n<p>\u4e00\u822c\u5316\u3059\u308b\u3068\u3001\u30cf\u30c3\u30b7\u30e5\u3092\u3068\u308a\u305f\u3044\u6587\u5b57\u5217\u3092str\u3001\u6587\u5b57\u5217\u306e\u9577\u3055\u3092m\u3068\u3057\u3066<\/p>\n<pre title=\"\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u306b\u304a\u3051\u308b\u3001\u30cf\u30c3\u30b7\u30e5\u306e\u53d6\u308a\u65b9\u306e\u4e00\u822c\u5f62\" class=\"lang:c++ decode:true\">H  =  str[0] * base^(m-1)\r\n    + str[1] * base^(m-2)\r\n    + str[2] * base^(m-3)\r\n    + ...\r\n    + str[m-1] * base^0;<\/pre>\n<p>\u3067\u3059\u3002 <br \/>\u65e5\u672c\u8a9e\u3067\u66f8\u304f\u3068\u3001 <br \/>\u3000\u3000\u6587\u5b57\u5217\u306f\u5148\u982d\u6587\u5b57\u304b\u30891\u6587\u5b57\u305a\u3064<strong>\u6587\u5b57\u30b3\u30fc\u30c9<\/strong>\u3092\u898b\u3066\u3044\u304d\u3001 <br \/>\u3000\u3000base\u306f\u672b\u5c3e\u9805\u304c0\u4e57\u3001\u524d\u9805\u304c1\u4e57&#8230;+1\u305a\u3064\u52a0\u7b97 <br \/>\u3001\u3067\u3059\u3002<\/p>\n<p>\uff1c\u3053\u306e\u30cf\u30c3\u30b7\u30e5\u95a2\u6570\u306e\u4fbf\u5229\u306a\u3068\u3053\u308d\uff1e<br \/>\u30fb\u5f8c\u308d\u306b1\u6587\u5b57\u8ffd\u52a0\u3057\u305f\u3068\u304d\u306b\u3001\u524d\u307e\u3067\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u4f7f\u7528\u3057\u3066\u9ad8\u901f\u306b\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u6c42\u3081\u3089\u308c\u308b\uff08<a href=\"http:\/\/togetter.com\/li\/617816\" target=\"_blank\">\u7d2f\u7a4d\u548c<\/a>\u3063\u307d\u3044\u8003\u3048\u65b9\u3060\u306a\u30fc\u3063\u3066\u601d\u3063\u305f\uff09<\/p>\n<p>\uff08\u4f8b\uff09 <br \/>abc\u306e\u30cf\u30c3\u30b7\u30e5\u304c\u3059\u3067\u306b\u6c42\u307e\u3063\u3066\u3044\u308b(Habc\u3068\u3059\u308b)\u3002<br \/> \u5f8c\u308d\u306bd\u3092\u8ffd\u52a0\u3057\u305f\u6587\u5b57\u5217abcd\u306e\u30cf\u30c3\u30b7\u30e5Habcd\u306f<\/p>\n<pre title=\"\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u306e\u5229\u70b91-1\" class=\"lang:c++ decode:true\">string str = abcd;\r\nHabcd = Habc * base + d;<\/pre>\n<p>\u307e\u305f\u3001\u6587\u5b57\u5217abcd\u306b\u3064\u3044\u3066\u3001Habc\u3092\u4f7f\u3063\u3066Hbcd(1\u500b\u5206\u305a\u3089\u3057\u305f\u3001\u540c\u3058\u9577\u3055\u306e\u6587\u5b57\u5217)\u3092\u9ad8\u901f\u306b\u6c42\u3081\u3089\u308c\u308b\u3002<\/p>\n<pre title=\"\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u306e\u5229\u70b91-2\" class=\"lang:c++ decode:true \">string str = abcd;\r\nHbcd = Habc - a * base^(\u30cf\u30c3\u30b7\u30e5\u3092\u6c42\u3081\u305f\u3044\u6587\u5b57\u5217\u306e\u6587\u5b57\u6570-1) + d;\r\n     = Habc - a * base^2 + d;<\/pre>\n<p>\u2192\u3053\u308c\u306f\u3001\u6587\u5b57\u5217abcdefghijklmno&#8230;\u306b\u5bfe\u3057\u3001\u6700\u521d\u306babc\u3092\u898b\u3066\u3001\u6b21\u306bbcd\u3092\u898b\u3066\u3001\u305d\u306e\u6b21\u306fcde\u3092\u898b\u3066&#8230;\u3068\u3044\u3046\u3068\u304d\u306b\u5f79\u7acb\u3064\u3002<\/p>\n<p>\u30fb\u300c\u5148\u982d\u304b\u3089\u305d\u306e\u6587\u5b57\u5217\u307e\u3067\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u300d\u3092\u4e8b\u524d\u8a08\u7b97\u3057\u3066\u914d\u5217\u306b\u683c\u7d0d\u3057\u3066\u304a\u304f\u3068\u3001\u90e8\u5206\u6587\u5b57\u5217\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u306f\u305d\u306e\u914d\u5217\u304b\u3089\u6c42\u307e\u308b\u3002<br \/> \u3000\u2192\u3053\u308c\u306f\u3001\u6587\u5b57\u5217abcdefghijklmno&#8230;\u306b\u5bfe\u3057\u3001\u6700\u521d\u306bbc\u3092\u898b\u3066\u3001\u6b21\u306bcdef\u3092\u898b\u3066\u3001\u6b21\u306bjklmno\u3092\u898b\u3066&#8230;\u3068\u3044\u3046\u3088\u3046\u306b\u5909\u5247\u7684\u306b\u898b\u308b\u3068\u304d\u306b\u9ad8\u901f\u306b\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u6c42\u3081\u3089\u308c\u308b\u3002<\/p>\n<pre class=\"lang:c++ mark:16,19 decode:true \">\/\/ \u5148\u982d\u304b\u3089\u305d\u306e\u6587\u5b57\u5217\u307e\u3067\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u683c\u7d0d\u3059\u308b\u3001\u8981\u7d20\u657010000\u3001\u521d\u671f\u50240\u306e\u914d\u5217 \r\n\/\/ hash[i]\u306b\u306f,\u5148\u982d\u6587\u5b57\u304b\u3089i(0&lt;=i&lt;=(str\u306e\u9577\u3055-1))\u756a\u76ee\u306e\u6587\u5b57\u307e\u3067\u306e\u6587\u5b57\u5217\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u304c\u5165\u3063\u3066\u3044\u308b. \r\nvector&lt;long long&gt; hash(10000,0); \r\nstring str = abcdefghijk...; \r\n\r\n\/\/ \u4e8b\u524d\u8a08\u7b97\r\n\/\/ hash[0] = Ha\r\n\/\/ hash[1] = Hab\r\n\/\/ hash[2] = Habc\r\n\/\/ ...\u4ee5\u4e0b\u7565\r\nhash[0] = str[0]; \r\nfor(int i=1; i&lt;str.length(); i++) \r\n  hash[i] = hash[i-1] * base + str[i];\r\n\r\n\uff08\u4f8b\uff09 Hbc = Habc - Ha * base^(\u30cf\u30c3\u30b7\u30e5\u3092\u6c42\u3081\u305f\u3044\u6587\u5b57\u5217\u306e\u6587\u5b57\u6570)\r\n        = hash[2] - hash[0] * base^2;    \/\/ \u2190 \u4e8b\u524d\u8a08\u7b97\u3057\u3066\u304a\u3044\u305fhash\u914d\u5217\u304b\u3089\u6c42\u3081\u3089\u308c\u308b\uff01\r\n\r\n\uff08\u4f8b2\uff09 Hcdef = Habcdef - Hab * base^(\u30cf\u30c3\u30b7\u30e5\u3092\u6c42\u3081\u305f\u3044\u6587\u5b57\u5217\u306e\u6587\u5b57\u6570)\r\n           = hash[5] - hash[1] * base^4; \r\n\/\/ Hcdef = c * base^3 + d * base^2 + e * base^1 + f * base^0; \u3067\u6c42\u3081\u305f\u3082\u306e\u3068\u3061\u3083\u3093\u3068\u4e00\u81f4\u3057\u307e\u3059\u3088\uff01\r\n\/\/ \u30cf\u30c3\u30b7\u30e5\u3092\u6c42\u3081\u305f\u3044\u6587\u5b57\u5217\u306e\u9577\u3055\u306b\u3088\u3089\u305a\u3001hash[?]-hash[?]*base^?\u3067\u6c42\u3081\u3089\u308c\u308b\uff01\u5f0f\u77ed\u3044\uff01\r\n\r\n\/\/ \u65e5\u672c\u8a9e\u3067\u66f8\u304f\u3068\r\n\/\/ string str = abcdefghijklmnop \u3067 Hghikj \u3092\u6c42\u3081\u305f\u3044\u3068\u304d\u3092\u4f8b\u306b\r\n\/\/ \u4e8b\u524d\u306bhash\u914d\u5217\u3092\u7528\u610f\u3059\u308b\r\n\/\/     hash[0] = a\u306e\u30cf\u30c3\u30b7\u30e5 = a\u306e\u6587\u5b57\u30b3\u30fc\u30c9\r\n\/\/     hash[1] = ab\u306e\u30cf\u30c3\u30b7\u30e5\r\n\/\/             = 1\u3064\u524d\u306ehash * base + \u8ffd\u52a0\u6587\u5b57\r\n\/\/             = hash[0] * base + b\r\n\/\/     hash[2] = abc\u306e\u30cf\u30c3\u30b7\u30e5\r\n\/\/             = 1\u3064\u524d\u306ehash * base + \u8ffd\u52a0\u6587\u5b57\r\n\/\/             = hash[1] * base + c\r\n\/\/     ...\r\n\/\/     hash[15] = abcdefghijklmnop\u306e\u30cf\u30c3\u30b7\u30e5\r\n\/\/              = hash[14] * base + p\r\n\/\/ \u7528\u610f\u5b8c\u4e86\u3057\u307e\u3057\u305f\u30fc\u3002\r\n\/\/ Hghijk = \u5148\u982d\u304b\u3089k\u307e\u3067\u306ehash - \u5148\u982d\u304b\u3089g\u306e1\u500b\u524d\u307e\u3067\u306ehash * (base^\u30cf\u30c3\u30b7\u30e5\u3092\u6c42\u3081\u305f\u3044\u6587\u5b57\u5217\u306e\u6587\u5b57\u6570)\r\n\/\/        = hash[10] - hash[5] * base^5;<\/pre>\n<p>\u00a0\uff1c\u30dd\u30a4\u30f3\u30c8\uff1e <br \/>\u5168\u3066\u306e\u90e8\u5206\u6587\u5b57\u5217\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u6301\u3064\u308f\u3051\u3067\u306f\u306a\u3044\u3002 <br \/>\u5148\u982d\u304b\u3089\u5404\u6587\u5b57\u307e\u3067\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u4fdd\u6301\u3057\u3066\u3001\u5fc5\u8981\u306a\u6642\u306b\u305d\u3053\u304b\u3089\u8a08\u7b97\u3059\u308b\u3002<\/p>\n<p>base\u306b\u5927\u304d\u3044\u7d20\u6570\u3092\u6301\u3063\u3066\u304f\u308b\u3053\u3068\u3067\u3001mod\u3092\u53d6\u3089\u305a\u3068\u3082ok\u306b\u306a\u308a\u307e\u3059\u3002 <del>\uff08\u5b9f\u306f\u306a\u305cok\u306a\u306e\u304b\u3088\u304f\u5206\u304b\u3063\u3066\u3044\u306a\u3044\u3051\u3069\u3001base=10\u306a\u3093\u304b\u3088\u308a\u305a\u3063\u3068\u30cf\u30c3\u30b7\u30e5\u885d\u7a81\u8d77\u3053\u3089\u306a\u3055\u305d\u3046\u306a\u611f\u3058\u304c\u3059\u308b\u3088\uff01\uff09<\/del> <br \/><del>base\u306f\u5de8\u5927\u306a\u5024\u306a\u306e\u3067\u3001\u7d2f\u4e57\u3057\u3066\u6841\u3042\u3075\u308c\u304c\u666e\u901a\u306b\u8d77\u304d\u3066\u30de\u30a4\u30ca\u30b9\u306e\u5024\u306b\u306a\u308b\u3051\u3069\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306f\u505c\u6b62\u3057\u306a\u3044\u306e\u3067ok&#8230;\u3002<\/del><br \/><span style=\"text-decoration: underline;\">mod\u3092\u53d6\u308b\u3068\u3044\u3046\u306e\u306f\u3001\u3081\u3061\u3083\u304f\u3061\u3083\u5de8\u5927\u306a\u6570\u3092\u3042\u308b\u5024\u672a\u6e80\u306b\u53ce\u3081\u308b\uff08\u4f8b\uff1a\u3069\u3093\u306a\u5de8\u5927\u6570\u3082mod10\u53d6\u308b\u306810\u672a\u6e80\u306e\u6570\u306b\u306a\u308b\uff09\u3053\u3068\u3067\u3059(\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30fb\u6697\u53f7\u5206\u91ce\u3067\u983b\u51fa)\u3002<\/span><br \/><span style=\"text-decoration: underline;\">base\u3092unsigned long long \u578b(64bit)\u306b\u3057\u3066\u3001\u30cf\u30c3\u30b7\u30e5\u5024\u683c\u7d0d\u3059\u308b\u5909\u6570\u3084\u914d\u5217\u3082unsigned long long \u578b\u306b\u3057\u3066\u3042\u3052\u308b\u3068\u3001\u6841\u3042\u3075\u308c\u304c\u8d77\u304d\u3088\u3046\u306864bit\u306b\u53ce\u307e\u308b = mod2^64\u3059\u308b\u3053\u3068\u3068\u540c\u7fa9\u3002<\/span><br \/>\u00a0<br \/>base\u306e\u7d2f\u4e57\u306f\u3001\u4e8b\u524d\u8a08\u7b97\u3057\u307e\u3059\u3002 <br \/>\u524d\u306e\u5024\u3092\u5229\u7528\u3057\u3066\u6c42\u3081\u3066\u914d\u5217\u306b\u5165\u308c\u3066\u304a\u304d\u307e\u3059\u3002\u3064\u307e\u308abase\u306en\u4e57\u306f<br \/> base[n] = base[n-1] * base;<br \/> \u3067\u6c42\u3081\u3066\u304a\u304d\u307e\u3059\u3002<br \/> (\u3044\u3061\u3044\u3061base[n] = pow(base,n); \u306a\u3093\u3066\u3084\u308b\u3068\u3001\u9045\u3044\uff01)<\/p>\n<p>\u30cf\u30c3\u30b7\u30e5\u306f\u3001\u9006\u6587\u5b57\u5217\u5206\u3082\u7528\u610f\u3057\u307e\u3057\u3087\u3046\u3002<br \/> hash1[255][255]\u3068\u3001hash2_rev[255][255]\u3002<br \/> hash1[a][b]\u306b\u306f\u3001a\u884c\u76ee\u306b\u304a\u3051\u308b\u3001\u5148\u982d\u5217\u304b\u3089b\u5217\u76ee\u307e\u3067\u306e\u6587\u5b57\u5217\u3001\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u683c\u7d0d\u3002<br \/> hash2_rev[a][b]\u306b\u306f\u3001a\u884c\u76ee\u306b\u304a\u3051\u308b\u3001\u672b\u5c3e\u5217\u304b\u3089b\u5217\u76ee\u307e\u3067\u306e(\u672b\u5c3e\u5074\u304b\u3089\u5148\u982d\u65b9\u5411\u306b\u898b\u305f)\u6587\u5b57\u5217\u3001\u306e\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u683c\u7d0d\u3002<br \/>\u203ba,b\u306f0\u30b9\u30bf\u30fc\u30c8\u3002<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics2_666x574.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-340\" src=\"https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics2_666x574.png\" alt=\"20141207fes39\" width=\"666\" height=\"574\" srcset=\"https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics2_666x574.png 666w, https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics2_666x574-300x259.png 300w\" sizes=\"auto, (max-width: 666px) 100vw, 666px\" \/><\/a><\/p>\n<p>\u30cf\u30c3\u30b7\u30e5\u306e\u3068\u308a\u65b9\u30a4\u30e1\u30fc\u30b8\u3002<\/p>\n<p>\u3069\u3053\u307e\u3067\u306e\u30cf\u30c3\u30b7\u30e5\u3092\u3069\u306e\u3088\u3046\u306b\u683c\u7d0d\u3059\u308b\u304b\u3001\u306b\u3064\u3044\u3066\u306f\u3001y3eadgbe\u3055\u3093\u306b\u3088\u308b\u6e80\u70b9\u89e3\u7b54\u30b3\u30fc\u30c9\u3068\u3061\u3087\u3044\u3068\u9055\u3044\u307e\u3059\u306e\u3067\u6ce8\u610f\u306d\u30fc\u3002<\/p>\n<p>2-1\u304b\u3089\u30ac\u30e9\u30c3\u3068\u5909\u308f\u3063\u305f\u30b3\u30fc\u30c9\u306f\u3001\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3002<\/p>\n<p>&nbsp;<\/p>\n<pre title=\"2-2 \u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5TLE45\u70b9\u30b3\u30fc\u30c9\" class=\"lang:c++ decode:true \">\/\/ #define _CRT_SECURE_NO_WARNINGS\r\n#include &lt;iostream&gt;\r\n#include &lt;cstdio&gt;\r\n#include &lt;algorithm&gt;\r\n#include &lt;string&gt;\r\n#include &lt;vector&gt;\r\n#include &lt;map&gt;\r\n#include &lt;set&gt;\r\n#include &lt;stack&gt;\r\n#include &lt;cmath&gt;\r\n#include &lt;cstdlib&gt;\r\n#include &lt;functional&gt;\r\n#include &lt;locale&gt;\r\n#include &lt;cctype&gt;\r\n#include &lt;sstream&gt;\r\nusing namespace std;\r\n\r\ntypedef long long LL;\r\ntypedef vector&lt;int&gt; VI;\r\ntypedef vector&lt;VI&gt; VVI;\r\ntypedef map&lt;int, int&gt; MAPII;\r\ntypedef vector&lt;pair&lt;int, int&gt; &gt; VPII;\r\ntypedef multimap&lt;int, string, greater&lt;int&gt; &gt; MuMIS;\r\n\r\n#define MP make_pair\r\n#define fastIO  cin.tie(0); ios::sync_with_stdio(false);\r\n#define FOR(i,a,b) for(int i=(a);i&lt;(b);i++)\r\n\/\/for gcc (\u672atest)\r\n\/\/ #define FOREACH_IT(it,c) for(typeof(c)::iterator it=(c).begin(); it!=(c).end(); ++it)\r\n\/\/for Visual Studio\r\n#define foreach_it(type,it,c) for(type::iterator it=c.begin(),c_end=c.end();it!=c_end;++it)\r\n\/\/ \u672atest\r\n#define DUMP_VVI(b) FOR(i,0,b.size()){FOR(j,0,b[i].size())printf(\"%d \",b[i][j]);puts(\"\");}\r\n\r\n\/\/ ------------------- include, typedef, define END. -------------------\r\n\r\nLL base = 1000000009;\r\nLL base_pow[255];\t\/\/ C&lt;=250\u306a\u306e\u3067\u4f59\u88d5\u6301\u3063\u3066255. base_pow[i] = base^i.\r\nLL hash1[255][255] = {};\r\nLL hash2_rev[255][255] = {};\r\n\r\nLL Get_hash1(int HU_r, int HU_c, int MS_r, int MS_c){\r\n\t\/\/ MS_r\u306f\u4f7f\u3044\u9053\u306a\u3044\r\n\treturn hash1[HU_r][MS_c] - hash1[HU_r][HU_c-1] * base_pow[MS_c-HU_c+1];\r\n}\r\n\r\nLL Get_hash2(int HU_r, int HU_c, int MS_r, int MS_c){\r\n\t\/\/ HU_r\u306f\u4f7f\u3044\u9053\u306a\u3044\r\n\treturn hash2_rev[MS_r][HU_c] - hash2_rev[MS_r][MS_c+1] * base_pow[MS_c-HU_c+1];\r\n}\r\n\r\nbool Check2(int HU_r, int HU_c, int MS_r, int MS_c){\r\n\tbool ret = true;\r\n\tint i=0;\r\n\twhile(HU_r+i &lt;= MS_r-i){\r\n\t\tLL nowHash1 = Get_hash1(HU_r+i,HU_c,MS_r-i,MS_c);\r\n\t\tLL nowHash2 = Get_hash2(HU_r+i,HU_c,MS_r-i,MS_c);\r\n\t\tif(nowHash1 != nowHash2){\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\ti++;\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\nint solve(int R, int C, vector&lt;string&gt; &amp;field){\r\n\tint ans = 0;\r\n\t\/\/ HU : \u5de6\u4e0a  MS : \u53f3\u4e0b\r\n\tFOR(HU_r, 0, field.size()){\r\n\t\tFOR(HU_c, 0, C - 1){\r\n\t\t\tFOR(MS_r, HU_r + 1, field.size()){\r\n\t\t\t\tFOR(MS_c, HU_c + 1, field[HU_r].size()){\r\n\t\t\t\t\tif (Check2(HU_r, HU_c, MS_r, MS_c))\r\n\t\t\t\t\t\tans++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn ans;\r\n}\r\n\r\n\/\/ http:\/\/code-thanks-festival-2014-a-open.contest.atcoder.jp\/submissions\/294369\r\n\/\/ \u4e0a\u8a18URL\u5148\u30b3\u30fc\u30c9\u3092\u53c2\u8003\u306b\u3057\u3066\u3044\u307e\u3059.\r\n\r\nint main(){\r\n\tfastIO;\r\n\tint R = 0, C = 0;\r\n\tstring temp;\r\n\t\/\/ \u5165\u529b\r\n\tcin &gt;&gt; R &gt;&gt; C;\r\n\tvector&lt;string&gt; field;\r\n\tfield.reserve(R);\r\n\tFOR(i, 0, R){\r\n\t\tcin &gt;&gt; temp;\r\n\t\tfield.push_back(temp);\r\n\t}\r\n\t\/\/ \u5165\u529b\u304a\u308f\u308a\r\n\t\/\/ \u30cf\u30c3\u30b7\u30e5\u8a08\u7b97\u7528\r\n\tbase_pow[0]=1;\r\n\tFOR(i,0,C){\r\n\t\tbase_pow[i+1] = base_pow[i] * base;\r\n\t}\r\n\r\n\tFOR(i,0,R){\r\n\t\tFOR(j,0,C){\r\n\t\t\tif(j==0)\thash1[i][j] = 0 + field[i][j];\r\n\t\t\telse\t\thash1[i][j] = hash1[i][j-1] * base + field[i][j];\r\n\t\t}\r\n\t\tfor(int j=C-1; j&gt;=0; j--){\r\n\t\t\thash2_rev[i][j] = hash2_rev[i][j+1] * base + field[i][j];\r\n\t\t}\r\n\t}\r\n\r\n\tcout &lt;&lt; solve(R, C, field) &lt;&lt; endl;\r\n\treturn 0;\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>\u63d0\u51fa\u7d50\u679c\u306f<a href=\"http:\/\/code-thanks-festival-2014-a-open.contest.atcoder.jp\/submissions\/308803\" target=\"_blank\">\u3053\u3061\u3089<\/a>\u306e\u3068\u304a\u308a\u300145\u70b9TLE\u3002<br \/> \u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3057\u3066\u3082\u6e80\u70b9\u3058\u3083\u306a\u3044\u306a\u3093\u3066&#8230;\u3002<\/p>\n<p>&nbsp;<\/p>\n<h6>2-3.4\u4e57\u30aa\u30fc\u30c0\u30fc\u306b\u3059\u308b<\/h6>\n<p>Check2\u95a2\u6570\u306ewhile\u30eb\u30fc\u30d7\u4e2d\u3067\u306f\u3001\u4e0a\u884c\u304b\u3089\u9806\u306b\u898b\u3066\u3044\u307e\u3059\u3002<br \/> solve\u306efor4\u91cd\u30eb\u30fc\u30d7\u306e\u4e2d\u306b\u3082\u3001\u4e0a\u884c\u304b\u3089\u898b\u3066\u3044\u308b\u3082\u306e\u304c\u3042\u308b\u306e\u3067\u3001\u306a\u3093\u304b\u30c0\u30d6\u3063\u3066\u3044\u308b\u611f\u3042\u308b\u30fc\u3002 <br \/>C\u65b9\u5411\u306b2\u91cd\u3001R\u65b9\u5411\u306b\u30822\u91cd\u3001\u306e4\u91cd\u3067\u4f55\u3068\u304b\u306a\u3089\u306a\u3044\u304b\u306a\uff1f<\/p>\n<p>\u3053\u3053\u3067\u3001\u63a2\u7d22\u65b9\u6cd5\u3092\u5909\u3048\u307e\u3059\u3002 <br \/>\u3042\u308b\u56db\u89d2\u5f62\u306e\u4e0a\u884c\u304b\u3089\u9806\u306b\u898b\u3066\u3044\u305f\u306e\u3092\u3001\u305d\u306e\u56db\u89d2\u5f62\u306e\u4e2d\u592e\u884c\u304b\u3089\u898b\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002 <br \/>\u5de6\u4e0a\u5ea7\u6a19\u3068\u53f3\u4e0b\u5ea7\u6a19\u306e\u8a71\u3092\u3057\u3066\u3044\u305f\u3042\u306e\u9803\u306f\u5fd8\u308c\u3066\u3001for2\u91cd\u30eb\u30fc\u30d7\u3067\u5148\u982d\u6587\u5b57\u306e\u3042\u308b\u5217\u3068\u672b\u5c3e\u6587\u5b57\u306e\u3042\u308b\u5217\u3092\u6307\u5b9a\u3001<span style=\"text-decoration: underline;\">\u6b8b\u308a2\u91cd\u30eb\u30fc\u30d7\u3067\u4e2d\u592e\u884c\u3068\u3001\u4e2d\u592e\u884c\u304b\u3089\u306e\u8ddd\u96e2\u3092\u6307\u5b9a\u3057\u307e\u3059<\/span>\u3002<\/p>\n<p>\u3042\u308b\u56db\u89d2\u5f62\u304c\u70b9\u5bfe\u79f0\u306a\u3089\u3001\u305d\u306e\u4e2d\u306b\u3042\u308b\u5c0f\u3055\u3044(\u5217\u305d\u306e\u307e\u307e\u3067\u884c\u3060\u3051\u6700\u4e0a\u884c\u3068\u6700\u4e0b\u884c\u30ab\u30c3\u30c8\u306e)\u56db\u89d2\u5f62\u3082\u70b9\u5bfe\u79f0\u3067\u3059\u3002 <br \/>\u9006\u306b\u8a00\u3046\u306a\u3089\u3001\u5c0f\u3055\u3044\u56db\u89d2\u5f62\u304b\u3089\u30c1\u30a7\u30c3\u30af\u3057\u3066\u3044\u304d\u3001\u70b9\u5bfe\u79f0\u3060\u3063\u305f\u3089ans++\u3001\u70b9\u5bfe\u79f0\u3058\u3083\u306a\u304f\u306a\u3063\u305f\u3089\u3001\u30c1\u30a7\u30c3\u30af\u3092\u3084\u3081\u3066\u3001\u4e2d\u592e\u884c(3\u91cd\u30eb\u30fc\u30d7\u76ee)\u3092\u305a\u3089\u3057\u307e\u3059\u3002<br \/> \u3053\u306e\u4e8b\u5b9f\u3092\u5229\u7528\u3059\u308b\u3068\u3001\u3064\u307e\u308a4\u91cd\u30eb\u30fc\u30d7\u76ee\u5185\u3067\u65b0\u305f\u306b\u8ffd\u52a0\u3055\u308c\u305f\u5916\u50742\u884c\u3060\u3051\u691c\u67fb\u3059\u308c\u3070ok\u3063\u3066\u3053\u3068\u306a\u306e\u3067\u3001\u4e2d\u306b\u542b\u307e\u308c\u308b\u56db\u89d2\u5f62\u306e\u691c\u67fb(=Check2\u95a2\u6570\u3067\u3084\u3063\u3066\u3044\u305f\u3053\u3068)\u3092\u7701\u3051\u307e\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics3_960x574.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-342\" src=\"https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics3_960x574.png\" alt=\"20141207fes40\" width=\"960\" height=\"574\" srcset=\"https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics3_960x574.png 960w, https:\/\/conchan.akita.jp\/blog\/wp-content\/uploads\/2015\/01\/pics3_960x574-300x179.png 300w\" sizes=\"auto, (max-width: 960px) 100vw, 960px\" \/><\/a><\/p>\n<p>\u63a2\u7d22\u9806\u756a\u30a4\u30e1\u30fc\u30b8\u3002<br \/>\u5b9f\u969b\u306b\u306f\u63a2\u7d222\u3064\u76ee\u306e\u56db\u89d2\u5f62fg\u306e\u6642\u70b9\u3067\u70b9\u5bfe\u79f0\u3067\u306f\u306a\u304f\u3001\u3088\u3063\u3066\u6b21\u306e\u56db\u89d2\u5f62abfgkl\u306f\u70b9\u5bfe\u79f0\u306b\u306f\u306a\u308a\u5f97\u306a\u3044\u306e\u3067continue\u6587\u3067\u63a2\u7d22\u98db\u3070\u3057\u305f\u308a\u3002<\/p>\n<p>\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u3002<\/p>\n<pre title=\"CTF A\u65e5\u7a0b H\u554f\u984c\u6e80\u70b9\u30b3\u30fc\u30c9\" class=\"lang:c++ decode:true \">\/\/ #define _CRT_SECURE_NO_WARNINGS\r\n\/\/ #define _USE_MATH_DEFINES\r\n#include &lt;iostream&gt;\r\n#include &lt;cstdio&gt;\r\n#include &lt;algorithm&gt;\r\n#include &lt;string&gt;\r\n#include &lt;vector&gt;\r\n#include &lt;map&gt;\r\n#include &lt;set&gt;\r\n#include &lt;stack&gt;\r\n#include &lt;cmath&gt;\r\n#include &lt;cstdlib&gt;\r\n#include &lt;functional&gt;\r\n#include &lt;locale&gt;\r\n#include &lt;cctype&gt;\r\n#include &lt;sstream&gt;\r\nusing namespace std;\r\n\r\ntypedef long long LL;\r\ntypedef vector&lt;int&gt; VI;\r\ntypedef vector&lt;VI&gt; VVI;\r\ntypedef map&lt;int, int&gt; MAPII;\r\ntypedef multimap&lt;int, char, greater&lt;int&gt; &gt; MuMAPIC;\r\ntypedef vector&lt;pair&lt;int, int&gt; &gt; VPII;\r\ntypedef multimap&lt;int, string, greater&lt;int&gt; &gt; MuMIS;\r\n\r\n#define MP make_pair\r\n#define fastIO  cin.tie(0); ios::sync_with_stdio(false);\r\n#define FOR(i,a,b) for(int i=(a);i&lt;(b);i++)\r\n#define foreach_it(type,it,c) for(type::iterator it=c.begin(),c_end=c.end();it!=c_end;++it)\r\n#define DUMP_VVI(b) FOR(i,0,b.size()){FOR(j,0,b[i].size())printf(\"%d \",b[i][j]);puts(\"\");}\r\n\/\/ \u5165\u529b\u3092push_back(d)\u3084array[d]\u306b\u4f7f\u3046\u6642\u306b1\u884c\u3067\u66f8\u3051\u308b\r\n\/\/ int INPUT_INT() {int d;cin&gt;&gt;d;return d;}\r\ntemplate&lt;class T&gt;T IN(){T d;cin&gt;&gt;d;return d;}\r\n\r\n\/\/ -------------------- include, typedef, define, template END. --------------------\r\n\r\nLL base = 1000000009;\r\nLL base_pow[255];\t\/\/ C&lt;=250\u306a\u306e\u3067\u4f59\u88d5\u6301\u3063\u3066255. base_pow[i] = base^i.\r\nLL hash1[255][255] = {};\r\nLL hash2_rev[255][255] = {};\t\/\/ reverse hash.\r\n\r\nLL inline Get_hash1(int r, int HU_c, int MS_c){\r\n\t\/\/ r = HU_r. MS_r\u306f\u4f7f\u3044\u9053\u306a\u3044\r\n\treturn hash1[r][MS_c] - hash1[r][HU_c-1] * base_pow[MS_c-HU_c+1];\r\n}\r\n\r\nLL inline Get_hash2(int r, int HU_c, int MS_c){\r\n\t\/\/ r = MS_r. HU_r\u306f\u4f7f\u3044\u9053\u306a\u3044\r\n\treturn hash2_rev[r][HU_c] - hash2_rev[r][MS_c+1] * base_pow[MS_c-HU_c+1];\r\n}\r\n\r\nint inline solve(int R, int C){\r\n\tint ans=0;\r\n\t\/\/ HU : \u5de6\u4e0a, MS : \u53f3\u4e0b, dis : distance from the center line.\r\n\tFOR(HU_c,0,C-1){\r\n\t\tFOR(MS_c,HU_c+1,C){\r\n\t\t\t\/\/ \u9ad8\u3055\u304c\u5947\u6570(1,3,5,...)\u306e\u56db\u89d2\u5f62\r\n\t\t\tFOR(i,0,R){\r\n\t\t\t\t\/\/ \u4e2d\u592e1\u884c\u30c1\u30a7\u30c3\u30af\r\n\t\t\t\tif(Get_hash1(i,HU_c,MS_c) != Get_hash2(i,HU_c,MS_c))\r\n\t\t\t\t\tcontinue;\t\/\/ \u6b21\u306ei\u3078.\r\n\t\t\t\tfor(int dis=1; i-dis&gt;=0, i+dis&lt;R; dis++){\r\n\t\t\t\t\t\/\/ \u4eca\u898b\u308b\u56db\u89d2\u5f62(\u6700\u4e0a\u884ci-dis, \u6700\u4e0b\u884ci+dis)\u304c, field\u306b\u53ce\u307e\u3063\u3066\u3044\u308b\u306a\u3089\u5b9f\u884c.\r\n\t\t\t\t\tif(Get_hash1(i-dis,HU_c,MS_c) == Get_hash2(i+dis,HU_c,MS_c))\r\n\t\t\t\t\t\tans++;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\/\/ \u9ad8\u3055\u304c\u5076\u6570(2,4,6,...)\u306e\u56db\u89d2\u5f62\r\n\t\t\tFOR(i,0,R){\r\n\t\t\t\tfor(int dis=1; i-dis +1 &gt;=0, i+dis&lt;R; dis++){\r\n\t\t\t\t\t\/\/ \u4eca\u898b\u308b\u56db\u89d2\u5f62(\u6700\u4e0a\u884ci-dis+1, \u6700\u4e0b\u884ci+dis)\u304c, field\u306b\u53ce\u307e\u3063\u3066\u3044\u308b\u306a\u3089\u5b9f\u884c.\r\n\t\t\t\t\tif(Get_hash1(i-dis +1 ,HU_c,MS_c) == Get_hash2(i+dis,HU_c,MS_c))\r\n\t\t\t\t\t\tans++;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn ans;\r\n}\r\n\r\n\/\/ \u4ee5\u4e0b\u306eURL\u5148\u306e\u30b3\u30fc\u30c9\u306b\u5927\u5909\u304a\u4e16\u8a71\u306b\u306a\u308a\u307e\u3057\u305f.\r\n\/\/ http:\/\/code-thanks-festival-2014-a-open.contest.atcoder.jp\/submissions\/294369\r\n\/\/ \u89e3\u6cd5\uff1a4\u91cd\u30eb\u30fc\u30d7\u306b\u3059\u308b,\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3092\u66f8\u304f.\r\n\r\nint main(){\r\n\tfastIO;\r\n\tint R = 0, C = 0;\r\n\r\n\tcin &gt;&gt; R &gt;&gt; C;\r\n\tvector&lt;string&gt; field;\r\n\tfield.reserve(R);\r\n\tFOR(i,0,R)\r\n\t\tfield.push_back(IN&lt;string&gt;());\r\n\r\n\tbase_pow[0]=1;\r\n\tFOR(i,0,C)\r\n\t\tbase_pow[i+1] = base_pow[i] * base;\r\n\r\n\tFOR(i,0,R){\r\n\t\tFOR(j,0,C){\r\n\t\t\tif(j-1&lt;0)\thash1[i][j] = 0 + field[i][j];\r\n\t\t\telse\t\thash1[i][j] = hash1[i][j-1] * base + field[i][j];\r\n\t\t}\r\n\t\tfor(int j=C-1; j&gt;=0; j--){\r\n\t\t\thash2_rev[i][j] = hash2_rev[i][j+1] * base + field[i][j];\r\n\t\t}\r\n\t}\r\n\r\n\tcout &lt;&lt; solve(R, C) &lt;&lt; endl;\r\n\treturn 0;\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>\u63d0\u51fa\u7d50\u679c\u306f\u3001100\u70b9AC\u3002\u2192<a href=\"http:\/\/code-thanks-festival-2014-a-open.contest.atcoder.jp\/submissions\/309290\" target=\"_blank\">\u3053\u3061\u3089\uff01<\/a><br \/>2014\u5e74\u4e2d\u306b\u89e3\u3051\u3066\u826f\u304b\u3063\u305f\u30fc\uff01<br \/>(URL\u306bopen\u304c\u542b\u307e\u308c\u306a\u3044\u3001\u30aa\u30f3\u30b5\u30a4\u30c8\u5c02\u7528\u30b5\u30a4\u30c8\u3067\u3082\u540c\u3058\u3082\u306e\u63d0\u51fa\u3057\u307e\u3057\u305f\u3001H\u554f\u984cAC\u307e\u3060\u81ea\u5206\u3060\u3051\u306a\u306e\u3067\u3001\u30aa\u30f3\u30b5\u30a4\u30c8\u53c2\u52a0\u8005\u3082\u63d0\u51fa\u3057\u3088\u3046\u2192<a href=\"http:\/\/code-thanks-festival-2014-a.contest.atcoder.jp\/submissions\/309344\" target=\"_blank\">\u3053\u3061\u3089\uff01<\/a>)<\/p>\n<p>&nbsp;<\/p>\n<h6>2-4. \u7d50\u8ad6\u3068\u6700\u7d42\u7684\u306a\u6e80\u70b9\u30b3\u30fc\u30c9<\/h6>\n<p><strong>\u7d50\u8ad6<\/strong>\uff1a\u30aa\u30fc\u30c0\u30fc\u304c\u5de8\u5927\u3067\u5236\u9650\u6642\u9593\u306b\u9593\u306b\u5408\u308f\u306a\u3055\u305d\u3046\u306a\u6587\u5b57\u5217\u691c\u7d22\uff08\u6bd4\u8f03\uff09\u306f\u3001\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3092\u66f8\u3053\u3046\u3002\u6587\u5b57\u5217\u691c\u7d22\u7cfb\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e\u4e2d\u3067\u306f\uff08\u7406\u8ad6\u3055\u3048\u7406\u89e3\u3059\u308c\u3070\uff09\u5b9f\u88c5\u304c\u697d\u3067\u5fdc\u7528\u7bc4\u56f2\u3082\u5e83\u3081\u304b\u306a\u3002<\/p>\n<p>\u6700\u7d42\u7684\u306a\u30b3\u30fc\u30c9\u306f\u3001\u95a2\u6570\u3092\u30a4\u30f3\u30e9\u30a4\u30f3\u5c55\u958b\u3057\u3066\u3044\u307e\u3059\u3002<br \/> \u3053\u3063\u3061\u306e\u65b9\u304c\u3001\u3061\u3087\u3063\u3068\u3060\u3051\u901f\u304b\u3063\u305f\u306e\u3067\u3002<br \/> (2-3\u306e\u30b3\u30fc\u30c9\u306f5441ms\u30012-4\u306e\u30b3\u30fc\u30c9\u306f4707ms\u3002)<\/p>\n<p>\u30b3\u30fc\u30c9\u306f\u4ee5\u4e0b\u306e\u3068\u304a\u308a\u3067\u3059\u3002\u63d0\u51fa\u7d50\u679c\u306f\u2192<a href=\"http:\/\/code-thanks-festival-2014-a-open.contest.atcoder.jp\/submissions\/309645\" target=\"_blank\">\u3053\u3061\u3089\uff01<\/a><\/p>\n<pre title=\"CTF A\u65e5\u7a0b H\u554f\u984c\u30a4\u30f3\u30e9\u30a4\u30f3\u5c55\u958b\u8fbc\u307f\u6e80\u70b9\u30b3\u30fc\u30c9\" class=\"lang:default decode:true \">\/\/ #define _CRT_SECURE_NO_WARNINGS\r\n\/\/ #define _USE_MATH_DEFINES\r\n#include &lt;iostream&gt;\r\n#include &lt;cstdio&gt;\r\n#include &lt;algorithm&gt;\r\n#include &lt;string&gt;\r\n#include &lt;vector&gt;\r\n#include &lt;map&gt;\r\n#include &lt;set&gt;\r\n#include &lt;stack&gt;\r\n#include &lt;cmath&gt;\r\n#include &lt;cstdlib&gt;\r\n#include &lt;functional&gt;\r\n#include &lt;locale&gt;\r\n#include &lt;cctype&gt;\r\n#include &lt;sstream&gt;\r\nusing namespace std;\r\n\r\ntypedef long long LL;\r\ntypedef vector&lt;int&gt; VI;\r\ntypedef vector&lt;VI&gt; VVI;\r\ntypedef map&lt;int, int&gt; MAPII;\r\ntypedef multimap&lt;int, char, greater&lt;int&gt; &gt; MuMAPIC;\r\ntypedef vector&lt;pair&lt;int, int&gt; &gt; VPII;\r\ntypedef multimap&lt;int, string, greater&lt;int&gt; &gt; MuMIS;\r\n\r\n#define MP make_pair\r\n#define fastIO  cin.tie(0); ios::sync_with_stdio(false);\r\n#define FOR(i,a,b) for(int i=(a);i&lt;(b);i++)\r\n#define foreach_it(type,it,c) for(type::iterator it=c.begin(),c_end=c.end();it!=c_end;++it)\r\n#define DUMP_VVI(b) FOR(i,0,b.size()){FOR(j,0,b[i].size())printf(\"%d \",b[i][j]);puts(\"\");}\r\n\/\/ \u5165\u529b\u3092push_back(d)\u3084array[d]\u306b\u4f7f\u3046\u6642\u306b1\u884c\u3067\u66f8\u3051\u308b\r\n\/\/ int INPUT_INT() {int d;cin&gt;&gt;d;return d;}\r\ntemplate&lt;class T&gt;T IN(){T d;cin&gt;&gt;d;return d;}\r\n\r\n\/\/ -------------------- include, typedef, define, template END. --------------------\r\n\r\nLL base = 1000000009;\r\nLL base_pow[255];\t\/\/ C&lt;=250\u306a\u306e\u3067\u4f59\u88d5\u6301\u3063\u3066255. base_pow[i] = base^i.\r\nLL hash1[255][255] = {};\r\nLL hash2_rev[255][255] = {};\t\/\/ reverse hash.\r\n\r\nLL inline Get_hash1(int r, int HU_c, int MS_c){\r\n\t\/\/ r = HU_r. MS_r\u306f\u4f7f\u3044\u9053\u306a\u3044\r\n\treturn hash1[r][MS_c] - hash1[r][HU_c-1] * base_pow[MS_c-HU_c+1];\r\n}\r\n\r\nLL inline Get_hash2(int r, int HU_c, int MS_c){\r\n\t\/\/ r = MS_r. HU_r\u306f\u4f7f\u3044\u9053\u306a\u3044\r\n\treturn hash2_rev[r][HU_c] - hash2_rev[r][MS_c+1] * base_pow[MS_c-HU_c+1];\r\n}\r\n\r\nint inline solve(int R, int C){\r\n\tint ans=0;\r\n\t\/\/ HU : \u5de6\u4e0a, MS : \u53f3\u4e0b, dis : distance from the center line.\r\n\tFOR(HU_c,0,C-1){\r\n\t\tFOR(MS_c,HU_c+1,C){\r\n\t\t\t\/\/ \u9ad8\u3055\u304c\u5947\u6570(1,3,5,...)\u306e\u56db\u89d2\u5f62\r\n\t\t\tFOR(i,0,R){\r\n\t\t\t\t\/\/ \u4e2d\u592e1\u884c\u30c1\u30a7\u30c3\u30af\r\n\t\t\t\tif(Get_hash1(i,HU_c,MS_c) != Get_hash2(i,HU_c,MS_c))\r\n\t\t\t\t\tcontinue;\t\/\/ \u6b21\u306ei\u3078.\r\n\t\t\t\tfor(int dis=1; i-dis&gt;=0, i+dis&lt;R; dis++){\r\n\t\t\t\t\t\/\/ \u4eca\u898b\u308b\u56db\u89d2\u5f62(\u6700\u4e0a\u884ci-dis, \u6700\u4e0b\u884ci+dis)\u304c, field\u306b\u53ce\u307e\u3063\u3066\u3044\u308b\u306a\u3089\u5b9f\u884c.\r\n\t\t\t\t\tif(Get_hash1(i-dis,HU_c,MS_c) == Get_hash2(i+dis,HU_c,MS_c))\r\n\t\t\t\t\t\tans++;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\/\/ \u9ad8\u3055\u304c\u5076\u6570(2,4,6,...)\u306e\u56db\u89d2\u5f62\r\n\t\t\tFOR(i,0,R){\r\n\t\t\t\tfor(int dis=1; i-dis +1 &gt;=0, i+dis&lt;R; dis++){\r\n\t\t\t\t\t\/\/ \u4eca\u898b\u308b\u56db\u89d2\u5f62(\u6700\u4e0a\u884ci-dis+1, \u6700\u4e0b\u884ci+dis)\u304c, field\u306b\u53ce\u307e\u3063\u3066\u3044\u308b\u306a\u3089\u5b9f\u884c.\r\n\t\t\t\t\tif(Get_hash1(i-dis +1 ,HU_c,MS_c) == Get_hash2(i+dis,HU_c,MS_c))\r\n\t\t\t\t\t\tans++;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn ans;\r\n}\r\n\r\n\/\/ \u4ee5\u4e0b\u306eURL\u5148\u306e\u30b3\u30fc\u30c9\u306b\u5927\u5909\u304a\u4e16\u8a71\u306b\u306a\u308a\u307e\u3057\u305f.\r\n\/\/ http:\/\/code-thanks-festival-2014-a-open.contest.atcoder.jp\/submissions\/294369\r\n\/\/ \u89e3\u6cd5\uff1a4\u91cd\u30eb\u30fc\u30d7\u306b\u3059\u308b,\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u3092\u66f8\u304f.\r\n\r\nint main(){\r\n\tfastIO;\r\n\tint R = 0, C = 0;\r\n\r\n\tcin &gt;&gt; R &gt;&gt; C;\r\n\tvector&lt;string&gt; field;\r\n\tfield.reserve(R);\r\n\tFOR(i,0,R)\r\n\t\tfield.push_back(IN&lt;string&gt;());\r\n\r\n\tbase_pow[0]=1;\r\n\tFOR(i,0,C)\r\n\t\tbase_pow[i+1] = base_pow[i] * base;\r\n\r\n\tFOR(i,0,R){\r\n\t\tFOR(j,0,C){\r\n\t\t\tif(j-1&lt;0)\thash1[i][j] = 0 + field[i][j];\r\n\t\t\telse\t\thash1[i][j] = hash1[i][j-1] * base + field[i][j];\r\n\t\t}\r\n\t\tfor(int j=C-1; j&gt;=0; j--){\r\n\t\t\thash2_rev[i][j] = hash2_rev[i][j+1] * base + field[i][j];\r\n\t\t}\r\n\t}\r\n\r\n\tcout &lt;&lt; solve(R, C) &lt;&lt; endl;\r\n\treturn 0;\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h5>3.\u304a\u307e\u3051\uff1a\u66f8\u9053\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u3067\u66f8\u3044\u305f\u30b3\u30fc\u30c9\u306b\u3064\u3044\u3066<\/h5>\n<p>\u61c7\u89aa\u4f1a\u4e2d\u306b\u308f\u3056\u308f\u3056\u30ab\u30d0\u30f3\u304b\u3089\u7af6\u30d7\u30ed\u7528\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u308a\u51fa\u3057\u3066\u3001\u5927\u91cf\u306einclude\u6587\u306a\u3069\u3092\u66f8\u9053(\u66f8\u5199)\u3057\u307e\u3057\u305f\u3002<br \/>\u9014\u4e2d\u3067\u3001\u300c\u3042\u3063\u3053\u308c\u5168\u90e8\u306f\u307e\u3089\u306a\u3044\u300d\u3063\u3066\u6c17\u3065\u3044\u3066\u90e8\u5206\u7701\u7565\u3057\u3066\u3044\u305f\u308a\u3002<\/p>\n<p>include\u6587(typedef\u3084define\u3084template\u542b\u3080\u3001\u4ee5\u4e0b\u300cinclude\u6587\u300d)\u306f\u3001\u30b3\u30fc\u30c9\u66f8\u304d\u59cb\u3081\u306b\u4e38\u3005\u30b3\u30d4\u30fc\u3057\u3066\u8cbc\u308a\u4ed8\u3051\u307e\u3059\u3002<br \/>include\u6587\u304c\u8db3\u308a\u306a\u3044\u306e\u3067\u30a8\u30e9\u30fc\u51fa\u305f\uff01\u3068\u3044\u3063\u305f\u4e8b\u614b\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u3001\u307e\u305f\u3001\u624b\u65e9\u304f\u30b3\u30fc\u30c9\u3092\u66f8\u304f\u305f\u3081\u306b\u7528\u3044\u307e\u3059\u3002<\/p>\n<p>\u3042\u3068\u3001CODE THANKS FESTIVAL A\u65e5\u7a0b\u30aa\u30f3\u30b5\u30a4\u30c8\u306f2014\u5e7412\u67087\u65e5\u3067\u3057\u305f\u3051\u3069\u3001\u3053\u306e\u5927\u91cfinclude\u6587\u3092\u66f8\u304d\u59cb\u3081\u305f\u306e\u306f\u5b9f\u306f\u7d041\u30f6\u6708\u524d\u3060\u3063\u305f\u308a\u3002<br \/>\u4ed6\u306e\u65b9\u306e\u30b3\u30fc\u30c9\u3092\u898b\u3066\u5927\u91cf\u306einclude\u6587\u306a\u3069\u304c\u3042\u3063\u305f\u306e\u3067\u3001\u771f\u4f3c\u3057\u3066\u307f\u305f\u306e\u3067\u3059\u3002<br \/>\u6700\u521d\u306f\u771f\u4f3c\u3067\u3057\u305f\u3051\u3069\u3001AOJ\u3067\u7c21\u5358\u306a\u554f\u984c\u3092\u89e3\u304d\u306a\u304c\u3089\u3001\u81ea\u5206\u304c\u5206\u304b\u308a\u3084\u3059\u3044\u3088\u3046\u306b\u6539\u9020\u3057\u3066\u3044\u307e\u3059\u3002<br \/>(fastIO\u306a\u3093\u3066\u3001\u4ed6\u306b#define\u5316\u3057\u3066\u3044\u308b\u4eba\u3092\u898b\u305f\u3053\u3068\u304c\u306a\u3044\u3088\u3001\u81ea\u4f5c\u3060\u3088\u3002)<br \/>#include\u7cfb\u5217\u306f\u3001\u300cAOJ\u3067\u4f7f\u3063\u305f\u3089\u8ffd\u52a0\u3059\u308b\u300d\u30b9\u30bf\u30a4\u30eb\u3002<br \/>\u3064\u307e\u308a\u3001\u5168\u90e81\u56de\u4ee5\u4e0a\u4f7f\u3063\u305f\u3053\u3068\u304c\u3042\u308b\u306e\u3060\u30fc\u3002<\/p>\n<p>\u4ee5\u4e0b\u306b\u30b3\u30fc\u30c9\u3092\u8a18\u8f09\u3057\u3066\u304a\u304f\u306e\u3067\u3001\u5404\u81ea\u4f7f\u3044\u3084\u3059\u3044\u3088\u3046\u306b\u304a\u4f7f\u3044\u304f\u3060\u3055\u3044\u307e\u305b\u30fc\u3002<\/p>\n<p>&nbsp;<\/p>\n<pre title=\"include\u6587\u305f\u3061\" class=\"lang:c++ decode:true \">\/\/ #define _CRT_SECURE_NO_WARNINGS\r\n\/\/ #define _USE_MATH_DEFINES\r\n#include &lt;iostream&gt;\r\n#include &lt;cstdio&gt;\r\n#include &lt;algorithm&gt;\r\n#include &lt;string&gt;\r\n#include &lt;vector&gt;\r\n#include &lt;map&gt;\r\n#include &lt;set&gt;\r\n#include &lt;stack&gt;\r\n#include &lt;cmath&gt;\r\n#include &lt;cstdlib&gt;\r\n#include &lt;functional&gt;\r\n#include &lt;locale&gt;\r\n#include &lt;cctype&gt;\r\n#include &lt;sstream&gt;\r\nusing namespace std;\r\n\r\ntypedef long long LL;\r\ntypedef vector&lt;int&gt; VI;\r\ntypedef vector&lt;VI&gt; VVI;\r\ntypedef map&lt;int, int&gt; MAPII;\r\ntypedef multimap&lt;int, char, greater&lt;int&gt; &gt; MuMAPIC;\r\ntypedef vector&lt;pair&lt;int, int&gt; &gt; VPII;\r\ntypedef multimap&lt;int, string, greater&lt;int&gt; &gt; MuMIS;\r\n\r\n#define MP make_pair\r\n#define fastIO  cin.tie(0); ios::sync_with_stdio(false);\r\n#define FOR(i,a,b) for(int i=(a);i&lt;(b);i++)\r\n\/\/for gcc (\u672atest)\r\n\/\/ #define FOREACH_IT(it,c) for(typeof(c)::iterator it=(c).begin(); it!=(c).end(); ++it)\r\n\/\/for Visual Studio\r\n#define foreach_it(type,it,c) for(type::iterator it=c.begin(),c_end=c.end();it!=c_end;++it)\r\n#define DUMP_VVI(b) FOR(i,0,b.size()){FOR(j,0,b[i].size())printf(\"%d \",b[i][j]);puts(\"\");}\r\ntemplate&lt;class T&gt;T IN(){T d;cin&gt;&gt;d;return d;}\r\n\r\n\/\/ -------------------- include, typedef, define, template END. --------------------<\/pre>\n<p>&nbsp;<\/p>\n<p>\u00a0__________________________________________________<\/p>\n<p>\u30fb4\u4e57\u30aa\u30fc\u30c0\u30fc\u306e\u6587\u5b57\u5217\u51e6\u7406\u3060\u3068\uff1f<br \/>4\u4e57\u30aa\u30fc\u30c0\u30fc\u3067\u3001\u30ed\u30fc\u30ea\u30f3\u30b0\u30cf\u30c3\u30b7\u30e5\u4f7f\u308f\u305a\u6587\u5b57\u5217\u51e6\u7406\u3067\u9811\u5f35\u3063\u3066\u3082TLE45\u70b9\u3067\u3057\u305f\u3002\u2192<a href=\"http:\/\/code-thanks-festival-2014-a-open.contest.atcoder.jp\/submissions\/309641\" target=\"_blank\">\u3053\u3061\u3089\uff01<\/a><\/p>\n<p>\u30fb\u3044\u305f\u3060\u3044\u305f\u30ae\u30d5\u30c8\u5238\u306e\u4f7f\u3044\u9053<br \/>chokudai\u3055\u3093\u306e\u672c\u3092\u8cb7\u3046\u305f\u3081\u306b\u4f7f\u3046\u4e88\u5b9a\u3002H\u554f\u984c\u89e3\u8aac\u66f8\u3044\u3066\u304b\u3089\u4f7f\u304a\u3046\u3068\u3001\u3068\u3063\u3066\u304a\u3044\u305f\u306e\u3055\uff01<\/p>\n<p>\u30fb\u5b66\u79d1HP<br \/>\u7814\u7a76\u5ba4\u306e\u6bce\u9031\u306e\u9032\u6357\u767a\u8868\u3067\u3001\u300c\u7af6\u6280\u30d7\u30ed\u30b3\u30f3\u30aa\u30f3\u30b5\u30a4\u30c8\u884c\u3063\u305f\u300d\u300c\u307e\u305f\u884c\u3063\u305f\u300d\u306a\u3069\u3068\u5831\u544a\u3057\u305f\u3089\u3001\u5b66\u79d1HP\u306b\u8a18\u4e8b\u304c\u3067\u304d\u307e\u3057\u305f(\u66f8\u304d\u307e\u3057\u305f)\u3002<br \/>\u8d85\u77ed\u304f\u66f8\u3044\u3066\u3001\u3068\u306e\u3053\u3068\u3067\u3001\u66f8\u304d\u305f\u3044\u3053\u3068\u5168\u7136\u66f8\u3051\u306a\u304b\u3063\u305f\u305c\u2026\u3002<\/p>\n<p>\u30fb\u5352\u8ad6<br \/>OS\u306e\u7814\u7a76\u3092\u3057\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u5c31\u6d3b\u7d42\u308f\u3089\u305a\u8ad6\u6587\u306b\u3067\u304d\u308b\u3082\u306e\u304c\u4f55\u3082\u306a\u304f\u3001\u30e9\u30d3\u30f3-\u30ab\u30fc\u30d7\u6587\u5b57\u5217\u63a2\u7d22\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u3064\u3044\u3066\u3092\u5352\u8ad6\u306b\u3057\u3066\u3057\u307e\u3063\u305f\u2026\u3002<\/p>\n<p>\u30fb\u8a18\u4e8b\u4f5c\u6210\u306b\u624b\u9593\u53d6\u3063\u305f<br \/>\u672c\u8a18\u4e8b\u306e\u4f5c\u6210\u306f\u3001\u6539\u884c\u304c\u3046\u307e\u304f\u3044\u304b\u305a\u624b\u9593\u53d6\u308a\u307e\u3057\u305f\u3002\u5bfe\u51e6\u6cd5\u5fd8\u308c\u306a\u3044\u3046\u3061\u306b\u30e1\u30e2\u3057\u307e\u3057\u305f \u2192 <a href=\"https:\/\/conchan.akita.jp\/blog\/line_break_problem\/\">WordPress\u306bTwitter\u3092\u8cbc\u308a\u4ed8\u3051\u308b\u3068\u6539\u884c\u304c\u6d88\u6ec5\u3059\u308b\u554f\u984c\u3078\u306e\u5bfe\u51e6\u6cd5<\/a><\/p>\n<p>___________________________________________________<\/p>\n<p>chokudai\u3055\u3093\u306e\u89e3\u8aac\u30b9\u30e9\u30a4\u30c9\u3092\u9664\u3051\u3070\u3001A\u65e5\u7a0bH\u554f\u984c\u89e3\u8aac\u8a18\u4e8b\u306f\u4e16\u754c\u521d\u304b\u3082\uff1f<br \/>\u305d\u308c\u3067\u306f\u7686\u3055\u3093\u3001\u3088\u308a\u5f37\u304f\u3088\u308a\u697d\u3057\u3044\u7af6\u6280\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u30e9\u30a4\u30d5\u3092\u76ee\u6307\u3057\u307e\u3057\u3087\u3046\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u3093\u306b\u3061\u306f\u3001\u30b3\u30f3\u3061\u3083\u3093\u3053\u3068\u4f50\u3005\u6728\u3067\u3059\u3002 \u79cb\u7530\u306b\u7af6\u6280\u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u3063\u3066\u3044\u308b\u306e\u304b\uff1f\u3068\u3075\u3068\u601d\u3046\u306a\u3069\u3057\u3066\u3044\u307e\u3059\u3002 \u30d7\u30ed\u30b0\u30e9\u30de\u30fc\u81ea\u4f53\u3001\u79cb\u7530\u306b\u5c11\u306a\u3044\u3088\u3046\u306a\u3002 \u3055\u3066\u3001\u7af6\u6280\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306e\u5927\u4f1a\u300cCODE THANKS FESTIVAL 2 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-220","post","type-post","status-publish","format-standard","hentry","category-7","entry"],"_links":{"self":[{"href":"https:\/\/conchan.akita.jp\/blog\/wp-json\/wp\/v2\/posts\/220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/conchan.akita.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/conchan.akita.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/conchan.akita.jp\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/conchan.akita.jp\/blog\/wp-json\/wp\/v2\/comments?post=220"}],"version-history":[{"count":65,"href":"https:\/\/conchan.akita.jp\/blog\/wp-json\/wp\/v2\/posts\/220\/revisions"}],"predecessor-version":[{"id":360,"href":"https:\/\/conchan.akita.jp\/blog\/wp-json\/wp\/v2\/posts\/220\/revisions\/360"}],"wp:attachment":[{"href":"https:\/\/conchan.akita.jp\/blog\/wp-json\/wp\/v2\/media?parent=220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/conchan.akita.jp\/blog\/wp-json\/wp\/v2\/categories?post=220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/conchan.akita.jp\/blog\/wp-json\/wp\/v2\/tags?post=220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}