目录 @description@ @solution@ @accepted code@ @details@ @description@ N 个卡片放在 H*W 的方格图上,第 i 张卡片的权值为 Ai,放在 (Ri, Ci).一个位置可以放置多张卡片. 你可以在每行捡起最多一张卡片,然后在每列捡起最多一张卡片. 求捡起的卡片权值最大和. Constraints 所有值都是整数. 1≤N≤10^5, 1≤H,W≤10^5, 1≤Ai≤10^5, 1≤Ri≤H, 1≤Ci≤W. Input 输入的形…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 请找到满足以下条件的长度为 N 的非负整数序列 A1, A2, ..., AN 的数量. (1)L≤A1+A2+...+AN≤R. (2)将 N 个元素排成非增序列后,第 M 个元素要等于第 M + 1 个元素. 请将答案 mod 10^9 + 7. Constraints 所有数都是整数. 1≤M<N≤3×10^5, 1≤L≤R≤3×10^5. Input 输…
[AtCoder] NIKKEI Programming Contest 2019   本来看见这一场的排名的画风比较正常就来补一下题,但是完全没有发现后两题的AC人数远少于我补的上一份AtCoder. A - Subscribers   首先始终 \(max = \min(A, B)\) ,\(min\) 的话如果 \(A + B \leq N\) ,那么就是 \(0\) ,否则就是 \(A + B - N\) . int n, a, b; int main() { read(n), read…
[AtCoder] Yahoo Programming Contest 2019   很遗憾错过了一场 AtCoder .听说这场是涨分场呢,于是特意来补一下题. A - Anti-Adjacency   显然 \(K \leq \frac{N + 1}2\) int n, k; int main() { #ifdef hzhkk freopen("hkk.in", "r", stdin); #endif read(n), read(k); if (k <=…
容斥原理+状压 Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1940    Accepted Submission(s): 907Special Judge Problem Description In your childhood, do you crazy for collecting the bea…
http://acm.split.hdu.edu.cn/showproblem.php?pid=4336 Card Collector Special Judge Problem Description   In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people i…
Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3001    Accepted Submission(s): 1435Special Judge Problem Description In your childhood, do you crazy for collecting the beautiful…
Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1708 Accepted Submission(s): 780 Special Judge Problem Description In your childhood, do you crazy for collecting the beautiful cards…
Card Collector Problem Description In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that, for example, if you collect all the 108 people in the famous novel Water Margin, you will win an amazing award.  As a…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4336 Card Collector Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) 问题描述 In your childhood, do you crazy for collecting the beautiful cards in the snacks? They said that,…
[HDU4336]Card Collector(Min-Max容斥) 题面 Vjudge 题解 原来似乎写过一种状压的做法,然后空间复杂度很不优秀. 今天来补一种神奇的方法. 给定集合\(S\),设\(max\{S\}\)为\(S\)中的最大值,\(min\{S\}\)为集合\(S\)中的最小值. 那么我们可以得到: \(max\{S\}=\sum_{T\subseteq S}(-1)^{|T|+1}min\{T\}\) 证明的话,大概就是如果你钦定一个最小值,并且它强制出现, 如果枚举所有子集…
[HDU4336]Card Collector (动态规划,数学期望) 题面 Vjudge 题解 设\(f[i]\)表示状态\(i\)到达目标状态的期望 \(f[i]=(\sum f[j]*p[j]+1)/(\sum p[j])\) 直接枚举一下即可 #include<cstdio> int n; float f[1<<20],p[20]; int main() { while(scanf("%d",&n)!=EOF) { for(int i=0;i&l…
Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3407    Accepted Submission(s): 1665Special Judge Problem Description In your childhood, do you crazy for collecting the beautiful…
Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5254    Accepted Submission(s): 2676Special Judge Problem Description In your childhood, do you crazy for collecting the beautiful…
Card Collector(期望+min-max容斥) Card Collector woc居然在毫不知情的情况下写出一个min-max容斥 题意 买一包方便面有几率附赠一张卡,有\(n\)种卡,每种卡出现的概率是\(p_i\),保证\(\Sigma p_i \le 1\),集齐所有种类卡牌期望买多少包方便面? 解法 看次题解前,你必须要理解当只有一种卡,他出现的概率是\(p\),那么我期望购买$\frac 1 p $包方便面就可以获得这种卡. 否则请你右上角,因为博主不会解释... 唯一的解…
题目链接 Card Collector Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2711    Accepted Submission(s): 1277Special Judge Problem Description In your childhood, do you crazy for collecting the beaut…
题目分析在代码注释里. int main() { #if defined LOCAL && !defined DUIPAI ifstream in("main.in"); cin.rdbuf(in.rdbuf()); // ofstream out("main.out"); // cout.rdbuf(out.rdbuf()); #endif int n, q; scan(n, q); vi a(n); scan(a); vl sum(n); sum…
Time limit : 2sec / Memory limit : 256MB Score : 200 points Problem Statement Alice, Bob and Charlie are playing Card Game for Three, as below: At first, each of the three players has a deck consisting of some number of cards. Each card has a letter …
题目链接:https://atcoder.jp/contests/nikkei2019-qual/tasks/nikkei2019_qual_e 题意:给出一个 n 个点 m 条边的无向图,每个点和每条边都有权值,让你删除一些边,使得最终的图中满足条件:一条边存在当且仅当包含该边的连通块的点权值和大于等于该边权值,问最少要移走多少条边. 题解:删边不好做,考虑加边,对于每条边,判断加入是否合法.按边权从小到大排序进行加边,要加入一条边之前,若之前两点不连通,则合并起来变成一个连通块,可以用并查集…
题目链接:https://nikkei2019-qual.contest.atcoder.jp/tasks/nikkei2019_qual_C 题意:给出 n 种食物,Takahashi 吃下获得 ai 快乐值,Aoki 吃下获得 bi 快乐值,两人轮流吃,他们的目标是最大化自己获得的快乐值减去她人获得的快乐值吗,问最后该值是多少. 题解:易知 Takahashi 要最大化答案而 Aoki 要最小化答案,考虑全部食物由 Aoki 吃下,则ans = -(b1 + b2 + .... + bn),…
C 签到题,f[i][0/1]表示以i结尾最后一个为白/黑的最小值,转移显然. #include<bits/stdc++.h> using namespace std; ; ]; char s[N]; int main() { scanf("%d",&n); scanf(); ;i<=n;i++) if(s[i]=='.') { f[i][]=f[i-][]; f[i][]=min(f[i-][],f[i-][])+; } else{ f[i][]=f[i-]…
题目链接:Weights on Vertices and Edges 题目大意:有一个\(n\)个点\(m\)条边的无向图,点有点权,边有边权,问至少删去多少条边使得对于剩下的每一条边,它所在的联通块的点权值和大于等于该边的边权 其实是蛮简单的一道题目,为什么当时就自闭了呢... 正向删边明显不靠谱,于是我们考虑反向加边,答案就是\(m-\)加入的边数 我们按照边权排序,使用并查集维护点权值和,同时记录一个\(cnt\)数组表示当前存在于该联通块内但未加入答案的边数 如果说当前联通块的点权值和大…
link 题面真简洁 qaq C Stones 最终一定是连续一段 . 加上连续一段 # .直接枚举断点记录前缀和统计即可. #include<bits/stdc++.h> #define rep(i,x,y) for (int i=(x);i<=(y);i++) using namespace std; ; int n,cnt0[N],cnt1[N],ans; char s[N]; int main(){ scanf(); rep (i,,n) cnt0[i]+=s[i]=='#',c…
题意: 给出一个多项式,问有多少个质数\(p\)使得\(p\;|\;f(x)\),不管\(x\)取何值 思路: 首先所有系数的\(gcd\)的质因子都是可以的. 再考虑一个结论,如果在\(\bmod p\)意义下,多项式中存在\((x^p - x)\)这个因式,那么这个质数\(p\)也是可以的 显然\(p \leq n\),那么我们只要枚举每个\(\leq n\)的质数,做模\(p\)意义下的多项式除法,判断余数是否为\(0\)即可. 证明: 充分性:考虑\(p\;|\;f(x)\),即\(f(…
题意: 有\(n\)个石头,每个石头有权值,可以给它们染'R', 'G', 'B'三种颜色,如下定义一种染色方案为合法方案: 所有石头都染上了一种颜色 令\(R, G, B\)为染了'R', 染了'G', 染了'B'的所有石头的权值和,存在一个三角形的三变为\(R, G, B\) 求合法方案数模\(998244353\) 思路: 考虑总方案数为\(3^n\),我们考虑怎么求出不合法的方案数.令\(dp[i][j]\)表示到第\(i\)个石头,两条短边和为\(j\)的方案数 但是我们注意到,如果\…
传送门 \(C\ Stones\) 最后肯定形如左边一段白+右边一段黑,枚举一下中间的断点,预处理一下前缀和就可以了 int main(){ // freopen("testdata.in","r",stdin); n=read(),read(s),res=0x3f3f3f3f; fp(i,1,n){ sum[i][0]=sum[i-1][0],sum[i][1]=sum[i-1][1]; ++sum[i][s[i]=='#']; } fp(i,0,n)cmin(r…
A-C 直接放代码吧. A int n,k; int main() { n=read();k=read(); puts(k<=(n+1)/2?"YES":"NO"); return 0; } B int d[N];pair<int,int>s[10]; int main() { for(int i=1,u,v;i<=3;i++){ u=read();v=read(); s[i].first=u;s[i].second=v; d[u]++;d[…
一开始有n个杯子,每个杯子里有一些豆子,两个人轮流操作,每次只能将一个豆子移动到其所在杯子之前的某个杯子里,不过可以移动到的范围只有一段区间.问你是否先手必胜. 一个杯子里的豆子全都等价的,因为sg函数是异或起来的值,所以一个杯子里如果有偶数个豆子,就没有意义. 用sg(i)表示i杯子中的豆子的sg值,sg(i)就是其所能移动到的那段杯子的区间的sg值的mex(未出现的最小非负整数).可以用线段树去做.是经典问题. 由于每次看似是后缀询问,实则是全局询问,故而主席树完全是多余的. 回顾一下区间m…
这份代码可以作为找割边的模板.割边分割出来的部分是无向图的 边-双连通分量. 平面上2*n+1个点,在同一横坐标上的点之间可以任意两两匹配.同一纵坐标上的点之间也可以.问你对于所有的点i,输出i被移除之后,剩余的点能否完美匹配. 把x坐标当一列点,y坐标当一列点,原本的点当做边,建出来一个二分图. 一个连通块可以完美匹配,当且仅当其中边数为偶数.必须所有连通块的边数都是偶数,整个图才可以完美匹配. 考虑移除一个点,如果它不是割边,那么仅仅会让其所在连通块大小-1.如果其是割边,那么将其所在连通块…
题意: 给定一个H行W列的矩阵,在矩阵的格点上放带权值的卡片(一个点上能放多张). 现在从每行每列各拿走一张卡片(没有可以不拿),求可以拿到的最大权值. 卡片数N<=1e5,H,W<=1e5 思路: 显然可以构造成一个最大费用流模型:每张卡片到它对应的行列各有一条费用0,容量1的边:源点到每张卡片有一条费用为卡片权值,容量1的边:每个行列到汇点有一条费用0,容量1的边.但是边数有5e5,应该会超时吧? 观察这个图发现除去源点和汇点是一张二分图,想到是否可以利用二分图的性质简化问题. 手动模拟一…