<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom"><id>https://blog.tusooa.xyz</id><title>无奈 - 何事西风不待人</title><link href="https://blog.tusooa.xyz"/><subtitle>迷糊萝莉</subtitle><updated>2026-05-29T12:00:00.000Z</updated><entry><id>https://blog.tusooa.xyz/2020/10/01/Fix-firefox-address-bar-clickSelectsAll-bug/</id><title>Fix firefox address bar clickSelectsAll bug (Spoiler: no re-compilation required.)</title><link rel="alternate" href="https://blog.tusooa.xyz/2020/10/01/Fix-firefox-address-bar-clickSelectsAll-bug/"/><published>2020-10-01T20:15:56.000Z</published><updated>2026-05-29T12:00:00.000Z</updated><content type="html">&lt;p&gt;This is last updated 2026,5,29 (5) to reflect new changes for Firefox &amp;gt;= 201.
&lt;a href=&quot;https://r.lily-is.land/tusooa/tusooa.pg.kazv.moe/commits/branch/astro/astro/src/content/blog/Fix-firefox-address-bar-clickSelectsAll-bug.md&quot;&gt;View update history&lt;/a&gt;. This post has been updated 4 times to adapt
to upstream changes.&lt;/p&gt;
&lt;p&gt;A couple of months ago, I opened my Firefox as usual, I found out that
when I click on the address bar, it dared to select everything in it
as if any creepy browser would do! The first thing I did is to check
the &lt;code&gt;clickSelectsAll&lt;/code&gt; pref -- what I always do first after getting a
new install of Firefox on Windows is setting this pref to &lt;code&gt;false&lt;/code&gt;,
and setting &lt;code&gt;doubleClickSelectsAll&lt;/code&gt; pref to &lt;code&gt;true&lt;/code&gt;: that is the default
behaviour for Firefox on GNU/Linux... that time at least...&lt;/p&gt;
&lt;p&gt;Much to my disappointment, the pref are setting correctly, but nothing
works. I tried to search for this, but without success, maybe since
this bug was so new, or I was to silly to apply the right keywords
(huh, maybe the latter one?). So I created an account on Mozilla&apos;s
bugtracker just to open &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1629135&quot;&gt;a bug&lt;/a&gt;. At the same time I switched
back to the ESR version of Firefox, which rid me (till recently) of
this stupid address bar but still granted me security updates. A
few days ago, however, Firefox ESR was unfortunately eventually shipped
with this bug, calling for a solution.&lt;/p&gt;
&lt;a&gt;&lt;/a&gt;
&lt;h1&gt;&lt;a href=&quot;#Some-more-background&quot;&gt;Some more background&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Here I will add more background because I need to complain a lot (&amp;gt;w&amp;lt;).
If you would like to see the solution directly, &lt;a href=&quot;#The-solution&quot;&gt;jump there&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Someone on bugzilla pointed out that the bug had been
&lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=1621570&quot;&gt;raised by someone else&lt;/a&gt;. Following that bug, I saw that
the developer was being pretty toxic and just marked it as &lt;code&gt;WONTFIX&lt;/code&gt;,
despite many people criticized the buggy behaviour and regarded
the original behaviour as signature of Firefox. I finally switched
from Ubuntu to Gentoo after the new ESR, as I would like to have more
control of my software.&lt;/p&gt;
&lt;p&gt;Yesterday I &lt;a href=&quot;https://matrix.to/#/!NREUQXSZzhWoQFQpTe:matrix.org/$16014845914171808dKKcm:matrix.org?via=matrix.org&amp;amp;via=tusooa.xyz&quot;&gt;talked&lt;/a&gt; to &lt;a href=&quot;https://outsideofinfinity.wordpress.com/&quot;&gt;tiar&lt;/a&gt; about the freedom
of users to make software behave the way they want, without necessarily
being a developer. I complained that many free/libre software does not
excel in this aspect, using Firefox &amp;gt;=75 as an example.&lt;/p&gt;
&lt;p&gt;The thing Firefox developers does, by removing the &lt;code&gt;clickSelectsAll&lt;/code&gt;
prefs, is actually somewhat limiting users&apos; freedom, as customization
becomes harder and harder. This kind of freedom has been brought up
by a KDE person as &lt;a href=&quot;https://phabricator.kde.org/T11091&quot;&gt;a goal&lt;/a&gt; called &quot;freedom out of the box.&quot;
In short, it aims to make changing the behaviour of a program
as easy as just using it, probably unifying the interface where a program
is used and where a program is customized.&lt;/p&gt;
&lt;p&gt;And that is reasonable: no one should have to spend quite a long time
reading an extraordinarily large code base just to make a tiny little
change that would significantly improve their lives. We will simply not
have that much time. I know tweaking system is fun... (should I say
addictive?) but still, instant result is always a good-to-have.&lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;#The-solution&quot;&gt;The solution&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;For Firefox, we do have a &lt;a href=&quot;https://superuser.com/questions/540851/go-back-to-not-selecting-the-whole-url-when-i-click-the-address-bar&quot;&gt;solution&lt;/a&gt; without needing to
recompile. That is, to change the &lt;code&gt;omni.ja&lt;/code&gt; pack in the Firefox
distribution. Based on that I managed to restore the old good
urlbar behaviour.&lt;/p&gt;
&lt;p&gt;For my &lt;code&gt;firefox-bin&lt;/code&gt; on Gentoo, the relevant file is at
&lt;code&gt;/opt/firefox/browser/omni.ja&lt;/code&gt;. (In Firefox v146 with &lt;a href=&quot;https://phabricator.services.mozilla.com/D270553#change-373rnO3LTLeb&quot;&gt;https://phabricator.services.mozilla.com/D270553#change-373rnO3LTLeb&lt;/a&gt;, the file was once shortly in &lt;code&gt;omni.ja&lt;/code&gt; instead of &lt;code&gt;browser/omni.ja&lt;/code&gt;.)&lt;/p&gt;
&lt;p&gt;First make a copy of that file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; -v&lt;/span&gt;&lt;span&gt; /opt/firefox/browser/omni.ja&lt;/span&gt;&lt;span&gt; omni.ja.orig&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then unzip the file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;mkdir&lt;/span&gt;&lt;span&gt; omni&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;unzip&lt;/span&gt;&lt;span&gt; -d&lt;/span&gt;&lt;span&gt; omni&lt;/span&gt;&lt;span&gt; /opt/firefox/browser/omni.ja&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It may return 2, but does not matter.&lt;/p&gt;
&lt;p&gt;Then edit the &lt;code&gt;chrome/browser/content/browser/urlbar/UrlbarInput.mjs&lt;/code&gt;. In the &lt;code&gt;_on_mousedown&lt;/code&gt; function:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Change&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;#preventClickSelectsAll&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;focused&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;#preventClickSelectsAll&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to get the (no) &lt;code&gt;clickSelectsAll&lt;/code&gt; behaviour.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Before&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;      // Do not suppress the focus border if we are already focused. If we&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      // did, we&apos;d hide the focus border briefly then show it again if the&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      // user has Top Sites disabled, creating a flashing effect.&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;view&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;autoOpen&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;, add:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;     // doubleClickSelectsAll&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;     if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;event&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;detail&lt;/span&gt;&lt;span&gt; ==&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;       this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;select&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;       event&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;preventDefault&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;       break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;     }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;to get the &lt;code&gt;doubleClickSelectsAll&lt;/code&gt; behaviour.&lt;/p&gt;
&lt;p&gt;Note that this will &lt;em&gt;not&lt;/em&gt; put the url into primary selection
upon double click. This can be useful sometimes, if you just
would like to replace the current url with the one currently
in primary selection.
If you would like to put the url into primary selection
upon double click, which completely restores the original
behaviour, change &lt;code&gt;this.select();&lt;/code&gt; to &lt;code&gt;this.inputField.select();&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I have also made a patch (command &lt;code&gt;diff -Naru omni-orig omni-new&lt;/code&gt;). &lt;a href=&quot;/code/firefox-no-clickSelectsAll-fix.patch&quot;&gt;Download the patch&lt;/a&gt; here.&lt;/p&gt;
&lt;p&gt;There is also the search bar to change. The original Superuser answer
suggests this, but as I do not use the search bar, I have not
tried it out, nor do I know what the original behaviour of it was.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;sed&lt;/span&gt;&lt;span&gt; -i&lt;/span&gt;&lt;span&gt; &apos;s/this\._preventClickSelectsAll = this\._textbox\.focused;/this._preventClickSelectsAll = true;/&apos;&lt;/span&gt;&lt;span&gt;  omni/chrome/browser/content/browser/search/searchbar.js&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After editing, we need to re-pack the files:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; omni&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;zip&lt;/span&gt;&lt;span&gt; -0DXqr&lt;/span&gt;&lt;span&gt; ../omni.ja&lt;/span&gt;&lt;span&gt; *&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; -&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And replace the original one:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;cp&lt;/span&gt;&lt;span&gt; -v&lt;/span&gt;&lt;span&gt; omni.ja&lt;/span&gt;&lt;span&gt; /opt/firefox/browser/omni.ja&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You may need to change the ownership of the newly-created archive:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;chown&lt;/span&gt;&lt;span&gt; [U]:[G] /opt/firefox/browser/omni.ja&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;where &lt;code&gt;[U]&lt;/code&gt; and &lt;code&gt;[G]&lt;/code&gt; refers to the owner and group of the original
file (we made a backup at &lt;code&gt;omni.ja.orig&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;To ensure everything takes effect, make a file called &lt;code&gt;.purgecaches&lt;/code&gt;
to make Firefox aware of the changes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;touch&lt;/span&gt;&lt;span&gt; /opt/firefox/browser/.purgecaches&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Okay, from now on, we shall no longer suffer from the &lt;code&gt;clickSelectsAll&lt;/code&gt;
bug.&lt;/p&gt;
&lt;p&gt;Also, you may want to have additional configurations, such as
&lt;a href=&quot;https://www.userchrome.org/megabar-styling-firefox-address-bar.html&quot;&gt;disabling the pop-up list upon clicking address bar&lt;/a&gt;
or &lt;a href=&quot;https://github.com/WesleyBranton/Remove-Firefox-Megabar/blob/master/remove_megabar.css&quot;&gt;gettind rid of the address bar expanding effect&lt;/a&gt;
when clicked upon.&lt;/p&gt;</content></entry><entry><id>https://blog.tusooa.xyz/2018/04/29/short-code/</id><title>短代码(一个马后炮)</title><link rel="alternate" href="https://blog.tusooa.xyz/2018/04/29/short-code/"/><published>2018-04-29T06:58:57.000Z</published><content type="html">&lt;p&gt;没赶上报名截止日期，一直 &lt;code&gt;not invited&lt;/code&gt;。就很难过。&lt;/p&gt;
&lt;p&gt;E 的题目描述是这样的。&lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;#Description&quot;&gt;Description&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;tz学姐做题很忙，有一些简单的问题需要你帮忙解决：给定三个序列A,B,C和一个整数X, 现在需要找到三个数Ai，Bj，Ck，满足Ai+Bj+Ck = X.&lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;#Input&quot;&gt;Input&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;第1行三个整数 L, N, M；&lt;/p&gt;
&lt;p&gt;第2行L个整数代表序列A&lt;/p&gt;
&lt;p&gt;第3行M个整数代表序列B&lt;/p&gt;
&lt;p&gt;第4行N个整数代表序列C&lt;/p&gt;
&lt;p&gt;第5行1个整数S代表有S个X。&lt;/p&gt;
&lt;p&gt;接下来的S行每行一个整数X&lt;/p&gt;
&lt;p&gt;1&amp;lt;=L, N, M&amp;lt;=500, 1&amp;lt;=S&amp;lt;=1000. 所有整数均在32位整数范围内&lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;#Output&quot;&gt;Output&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;对于S个询问计算X对应的公式是否能被满足。 如能满足，输出 &quot;YES&quot;, 否则输出 &quot;NO&quot;。&lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;#Sample-Input&quot;&gt;Sample Input&lt;/a&gt;&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;3 3 3&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;1 2 3&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;1 2 3&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;1 2 3&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;&lt;a href=&quot;#Sample-Output&quot;&gt;Sample Output&lt;/a&gt;&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;NO&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;YES&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;NO&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;&lt;a href=&quot;#喵&quot;&gt;喵&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;我当时给出的代码是这样的。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;using namespace std;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  int&lt;/span&gt;&lt;span&gt; l,m,n;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;l&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;m&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;n;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  int&lt;/span&gt;&lt;span&gt; a[l],b[m],c[n];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;p:a)cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;p;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;p:b)cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;p;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;p:c)cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;p;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  sort&lt;/span&gt;&lt;span&gt;(c,c&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;n);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;n;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; p;cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;p;){&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; q:a)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; r:b)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;binary_search&lt;/span&gt;&lt;span&gt;(c,c&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;n,p&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;q&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;r)) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          cout&lt;/span&gt;&lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span&gt;&quot;YES&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          goto&lt;/span&gt;&lt;span&gt; l;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    cout&lt;/span&gt;&lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span&gt;&quot;NO&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  l:&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;//292&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;由于我不能提交，无法判断它是否超时了。查了一下网上的做法，是把 &lt;code&gt;a&lt;/code&gt; 和 &lt;code&gt;b&lt;/code&gt; 加起来存到另一个数组里，然后对这个新的数组排序查找。&lt;/p&gt;
&lt;p&gt;仔细分析一下就是：&lt;/p&gt;
&lt;p&gt;我的方法，排序用了 &lt;code&gt;O(n*log n)&lt;/code&gt;，查找 &lt;code&gt;O(n**2*log n)&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;另一个做法，排序 &lt;code&gt;O(n**2*log n)&lt;/code&gt;，查找 &lt;code&gt;O(n*log n)&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;看上去好像正好抵消了没什么区别。问题在于查找是&lt;strong&gt;多次&lt;/strong&gt;查找，我们希望每次查找的时间尽量短。&lt;/p&gt;
&lt;p&gt;所以改过的代码是这样的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &amp;lt;algorithm&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;using namespace std;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  int&lt;/span&gt;&lt;span&gt; l,m,n,r&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;l&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;m&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;n;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  int&lt;/span&gt;&lt;span&gt; a[l],b[m],c[n],S[l&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;m];&lt;/span&gt;&lt;span&gt; // GNU 扩展的变长数组&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;p:a)cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;p;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  // range-for 输入第二组数据，同时将输入的数据和第一组的每一个数字相累加，结果存到 `S` 里。&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;p:b) {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;p;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;q:a)S[r&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;q;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;amp;&lt;/span&gt;&lt;span&gt;p:c)cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;p;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  sort&lt;/span&gt;&lt;span&gt;(S,S&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;r);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;n;&lt;/span&gt;&lt;span&gt; // 丢弃个数信息，因为不需要&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; p;cin&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span&gt;p;){&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; q:c)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;binary_search&lt;/span&gt;&lt;span&gt;(S,S&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;r,p&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;q)){&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        puts&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;YES&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        goto&lt;/span&gt;&lt;span&gt; l;&lt;/span&gt;&lt;span&gt; // 直接跳到下次输入，不输出 NO&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    puts&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;NO&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  l:&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;//311&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;排名表上最短是345。&lt;/p&gt;
&lt;p&gt;但是有什么用呢。我又不能提交(以后一定要提前关注一下)。&lt;/p&gt;</content></entry></feed>