求和為p的倍數的塊的最大數量,我用了比較暴力的做法,好像有dp的做法?
#include usingview codenamespace
std;
typedef
long
long
ll;#define rep(i, a, b) for (register int i = a; i <= b; i++)
intn, p;
intf, ans, flag;
inline
void
solve()
}if(flag)
else
a.push_back(f);
}cout
<< ans <
}int
main()
}
並查集維護塊的數量,每合併乙個塊減去對應產生的貢獻。
#include usingview codenamespace
std;
typedef
long
long
ll;#define rep(i, a, b) for (register int i = a; i <= b; i++)
int mod = 1e9 + 7
;int pre[100010
];int find(int x)
int n, a[100010
];int
u, v;
int cnt1, cnt2, s1[100010], s2[100010
];ll ans;
inline
void
solve()
else
}ans = 1ll * cnt2 * (cnt2 - 1) * (cnt2 - 2) / 6 + 1ll * cnt2 * (cnt2 - 1) * cnt1 / 2
; cout
<< ans % mod <
rep(i,
1, n - 1
)
}int
main()
}
邊權隨機的情況下,最短路的邊數很少?
求出最短路,再依次刪除這條路所有邊,遞迴求解。
複雜度為求最短路的複雜度*最短路邊數的k次方
#include usingview codenamespace
std;
typedef
long
long
ll;#define rep(i, a, b) for (register int i = a; i <= b; i++)
intn, k;
int mp[55][55
], u, v, w;
int d[55], vis[55], f[10][55
];int
ans;
void dfs(int
step)
d[1] = 0
; rep(i,
1, n)
}if (step == 0
)
for (int i = n, j, k; i != 1; i =j)
}inline
void
solve()
ans = 0
; dfs(k);
cout
<< ans <
}int
main()
}
將'*'換成 '(',')'或' ',求最短的,字典序最小的平衡字串。
先將左右括號的個數整相等,再判斷字串合不合法,不合法再成對的改變*號
#include usingview codenamespace
std;
typedef
long
long
ll;#define rep(i, a, b) for (register int i = a; i <= b; i++)
char s[100010
];int cnt1, cnt2, num, sum[100010
];int tmp[100010
], l, r, id;
inline
void
solve()
if (cnt1 >cnt2)
rep(i,
1, cnt1 - cnt2) s[tmp[r--]] = ')'
;
if (cnt1
rep(i,
1, cnt2 - cnt1) s[tmp[l++]] = '('
; num = 0
; rep(i,
0, n - 1
)
s[tmp[l++]] = '('
; s[tmp[r--]] = ')'
; num = 0
; }
}if (num != 0
)
rep(i,
0, n - 1) if (s[i] == '
*') continue
;
else
putchar(s[i]);
puts(
"");
}int
main()
}
2020牛客多校第三場
沒有魚,沒有魚餌 沒有魚,有魚餌 有魚,沒魚餌 有魚,有魚餌 每個只能做其中乙個操作,如果在某個點之前已經拿過魚餌,還沒用,就能拿個魚,如果在某個點有魚,就能拿個魚。現在問最多能拿多少條魚?思路 貪心,如果有魚那肯定拿魚,魚 1,然後就剩0和1操作了,如果遇到1操作,直接拿魚餌,遇到0操作,看有沒有...
hdu多校第三場
題意是將給出的數相加計算出 其中p 的倍數的最大個數。由題意可得,在任意兩個數相加時,其模值必在0 p 1之間,將兩數相加的模值替換掉之前的兩個數字,得到長度減一的效果,用0和1 標記對應模值是否出現,從而代表被處理過的但還沒有達到 p 的倍數的值,直到某次得到的模值為 0 時,再清空之前的標記 代...
2013第三場多校
第三場多校 至今最慘的一場多校。共作出兩題。1008 狀態壓縮優化的搜尋 0 比賽時候直接狀態壓縮dp,結果tle了。沒有算好時間複雜度,第一次交的時候沒有測大資料。應該多想幾種方法,做到一a才行,不然卡題會卡很久。1 後來直接搜尋,從最後乙個狀態開始搜,每次都用乙個回文串,然後搜另乙個的最小步數。...