
构造
行走天涯的豆沙包
人生天地间,忽如远行客。
展开
-
构造——ZOJ - 4033
题解: 找出无解的情况之后,4个或者3个分成一组就可以了。 #include <bits/stdc++.h> using namespace std; const int N=1e6+10; char a[N]; int res[N]; void solve() { int n; scanf("%d",&n); scanf("%s",a+1); if(n%4!=0&&n%4!=3){ puts("-1"); retu原创 2020-10-06 20:03:58 · 234 阅读 · 0 评论 -
构造+数论+打表——Koishi Loves Construction
题解: 首先对于X=1和X=2都dfs一下打表找规律,X=1的时候规律很好找只是需要注意一下,n不能为奇数,否则前n-1项和一定是n的倍数那么模n的意义下一定会出现至少两个相同的数。然后1的时候是可以的。 X=2的时候也是打表可以发现,sumi≡i(modn)sum_i ≡i(mod n)sumi≡i(modn)。所以知道要处理前缀积的逆元。然后n必须为质数否则n∣(n−1)!n|(n-1)!n∣(n−1)!,特判一下1和4。 #include <bits/stdc++.h> #define原创 2020-08-14 15:52:10 · 157 阅读 · 0 评论 -
构造——[POI2011]LIZ-Lollipop
题解: 思维+构造+… 言归正传,这道题求一个价值为k的区间,很容易想到要使用前缀和的方式,当我们值刚等于这个值的时候直接输出就好了,否则我们就需要进行移动区间端点,我们可以知道如果相邻区间相差为1的话那么我们可以很容易平移几次端点就得到,所以我们分析题目知道我们可能产生这样些二元组(1,1),(1,2),(2,2),(2,1)。所以只有(2,2)是相差为2的,所以我们记录当前位置有多少个连续的2,然后分情况讨论。构造sum-1的情况。这样的话我们就可以预处理出所以sum的区间了。 #include <原创 2020-08-13 23:19:11 · 157 阅读 · 0 评论