
思维
gongyuandaye
不要再问我会不会写可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫比乌斯反演莫队带花舞蹈链并查集树状数组套主席树预处理动态DP分治FFT求多项式逆元对数函数的指数函数用可持久化并查集合并最小费用循环流上插头DP了。
展开
-
HDU 6804 Contest of Rope Pulling (乱搞+01背包)
题意: 题解:乱搞+01背包 原题意大概就是n个人里选和m个人里选,两者w和要相等,我们对m里的w取反即可。 如果直接按照输入dp的话,w一直为正累加会有1e6,值域太大了,我们用random_shuffle随机化一下位置,这样大概可以保证前面的w和在0附近上下浮动了。w为负,向右平移即可。这边取了40000,随机两次过了。 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<原创 2020-07-30 23:18:33 · 765 阅读 · 2 评论 -
2020牛客多校六 G. Grid Coloring (思维)
题意:给n*n的网格图的边染k种颜色,每种色染的边数相同,构造不存在同色环及整行整列不同色的方案。 题解:思维 n=1,k=1,2 * (n + 1) * n % k != 0 这三种情况肯定是不行的。 接下来考虑两种情况。 ①n % k != 0 这个直接一行一行颜色从1到k顺着涂就行了,再接到列上。 ②n % k = 0 如果按照上述方法涂,会出现同色环,我们这样涂: 假如n=3,k=3,对于行来说 1 2 3 2 3 1 3 1 2 即每次开头涂的颜色往后挪一位。 #define _CRT_SECUR原创 2020-07-27 21:48:30 · 252 阅读 · 0 评论 -
2020牛客多校五 D. Drop Voicing (环上LIS)
题意:给定1-n的序列,可以进行两种操作,1、将倒数第二个数放到开头;2、将第一个数放到最后,若干次连续操作1被视为一段,问将其变为升序,需要的最少段数。 题解:环上LIS 若干的操作2 + 若干操作1,一定能将某个数变回正确的位置。 我们只要在环上求n遍lis,哪个lis最长,说明不在正确位置的数最少,所需要的操作(2+1)也就最少。 所以答案就是n−max(lis)n-max(lis)n−max(lis)。 #define _CRT_SECURE_NO_WARNINGS #include<iost原创 2020-07-25 21:35:47 · 290 阅读 · 0 评论 -
2020牛客多校二 G. Greater and Greater (双指针+bitset优化)
题意:给定长度为n的序列a,和长度为m的序列b,问有序列a中有多少个长度为m的连续子区间s,满足s(i)>=b(i)。 题解:双指针+bitset优化 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #include<queue> #i原创 2020-07-20 11:45:02 · 188 阅读 · 0 评论 -
CodeForces 1372C Omkar and Baseball (思维)
题意:给你一段长为n的序列(只包含1-n),每次操作选定一段连续子序列,并将子序列上所有元素打乱,即不在他之前所在的位置,求最少几次操作使得第i位元素是i。 题解:思维 分三种情况: ①对于正常序列,答案为0。 ②对于首尾元素正确,只是中间的元素都不在正确的位置上时,答案为1。 ③除以上情况,答案为2。因为只要我们每次操作全段序列,将他们都离开正确的位置(这是一定可行的),再操作一次使得回到各自正确位置即可。 #define _CRT_SECURE_NO_WARNINGS #include<iostr原创 2020-07-13 16:21:23 · 212 阅读 · 0 评论 -
CodeForces 1372A Omkar and Completion (水)
题意:给出一个n,输出n个正数,范围在【1,1000】内,且任意两数相加不等于第三个数。 题解:水题 水文章专用题 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #include<queue> #include<stack> #原创 2020-07-13 11:32:42 · 179 阅读 · 0 评论 -
CodeForces 1038D Slime (思维)
题意:有一序列,每两个元素可以相互合并成一个元素,x-y或者y-x。求最后留下的一个元素最大。 题解:思维 有正有负的时候,必为绝对值之和。 全为正:绝对值和 - 2 * min。 全为负:绝对值和 + 2 * max。 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cstdio> #include...原创 2020-04-10 21:13:44 · 151 阅读 · 0 评论