10 2017 档案
摘要:一道数论好题,知识点涉及扩展欧几里得,快速幂,逆元,二项式定理,模运算,组合数等。 (~~别问为啥打了快速幂不用费马小求逆元...我就练习下扩欧~~) (~~数据就应该再加大些卡掉n^2递推求组合数的~~)
阅读全文
摘要:"原题链接" 此题求二分图的最小点覆盖,数值上等于该二分图的最大匹配。得知此结论可以将图染色,建有向图,然后跑匈牙利/网络流,如下。然而... 还有DP解法,待填。 11.02UPD "树形DP解法"
阅读全文
摘要:NOIP2012 疫情控制 题解(LuoguP1084) 不难发现,如果一个点向上移动一定能控制更多的点,所以可以二分时间,判断是否可行。 但根节点不能不能控制,存在以当前时间可以走到根节点的点,可使向下走到深度为2的节点控制 其他点,此时又可以进行另一个贪心,优先选择走到根节点还能再走的时间小的去
阅读全文
摘要:Sorting a Three Valued Sequence IOI'96 Day 2 Sorting is one of the most frequently performed computational tasks. Consider the special sorting problem
阅读全文
摘要:Arithmetic Progressions USACO1.4 An arithmetic progression is a sequence of the form a, a+b, a+2b, ..., a+nb where n=0,1,2,3,... . For this problem, a
阅读全文
摘要:"原题链接" 经典贪心,转化为问题为,对于所有的区间,求最小的点数能使每个区间都至少有一个点。 cpp include include include include include include using namespace std; const int MAXN=100000+5; cons
阅读全文
摘要:拦截导弹 题意:求最长不上升子序列长度;求一个序列最少分成几个非增子序。 第一问易求,已知序列a,令f[i]为a前i个元素的最长非增子序的长度,则有 f[i]=max{f[i],f[j]+1} (1=h[i]). LIS另有nlogn做法,设g[i]为长度为i的最长不上升结尾最小是什么,二分查找更新
阅读全文
摘要:一开始是不会的,不知道如何处理相等的情况,瞎贪心一直WA。 于是就递归处理是让相等的平局还是输掉,如下,拿到了50分。 cpp int solve(int a,int b,int i,int l,int r) { int ans=0; for(;ib[l]) ans+=2,++l; else if(
阅读全文
摘要:"题目链接" 考虑正序去除点去掉其所有连边十分复杂,可以倒序离线处理,每次新建一个点,连接其连边,用并查集统计联通块的个数。 附代码 cpp include include include using namespace std; const int MAXN=400000+5; int ans[M
阅读全文