A. Knapsack
- 题意:
您有 n ( 1 ≤ n ≤ 200000 ) n (1≤n≤200 000) n(1≤n≤200000) 个物品,第 i i i 个物品的重量为 w i ( 1 ≤ w i ≤ 1 0 9 ) w_i (1≤w_i≤10^9) wi(1≤wi≤109)。同时您还有一个容量为 W ( 1 ≤ W ≤ 1 0 18 ) W (1≤W≤10^{18}) W(1≤W≤1018) 的背包。
我们希望将一些物品加入背包中,使其总重量超过 W W W 的一半,但不超过 W W W 。
如果有,请输出物品的个数以及物品的编号;如果没有,输出 “-1” (不必输出双引号)。
-
思路:贪心,先放大的,从大往小放置,然后判断是否有解。正确性不会证。
-
AC代码:https://codeforces.com/contest/1446/submission/156790105
C. Make Good
-
题意:给你一串数字,让你在其中插入最多3个数字(可以不插入),使得这些数字的总和等于异或的2倍,只要给出任何一种方案即可。
-
思路:这道题有结论。我的思路是,计算序列的异或和以及抵消和,用第一个插入的构造数来调整序列和第一个构造数的异或和以及抵消和,从低位到高位调整,直到异或和大于等于抵消和,然后用后两个相同的构造数来组成剩下的抵消和。(注意原序列异或和是奇数的情况)。因为构造数的上限很大,因此也可以直接构造一个很大的数。
-
AC代码:https://codeforces.com/contest/1270/submission/156795343
A. And Matching
-
题意:
-
思路:关于配对的构造题。首先发现性质:( i & ( n − i − 1 ) = 0 i ~\& ~(n - i - 1) = 0 i & (n−i−1)=0 以及 ( n − 1 ) & k = k (n - 1) ~\& ~k = k (n−1) & k=k )。对于 k ≠ n − 1 k \neq n- 1 k=n−1 的情况,我们总有 n − 1 , k n-1,k n−1,k 配对,剩下的总存在方案使得按位与为 0 。对于 k = = n − 1 k == n- 1 k==n−1 的情况,也能构造出类似的方案。见题解。
-
AC代码:https://codeforces.com/contest/1630/submission/156800033
D. Min Cost String
-
题意:定义一个字符串 s s s 的花费(cost)为满足
s[i]==s[j] && s[i+1]==s[j+1]
的数对 ( i , j ) , i < j (i,j),i<j (i,j),i<j 的数量。现在需要使用从小写字母 a a a 开始的 k k k 种字符,构造一个长度为 n n n 的字符串,且要求花费最小。 -
每个字母看作一个图上的点,问题转化为无向完全图(双向可走,都有自环)的欧拉回路路径。怎么输出 n 个点的完全图的欧拉路径呢?枚举 i , i ∈ [ 2 , n ] i,i∈[2,n] i,i∈[2,n] ,将 i i i 点与 j , j ∈ [ i + 1 , k − 1 ] j,j∈[i + 1, k - 1] j,j∈[i+1,k−1] 之间的路径走一下(抽丝剥茧)。注意拼接时的边界问题。
-
AC代码:https://codeforces.com/contest/1511/submission/156822537
A. Johnny and Contribution
-
题意:
-
思路:本题的 mex 指的是正整数域内的 mex。首先考虑单个点的合法性,单个点合法的充要条件是,当前点的已知 mex 等于计算出来的 mex。然后考虑全局,全局的合法性是递推的。所以判断前一个就行了。(和 【5.10】Codeforces 刷题 的第一题有点像,都是考虑单个合法性和全局合法性)
-
AC代码:https://codeforces.com/contest/1361/submission/156815955