Brechen Sie in 1 Minute durch. Schreiben Sie einfach.
N, A, B = map(int, input().split())
print(N - A + B)
Brechen Sie in 3 Minuten durch. Schreiben Sie einfach.
N, *x = map(int, open(0).read().split())
print(sum(abs(a) for a in x))
print(sum(a * a for a in x) ** 0.5)
print(max(abs(a) for a in x))
Brechen Sie in 3 Minuten durch. Schreiben Sie einfach. Wenn Sie wissen, dass Sie sich der Quadratwurzel von N zuwenden können, sollte es nicht schwierig sein.
N = int(input())
result = set()
for i in range(1, int(N ** 0.5) + 1):
if N % i == 0:
result.add(i)
result.add(N // i)
print(*sorted(result), sep='\n')
In 14 Minuten durchbrechen. Es dauert zu lange. Es ist klarer als beim Betrachten des Feuers, dass ein naiver Code, der gehorsam simuliert, zu TLE führt, wenn B klein ist. Wenn es darum geht, ist "* A" besser als "+ B". Gehen Sie zu dem Schluss, dass Sie nicht einfach "* A" ausführen sollten, während das Inkrement klein ist, und addieren Sie den Rest. Da A mindestens 2 ist, können Sie einfach * O * simulieren (log N). </ i>) Es gibt also kein Problem.
X, Y, A, B = map(int, input().split())
result = 0
while X * A < Y and X * A < X + B:
X *= A
result += 1
result += ((Y - 1) - X) // B
print(result)
Nachtrag: Ich dachte, dass es viele Menschen gibt, die wegen des D-Problems bestraft wurden, aber wenn ich es schreibe, ohne es zu erfinden, liegt es daran, dass "X * A" sogar mit int64 überläuft. Ich verstehe.
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
defer flush()
X := readInt()
Y := readInt()
A := readInt()
B := readInt()
result := 0
for X <= (Y-1)/A && X*A < X+B {
X *= A
result++
}
result += ((Y - 1) - X) / B
println(result)
}
const (
ioBufferSize = 1 * 1024 * 1024 // 1 MB
)
var stdinScanner = func() *bufio.Scanner {
result := bufio.NewScanner(os.Stdin)
result.Buffer(make([]byte, ioBufferSize), ioBufferSize)
result.Split(bufio.ScanWords)
return result
}()
func readString() string {
stdinScanner.Scan()
return stdinScanner.Text()
}
func readInt() int {
result, err := strconv.Atoi(readString())
if err != nil {
panic(err)
}
return result
}
var stdoutWriter = bufio.NewWriter(os.Stdout)
func flush() {
stdoutWriter.Flush()
}
func println(args ...interface{}) (int, error) {
return fmt.Fprintln(stdoutWriter, args...)
}
ABC180E - Traveling Salesman among Aerial Cities
Es brach in 39,5 Minuten durch. Ich löste es, indem ich den Code des Ameisenbuchs kopierte. Ich frage mich, ob ich die gelbe Aufführung bekommen könnte, wenn es kopiert würde, Scheiße.
#include <bits/stdc++.h>
#define rep(i, a) for (int i = (int)0; i < (int)a; ++i)
using ll = long long;
using namespace std;
#define MAX_N 17
#define INF 2147483647
ll N;
ll dp[1 << MAX_N][MAX_N];
ll d[MAX_N][MAX_N];
void solve() {
rep(i, 1 << N) rep(j, N) dp[i][j] = INF;
dp[(1 << N) - 1][0] = 0;
for (int S = (1 << N) - 2; S >= 0; S--) {
for (int v = 0; v < N; v++) {
for (int u = 0; u < N; u++) {
dp[S][v] = min(dp[S][v], dp[S | 1 << u][u] + d[v][u]);
}
}
}
cout << dp[0][0] << endl;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N;
vector<ll> X(N), Y(N), Z(N);
rep(i, N) {
cin >> X[i] >> Y[i] >> Z[i];
}
rep(i, N) {
rep(j, N) {
d[i][j] = abs(X[i] - X[j]) + abs(Y[i] - Y[j]) + max(0ll, Z[i] - Z[j]);
}
}
solve();
return 0;
}
Recommended Posts