問題タブ [prefix-sum]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 前置和行列に関連する問題で、1 つの for ループが 2 つの for ループよりも遅いのはなぜですか?
私は最近、IOI 2010 の 1 日目のタスク 3 「生活の質」から直接取得して翻訳したこの問題を実行していて、奇妙な現象に遭遇しました。
私は 0-1 行列を設定し、それを使用して 1 つのループで前置合計行列を計算しました。
そして、4回のテストでTLE(制限時間超過)になりました(制限時間は2.0秒です)。2 つの for ループを別々に使用している場合:
完全なACを取得しました(受け入れられました)。
ここの4枚の写真からわかるように:
TLE の結果、画像 1 : https://i.stack.imgur.com/9o5C2.png
TLE の結果、画像 2 : https://i.stack.imgur.com/TJwX5.png
AC 結果、写真 1 : https://i.stack.imgur.com/1fo2H.png
AC 結果、画像 2 : https://i.stack.imgur.com/CSsZ2.png
2 つの for ループのコードは一般に (受け入れられたテスト ケースでも) 少し速く実行され、単一の for ループの方が速いはずであるという私の論理とは対照的です。なぜこれが起こったのですか?
完全なコード (AC) : https://pastebin.com/c7at11Hausing namespace std;
(これは競争力のあるプログラミング コンテストであるため、意味のないビットや のようなものはすべて無視してください)。
- 注意 : ジャッジ サーバーlqdoj.edu.vnは、グローバルな競技プログラミング コンテスト プラットフォームであるdmoj.ca上に構築されています。