結果
問題 | No.382 シャイな人たち (2) |
ユーザー | convexineq |
提出日時 | 2021-01-10 01:42:00 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,454 bytes |
コンパイル時間 | 279 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 150,268 KB |
最終ジャッジ日時 | 2024-11-19 03:07:47 |
合計ジャッジ時間 | 193,368 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | TLE | - |
testcase_01 | TLE | - |
testcase_02 | TLE | - |
testcase_03 | TLE | - |
testcase_04 | TLE | - |
testcase_05 | TLE | - |
testcase_06 | TLE | - |
testcase_07 | TLE | - |
testcase_08 | TLE | - |
testcase_09 | TLE | - |
testcase_10 | TLE | - |
testcase_11 | TLE | - |
testcase_12 | TLE | - |
testcase_13 | TLE | - |
testcase_14 | TLE | - |
testcase_15 | TLE | - |
testcase_16 | TLE | - |
testcase_17 | TLE | - |
testcase_18 | TLE | - |
testcase_19 | TLE | - |
testcase_20 | WA | - |
ソースコード
def popcountll(i): i -= (i >> 1) & 0x5555555555555555 i = (i & 0x3333333333333333) + ((i >> 2) & 0x3333333333333333) i = (i & 0x0F0F0F0F0F0F0F0F) + ((i>>4) & 0x0F0F0F0F0F0F0F0F) i = (i>>32) + (i & 0xFFFFFFFF) return ((i * 0x1010101) & 0xffffffff) >> 24 def popcount128(i): return popcountll(i>>62) + popcountll(i&0x3FFFFFFFFFFFFFFF) def maximum_clique_BK(G): def dfs(R, P, cnt): nonlocal ans,val if popcount(P)+cnt <= val: return # 枝刈り if P==0: if val < cnt: val = cnt ans = R return PP = P&~g[(P&-P).bit_length() - 1] while PP: v = PP&-PP vv = v.bit_length() - 1 dfs(R|v, P&g[vv], cnt+1) P ^= v PP ^= v n = len(G) #assert n <= 63 N = 1<<n g = [0]*n for a in range(n): for b in range(n): if G[a][b] == 0 and a != b: g[a] ^= 1<<b ans = val = 0 popcount = popcountll if n <= 64 else popcount128 dfs(R=0, P=N-1, cnt=0) return ans,val s = int(input()) MOD = 1000003 s = s*12345%MOD n = s%120+2 g = [[0]*n for _ in range(n)] p = s = s*12345%MOD for i in range(n): for j in range(i+1,n): s = s*12345%MOD if s >= p: g[i][j] = g[j][i] = 1 ans, val = maximum_clique_BK(g) print(val+1) ans = [i+1 for i,c in enumerate(bin(ans)[2:][::-1]) if c == "1"] print(*ans)