题目 你有\(n\)个士兵,需要将他们分成\(m\)组,每组可以为0: 现在这些士兵要去攻打\(m\)个敌人,每个敌人的生命值为\(hp_i\) : 一轮游戏中一组士兵选定一个攻打的敌人,敌人生命值-=这组的人数: 胜利的判定是所有敌人的生命值为非正的: 输出胜利的最小轮数,可以达到最小轮数的分配方式,并输出每轮的策略: \(1 \le m \le n \le 10^6 \ , \ 1 \le \sum hp_i \le 10^6\) ; 题解 答案的下界是\(\lceil \frac{\sum…
题目 给出 \(n\) 个三元组\(\{ a_i,b_i,c_i \}\)和\(x,y,z\): 将每个三元组扩展成(\(x\)个\(a_i\),\(y\)个\(b_i\),\(z\)个\(c_i\)): 问从\(n\)组里面每组选一个数,这\(n\)个数异或值为x 的方案数​\(mod \ 998244353\)是多少: \(1 \le n \le 10^5 \ , \ 1 \le k \le 17 \ , \ 0 \le x,y,z \le 10^9 \ , 0 \le \ a_i,b_i,…
题目 描述 \(n\) 个点的树,每条边有一个边权: 对于一个 \(X\) ,求删去一些边后使得每个点的度数 \(d_i\) 均不超过 \(X\) 的最小代价: 你需要依次输出 \(X=0 \to n-1\) 的答案: 范围 $ 1 \le n \le 250000 $ 题解 考虑对于一个\(X\)怎么做,设 $ dp_{i,0/1} $ 表示 $ u $ 节点的子树,$ i $连向父亲的边是否被删且度数不超过 $ X $ 的最小代价.转移时将 \(dp_{v,1} + w(u,v) - dp_…
这个题大概就是每一个位置都有一个能填字符的限制(一个点集),给出已有的$n$个字符,问能填出的最小字典序的字符串. 总体思路是贪心,每一位尽量选最小的字符. 关键在于判断在某位选了一个字符后,接下来的位置能否满足限制. 考虑怎么判断有解,这里有一种网络流的思路: 有$6$个点,代表了$a - f$$6$个字符,有源点向这些点连边,流量为该字符的个数. 另有$2^{6}$个点,代表了各个点集,这些点向汇点连边,流量为该点集在所有限制中出现的次数. 如果某个点在一个点集中,则由该点向该点集连流量为$…
B. Lost Number[CF交互题 暴力] This is an interactive problem. Remember to flush your output while communicating with the testing program. You may use fflush(stdout) in C++, system.out.flush() in Java, stdout.flush() in Python or flush(output) in Pascal to…
E. Colored Balls time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output There are n boxes with colored balls on the table. Colors are numbered from 1 to n. i-th box contains ai balls, all of which…
time limit per test 3 seconds memory limit per test 512 megabytes input standard input output standard output You are given an undirected graph with weighted edges. The length of some path between two vertices is the bitwise xor of weights of all edg…
  计蒜客)翻硬币 //暴力匹配 #include<cstdio> #include<cstring> #define CLR(a, b) memset((a), (b), sizeof((a))) using namespace std; int n, m, t; int main() { int i, j, x; scanf("%d", &t); while(t--) { scanf("%d%d", &n, &m)…
比赛传送门 再次改下写博客的格式,以锻炼自己码字能力 A. Suits 题意:有四种材料,第一套西装需要 \(a\).\(d\) 各一件,卖 \(e\) 块:第二套西装需要 \(b\).\(c\).\(d\) 各一件,卖 \(f\) 块.问,怎么做套装卖的前最多. 题解:[贪心]---- 先选比较贵的那一套,因为 \(d\) 套都要用上则以它为基准,再用剩余材料加第二套的总价钱 // https://codeforces.com/contest/1271/problem/A #include<i…
[题目链接]:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2133 [题意] [题解] 考虑每一个二进制数的最高位->第i位; 肯定是1(这里不讨论0的情况) 然后对于其余n-1个二进制数; 如果它们在第i位和它一样->也是1的话,那么异或结果是0 那么不管第i位后面的位怎么变;它肯定是变小的->我们要求的 如果它们在第i为和它不一样->即为0,那么异或结果是1; 则它肯定是变大了; 综上 我们只要确定每个数的最高位所在的位置i…