思维
酷酷的Herio
这个作者很懒,什么都没留下…
展开
-
一起来做题~欢乐赛1 A(思维)
一起来做题~欢乐赛1 A(思维)画一下图可知,转换题意即求两个蓝色之间的最大红色数量。注意先添加两个哨兵点,最左边和最右边。code// Problem: 学 群 代 主 变 A 能 一// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest/16416/A// Memory Limit: 524288 MB// Time Limit: 2000 ms// Date: 2021-07-02 13:43:01// --原创 2021-07-02 14:16:07 · 225 阅读 · 0 评论 -
类约瑟夫环问题
类约瑟夫环问题问题描述聚会游戏:N 个人聚餐,编号从 1 到 N。从编号为 1 的人开始报数,报到M 的人喝一杯酒。下一个人再从 1 开始报数,如此循环往复。其中有一人非常讨厌喝酒,问他有没有机会不喝酒?他该如何做,为什么?解答 有机会。如果 NNN 与 MMM 的最大公约数不为 1,就有机会。假设 KKK 为 NNN 和 MMM 的最小公倍数(lcm)(lcm)(lcm),那么喝酒次数 KM\dfrac{K}{M}MK 次,会回到原点。因为NM=gcd×lcm=gcd×kNM=gcd\t原创 2021-06-21 16:31:45 · 482 阅读 · 0 评论 -
兰州大学I ★★平形四边行★★- 容斥&暴力
兰州大学I ★★平形四边行★★- 容斥&暴力平行四边形判断定理理解错了题意。。这里的根据平行四边形判定定理:可知该“平行四边行” 就是平行四边形,而且对边可以重合或者共线。但是有一个性质就是:对边连线的中点是重合。而本题的点坐标范围是[−1000,1000][-1000,1000][−1000,1000]mid(xx,yy):mid(xx,yy):mid(xx,yy):2xx∈[−2000,2000],2yy∈[−2000,2000]2xx\in[-2000,2000],2yy\in[原创 2021-05-30 23:24:13 · 456 阅读 · 2 评论 -
P3915 树的分解(思维)
P3915 树的分解(思维)1.首先判断k∣nk|nk∣n2.然后dfs搜到某个子树size=ksize=ksize=k就将cnt+1,size=0cnt+1,size=0cnt+1,size=0code// Problem: P3915 树的分解// Contest: Luogu// URL: https://www.luogu.com.cn/problem/P3915// Memory Limit: 125 MB// Time Limit: 1000 ms// Date: 2021-0原创 2021-05-10 19:22:04 · 389 阅读 · 0 评论 -
P5514 [MtOI2019]永夜的报应(贪心)
P5514 [MtOI2019]永夜的报应(贪心)思路因为对于两个正整数a,ba,ba,ba⊕b≤a+ba\oplus b\le a+ba⊕b≤a+b所以当两个分组的权值求和肯定没有两个分组异或后的和更小。所以最后把所有的数异或起来是最优的。时间复杂度:O(n)O(n)O(n)// Problem: P5514 [MtOI2019]永夜的报应// Contest: Luogu// URL: https://www.luogu.com.cn/problem/P5514// Memory L原创 2021-05-10 15:05:16 · 519 阅读 · 2 评论 -
HDU 6048(逆序对&思维)
HDU 6048(逆序对&思维)考虑白块的移动对原序列逆序对的影响,白块左右移动不会影响逆序对的奇偶性,又因为白块最初和最后都是在右下角,说明白块上下移动的次数相等,所以上下移动也不会改变序列逆序对奇偶性,所以只需看原序列是否与目标序列奇偶性是否相等即可。我们可以一轮一轮的计算逆序对个数。tot=n×m−1tot=n\times m-1tot=n×m−1第一轮要选:tot−1p+1\dfrac{tot-1}{p}+1ptot−1+1,这里加1是包含0×p+10\times p+10×p+1原创 2021-04-10 22:04:25 · 331 阅读 · 2 评论 -
11. 盛最多水的容器(双指针&木桶原理)
11. 盛最多水的容器(双指针&木桶原理)最开始指针指向[0,n−1][0,n-1][0,n−1],每次移动左右端点较小的,因为长度变小,只有最小值变大才有可能更优。codeclass Solution {public: int maxArea(vector<int>& a) { int n=a.size(),l=0,r=n-1; int ans=0; while(l<r){ ans=m原创 2021-03-15 11:01:35 · 254 阅读 · 0 评论 -
C. Going Home(鸽巢原理&暴力)
C. Going Home(鸽巢原理&暴力)题意 给定nnn个数,求满足ax+ay=az+aw,(x,y,z,wa_x+a_y=a_z+a_w,(x,y,z,wax+ay=az+aw,(x,y,z,w不相同)的一组。思路鸽巢原理,因为ax+ay=az+aw∈[1,5×106]a_x+a_y=a_z+a_w\in[1,5\times 10^6]ax+ay=az+aw∈[1,5×106]而某一个和出现四次必有解,所以最多枚举2×1072\times 10^72×107次。原创 2021-03-14 19:39:33 · 500 阅读 · 2 评论 -
AtCoder Beginner Contest 169(题解)
AtCoder Beginner Contest 169(题解)E - Count Median结论题给定nnn个xi∈[ai,bi]x_i\in[a_i,b_i]xi∈[ai,bi],求中位数的个数。定义:k=⌊n2⌋k=\lfloor\dfrac{n}{2}\rfloork=⌊2n⌋,对a,ba,ba,b进行排序后,为ak+1a_{k+1}ak+1为aia_iai的中位数,bk+1b_{k+1}bk+1为bib_ibi的中位数。1.nnn为奇数,则范围是[ak+1,bk+1][原创 2021-03-12 21:57:19 · 299 阅读 · 0 评论 -
E Early Orders(单调栈)
E Early Orders(单调栈)题意 给定nnn个在[1,k][1,k][1,k]范围的数,求满足1−k1-k1−k排列的最小字典序子序列(保证有答案)思路 考虑维护用单调栈的思想维护答案数组,当遍历到第iii个元素xxx时,若当前栈顶元素stop>xs_{top}>xstop>x且从[i+1,n][i+1,n][i+1,n]还存在xxx,则栈顶元素弹出,因为x,stopx,s_{top}x,stop比stop,xs_{top},xstop,x的字典序更小。直原创 2021-03-07 17:56:09 · 336 阅读 · 0 评论 -
灯泡开关问题
灯泡开关问题995. K 连续位的最小翻转次数每个位置作为翻转的起始位置最多一次,因为翻转两次等于没有翻转,且翻转与顺序没有关系,所以可以从左往右翻转,因为每次固定翻kkk个,可以利用差分实现区间加来判断该位置是否翻转过。319. 灯泡开关每个位置会被 因数给翻转 一次,所以考虑因数 的奇偶性即可,完全平方数是奇数,其他都是偶数,因为两两成对。672. 灯泡开关 Ⅱ实际上只取决于前三个灯,然后mmm最多枚举444,因为大于444都可以归为444。然后特判。1375. 灯泡开关 III原创 2021-02-18 12:44:50 · 455 阅读 · 1 评论 -
F - GCD or MIN(思维&gcd)
F - GCD or MIN(思维&gcd)题意求nnn个数通过gcd(x,y)gcd(x,y)gcd(x,y)或者min(x,y)min(x,y)min(x,y)的操作每次合并一个数,最终得到不同的值个数。思路考虑最后的值是什么,显然必须小于等于min{ai}min\{a_i\}min{ai},因为最小的数被两个操作都不会使答案递增,显然最小的数是一种答案,因为一直取minminmin即可,接下来只需考虑答案是否可能通过gcdgcdgcd最后得到,可以注意到答案必须是某个aia_ia原创 2021-02-06 23:48:56 · 581 阅读 · 0 评论 -
E - Rotate and Flip (思维)
E - Rotate and Flip (思维)考试的时候,维护的东西维护错了。正解应该是维护,x,yx,yx,y的符号和,x,yx,yx,y对应要加的数,还有x,yx,yx,y是否交换即可。然后模拟就行了。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;#define mst(a,b) memset原创 2021-01-24 15:00:22 · 380 阅读 · 0 评论 -
5646. 需要教语言的最少人数(暴力&思维)
5646. 需要教语言的最少人数 (暴力&思维)思路:暴力+思维。已经可以沟通的边不用管,另剩下不能沟通的边组成的人的集合为SSS。然后因为这些人只能通过加一门语言实现沟通,所以只需枚举每门语言对应的需要学的人数,然后取最小值即可。class Solution {public: int minimumTeachings(int n, vector<vector<int>>& lg, vector<vector<int>>&am原创 2021-01-24 12:37:34 · 270 阅读 · 0 评论 -
P7108 移花接木(分类讨论&思维)
P7108 移花接木(分类讨论&思维)题意给定一棵无限高度的满aaa叉树。给定两个操作。1.删除一个结点及其子树。2.将一个结点及其子树移到另一个结点。求将满aaa叉树变成高度为hhh的满bbb叉树的最小操作数。思路分类讨论。1.当a>ba>ba>b时,显然我们只需用操作1。对于第一层需要删a−ba-ba−b次,第二层需要删(a−b)b(a-b)b(a−b)b次,依次类推,到第111到第hhh层共需删∑i=1h(a−b)bi−1\sum\limits_{i=1原创 2021-01-21 15:28:53 · 301 阅读 · 0 评论 -
The Pilots Brothers‘ refrigerator (DFS&思维)
The Pilots Brothers’ refrigerator (DFS&思维)思路1:与POJ−1753POJ-1753POJ−1753类似,位运算dfsdfsdfs搜,不过容易超时。#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<vector>using namespace std;typedef long lo原创 2020-10-19 13:40:21 · 477 阅读 · 1 评论 -
D. Unshuffling a Deck (构造)
D. Unshuffling a Deck (构造)思路:构造。考虑每次操作都对一个数排到对应的位置,这样最多操作nnn次。当nnn为偶数时,按照n,1,n−1,2…n,1,n-1,2\dotsn,1,n−1,2…的顺序操作。当nnn为奇数时,按照1,n,2,n−1…1,n,2,n-1\dots1,n,2,n−1…的顺序操作。这样根据翻转和奇偶性,最后之前排好的位置仍然是排好的。设一开始未排好的区间为[l,r]=[1,n][l,r]=[1,n][l,r]=[1,n],每次排好一个数就减小区间范围原创 2020-10-11 22:13:39 · 587 阅读 · 0 评论 -
A. Cubes Sorting(思维)
A. Cubes Sorting(思维)结论:任何长度为nnn的数组逆序对数最多为n(n−1)2\dfrac{n(n-1)}{2}2n(n−1)。因为:∑i=1n−1i=n(n−1)2\sum_{i=1}^{n-1} i=\dfrac{n(n-1)}{2}∑i=1n−1i=2n(n−1)冒泡排序的原理就是根据减少逆序对实现的。即相邻元素交换的次数等于逆序对数。当且仅当数组为递减序(nnn个元素都不相同) 逆序对数=n(n−1)2\dfrac{n(n-1)}{2}2n(n−1)成立。#in原创 2020-10-04 17:38:25 · 328 阅读 · 0 评论 -
D. Make Them Equal(思维)
D. Make Them Equal(思维)思维。思路:显然每次操作所有数之和sumsumsum是不变的,首先特判平均值是否存在。然后考虑将所有和先聚集到a[1]a[1]a[1]上,在依次分给a[2]−a[n]a[2]-a[n]a[2]−a[n]。如果a[i](modi)=0a[i]\pmod{i}=0a[i](modi)=0,显然可以将a[i]a[i]a[i]加到a[1]a[1]a[1]上,然后a[i]=0a[i]=0a[i]=0。否则,就先让a[i]a[i]a[i]减去i−a[i](modi)i原创 2020-10-04 09:42:34 · 852 阅读 · 0 评论 -
E. Calendar Ambiguity(思维&数论)
E. Calendar Ambiguity(思维&数论)思路:思维&数论。考虑iii月jjj日=j=j=j月iii日。即:{[(i−1)×d+j]−[(j−1)×d+i]}(modw)=0\lbrace[(i-1)\times d+j]-[(j-1)\times d+i]\rbrace\pmod w=0{[(i−1)×d+j]−[(j−1)×d+i]}(modw)=0。(d−1)(i−j)(modw)=0,(j<i)(d-1)(i-j)\pmod w=0,(j<i)(d−原创 2020-07-30 15:17:11 · 649 阅读 · 3 评论 -
LC.1025.除数博弈(奇偶性)
LC.1025.除数博弈(奇偶性)思路:第一眼看了样例和题目的难度,秒猜奇偶性博弈,一发ACACAC。实际上用数学归纳法也很容易证,官方已经证的很清楚了。另外,结合一下奇偶的性质也可以证。当N=2N=2N=2时是必胜状态,当NNN为奇数时,其因数只能为奇数,奇数减奇数只能是偶数,所以当NNN为偶数,只需取1,让对方来取奇数,一直取变为222就赢了。同理NNN为奇数时,无论取什么,最后肯定是偶数,然后后手按照同样的套路就行了。class Solution {public: bool d原创 2020-07-24 20:10:26 · 376 阅读 · 0 评论 -
Distinct Sub-palindromes(思维)
Distinct Sub-palindromes(思维)没打,来做做签到题。思路:当n≤3n\leq 3n≤3时,显然任何子串的最小回文串个数都是nnn。即答案是:26n26^n26n.当n>3n>3n>3时,我们可以构造出最小回文串个数为333的字符串。即:abcabcabc…abcabcabc\dotsabcabcabc…。这样就有26×25×2426\times25\times2426×25×24种选择。哇,妙啊。#include<bits/stdc++.h&g原创 2020-07-23 19:17:48 · 402 阅读 · 0 评论 -
L. Ray in the tube(思维&暴力)
L. Ray in the tube(思维&暴力)思路:思维+暴力。记:A,BA,BA,B的横坐标距离为xxx。1.当xxx为奇数时,显然x=1x=1x=1包含所有奇数的情况。2.当xxx为偶数时,因为任何偶数质因数分解都可分解为:2k1×p2k2…pmkm2^{k_1}\times p_2^{k_2}\dots p_m^{k_m}2k1×p2k2…pmkm。所以任何偶数都可以被2k12^{k_1}2k1替代。即我们只需枚举1=20,21,…,2k,(2k≤1e9)1=2^0原创 2020-07-22 18:11:11 · 500 阅读 · 0 评论 -
K. Medians and Partition(思维)
K. Medians and Partition(思维)没想到居然是个思维题,太菜了,太菜了。思路:考虑:满足条件的一个子数组一定是大于等于mmm的数比小于mmm的数的个数至少多一个,我们记:cntx≥m=b,cntx<m=acnt_{x\geq m}=b,cnt_{x<m}=acntx≥m=b,cntx<m=a。显然:b−a≥1b-a\geq1b−a≥1才能保证中位数大于等于mmm。因此我们只需要记录b,ab,ab,a的个数就行了,答案就是max(0,b−a)max(0,b-原创 2020-07-22 16:06:50 · 542 阅读 · 0 评论 -
C. Omkar and Baseball(思维)
C. Omkar and Baseball(思维)思路:思维题,结论:最多不超过两次操作。1:1:1:已经排好了,000次操作。2:2:2:只有一段连续区间都不在自己的位置,111次操作。3:3:3:其他两次操作。这里着重解释下333。其实我们只需两次的对整个数组进行操作即可。第一次操作目的是将一半较大的数放在后面,然后将一半较小的数放在前面。最后再对整个数组排个序即可,这样显然在第二次操作时就能满足前面较小的数移动位置到后面,后面的较大的数移动位置到前面,保证操作的可行性。当nnn为偶数原创 2020-07-12 08:42:54 · 866 阅读 · 3 评论 -
No Breakfast for College Students(思维)
No Breakfast for College Students(思维)传送门思路:考虑目标餐数情况,显然要么三餐数量全部相等,要么三餐中有一餐或两餐比最大值小111。所以我们把当前的情况补全即可。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;#define mst(a) memset(a,0,sizeof a)int main(){ ll a[3]; in原创 2020-06-04 17:32:28 · 479 阅读 · 0 评论 -
E. Modular Stability(组合数学&逆元)
E. Modular Stability(组合数学&逆元)传送门结论:a1,a2…,aka_1,a_2\dots,a_ka1,a2…,ak中a2,a3,…,aka_2,a_3,\dots,a_ka2,a3,…,ak必须是a1a_1a1的倍数才行。证明:反证法:若存在ai,i∈[2,k]a_i,i\in[2,k]ai,i∈[2,k],a1∤aia_1\nmid a_ia1∤ai显然当x=aix=a_ix=ai时 ,当以ak,ak−1…,a1a_k,a_{k-1}\dot原创 2020-05-29 12:49:02 · 455 阅读 · 1 评论 -
Board(思维)
Board(思维)传送门思路:因为只有一个数不知道,设(x,y)=r[x]+c[y](x,y)=r[x]+c[y](x,y)=r[x]+c[y].r[i]r[i]r[i]表示对行加的数之和,c[i]c[i]c[i]表示对列加的数之和,要求r[x]+c[y]r[x]+c[y]r[x]+c[y]我们可以间接用一个矩形求出来。对任意(i,j),i!=x,j!=y(i,j),i!=x,j!=y(i,j),i!=x,j!=y显然有(x,j),(x,y),(i,j),(x,j)(x,j),(x,y),(i,j)原创 2020-05-27 15:22:27 · 1220 阅读 · 0 评论 -
C. Hilbert's Hotel(数论&思维)
C. Hilbert’s Hotel(数论&思维)题目传送门思路:因为要每个客人要安排到不同的房间,所以首先对∀i,j,0<i<j<n,(toi=i+ai)≠(toj=j+aj)\forall i,j,0<i<j<n,(to_i=i+a_i)\neq (to_j=j+a_j)∀i,j,0<i<j<n,(toi=i+ai)=...原创 2020-05-07 11:24:15 · 588 阅读 · 0 评论 -
E - Rotation Matching(思维)
E - Rotation Matching(思维)题目传送门思路:由于最多只有(M+1)2\dfrac{(M+1)}{2}2(M+1)轮,根据题意可知,每进行一轮就相当整个序列向左移动一格,如果是第一格就移动到最后一格。ep:ep:ep:round1:1,2,3,4,5round\quad 1:1,2,3,4,5round1:1,2,3,4,5round2:2,3,4,5,1round...原创 2020-05-03 13:17:19 · 759 阅读 · 0 评论 -
小石的签到题 (博弈论&思维)
小石的签到题 (博弈论&思维)题目传送门思路:显然n==1先手输,当n>1时,先手总会选择最优的情况,只要不取1,可以通过取其他数,来控制剩下数的个数,当剩下数为两个时,先手取一个,后手就必输。AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e...原创 2020-05-01 09:45:09 · 1147 阅读 · 0 评论 -
J - Staircases (递推&数的划分)
J - Staircases (递推&数的划分)题意:求有多少种不同数之和为n的方案。(划分个数大于1)思路:AC代码:#include<cstdio>#include<cstring>using namespace std;const int N=5e2+5;typedef long long ll;ll dp[N][N];int main(...原创 2020-04-30 09:14:35 · 380 阅读 · 0 评论 -
B. Binary Period(思维&字符串)
B. Binary Period(思维&字符串)题目传送门思路:显然最小周期不会超过2.pos1:全为1或全为0,只用输出本身即可,pos2:其他情况,显然由于s可以为两倍t长度,只用构造01即可,因为对于当前位的字符只能选择0或1,所以长度为2|t|的010101……串刚好满足条件。AC代码:#include<bits/stdc++.h>using namespac...原创 2020-04-27 12:48:42 · 851 阅读 · 0 评论 -
B.病毒扩散(组合数学)
B.病毒扩散(组合数学)题目传送门题意:本题的题意可以转换为t秒内走到(x,y)的病毒有多少。即可转化有多少种路径走到(x,y)(可以选择x+1,y+1,或不动)显然根据乘法原理有:AC代码:#include<bits/stdc++.h>using namespace std;const int mod=998244353,N=5e3;typedef long lon...原创 2020-04-25 14:41:01 · 452 阅读 · 0 评论 -
A.牛妹的游戏(拉姆塞理论)
A.牛妹的游戏(拉姆塞理论)题目传送门题意:给一无向无权图 n个点,m条边,问是否有长度为3的环或者3个点都互相不相连。思路:当n>=6时,必定存在3个点互相相连或者互相不相连。当n<6时暴力即可。AC代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=...原创 2020-04-25 14:10:13 · 392 阅读 · 0 评论 -
C. Nastya and Strange Generator (思维&找规律)
C. Nastya and Strange Generator (思维&找规律)题目传送门思路:AC代码:#include<bits/stdc++.h>using namespace std;int main(){ int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); ...原创 2020-04-24 10:39:00 · 490 阅读 · 0 评论 -
Codeforces Round #632 (Div. 2) D. Challenges in school №41 (模拟&思维)
Codeforces Round #632 (Div. 2) D. Challenges in school №41 (模拟&思维)题目传送门题意:给定序列求使得转身k轮刚好序列中不再存在转身的序列的解决方案。思路:AC代码:#include<bits/stdc++.h>using namespace std;vector<vector<int&...原创 2020-04-09 12:14:20 · 553 阅读 · 0 评论 -
AtCoder Beginner Contest 161 E - Yutori(贪心)
AtCoder Beginner Contest 161 E - Yutori(贪心)题目传送门题意:给n天要求工作k天,且工作一天要休息c天。按顺序输出必须要工作的天数下标。思路:AC代码:#include<bits/stdc++.h>using namespace std;const int N=2e5+5;int a[N],b[N]; int main(){...原创 2020-04-05 12:45:13 · 686 阅读 · 0 评论 -
Codeforces Round #630 (Div. 2) E. Height All the Same (快速幂&思维)
Codeforces Round #630 (Div. 2) E. Height All the Same (快速幂&思维)题目传送门思路:分奇偶性讨论,1.若NM为奇数肯定可以,这NM肯定是由偶数个+奇数个组成,不管是偶数个偶数还是偶数个奇数,偶数的一方都可以成对转化全部改变奇偶性,使所有格子奇偶性相同。2.若N*M为奇数,又分两种情况:R-L+1是否为偶数。若为偶数,由于L-R中偶...原创 2020-04-01 16:18:19 · 352 阅读 · 0 评论 -
Codeforces Round #630 (Div. 2) D. Walk on Matrix (思维&DP)
Codeforces Round #630 (Div. 2) D. Walk on Matrix (思维&DP)题目传送门题意:给定用DP计算的矩阵错误异或和与正确异或和的差值,构造这样一个矩阵。思路:显然对于&运算DP的方法是错的,因为前一个状态的最优&当前位置不一定是最优,即不满足最优子结构的性质。所以我们选取一个略大于k的二乘方数 比如(2^17=131072)...原创 2020-04-01 14:31:36 · 345 阅读 · 0 评论