
思维
幽殇默
他时若遂凌云志,敢笑黄巢不丈夫。
展开
-
B. Little Pony and Sort by Shift【1200 / 思维】
https://codeforces.com/problemset/problem/454/B#include<bits/stdc++.h> using namespace std;const int N=1e5+10;int a[N],n;int main(void){ cin>>n; for(int i=0;i<n;i++) cin>>a[i]; int ans=0,index=-1,minv=1e9; for(int i=0;i<原创 2021-12-03 22:15:40 · 467 阅读 · 0 评论 -
A. DZY Loves Chessboard【1200 / 思维】
https://codeforces.com/problemset/problem/445/A#include<bits/stdc++.h>using namespace std;int n,m;string s[110];int main(void){ cin>>n>>m; for(int i=0;i<n;i++) cin>>s[i]; for(int i=0;i<n;i++) { for(int j=0;j<m.原创 2021-12-01 23:26:42 · 637 阅读 · 0 评论 -
C. Less or Equal【1200 / 排序 思维】
https://codeforces.com/problemset/problem/977/C#include<bits/stdc++.h>using namespace std;const int N=1e5*2+10;int a[N],n,k;int main(void){ cin>>n>>k; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); bool flag=true; .原创 2021-11-30 23:05:47 · 655 阅读 · 0 评论 -
A. Level Statistics【1200 / 思维 模拟】
https://codeforces.com/problemset/problem/1334/A#include<bits/stdc++.h>using namespace std;int main(void){ int t; cin>>t; while(t--) { int n; cin>>n; int l=0,r=0; bool flag=1; for(int i=0;i<n;i++) { int a,b; cin>原创 2021-11-28 16:33:48 · 233 阅读 · 0 评论 -
A. Sequence with Digits【1200 / 思维】
https://codeforces.com/problemset/problem/1355/A打表找规律,你会发现到当最小值为0是,其加的值就一直变为0。即后面的值一直不会变了。故用哈希表来判断,如果某个数出现了几次直接退出。#include<bits/stdc++.h>using namespace std;typedef unsigned long long int LL;LL minv(LL a) { int ans=1e9; string s=to_string(a.原创 2021-11-22 14:48:09 · 637 阅读 · 0 评论 -
594. 最长和谐子序列【难度: 一般 / 思维 】
https://leetcode-cn.com/problems/longest-harmonious-subsequence/也就是说这俩数必须是连续的,故直接哈希表存数的个数,然后遍历数组看相邻的两个数是否都存在即可,取一个max。class Solution {public: int findLHS(vector<int>& nums) { int ans=0; unordered_map<int,int>mp;.原创 2021-11-20 15:20:23 · 114 阅读 · 0 评论 -
C. Make It Good【1200 / 思维 、贪心】
https://codeforces.com/problemset/problem/1385/C找到这样的一个山峰#include<bits/stdc++.h>using namespace std;const int N=1e5*2+10;int a[N];int main(void) { int t; cin>>t; while(t--) { int n; cin>>n; for(int i=0;i<n;i++) cin>&.原创 2021-11-19 20:26:46 · 405 阅读 · 0 评论 -
B. Most socially-distanced subsequence【1200 / 思维 贪心 常见模型】
https://codeforces.com/problemset/problem/1364/B题解这是一个非常常见的模型,我们开头结尾是必有的,我们只需保存极值点即可。#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int t,n,a[N]; int main(void){ cin>>t; while(t--) { cin>>n; for(int i=0;i<.原创 2021-11-17 22:24:38 · 210 阅读 · 0 评论 -
C. Boats Competition【1300 / 思维 暴力】
https://codeforces.com/problemset/problem/1399/C数据范围很小直接枚举所有和。#include<bits/stdc++.h>using namespace std;const int N=1e3+10;int a[N],cnt[N],backup[N],t,n;int main(void){ cin>>t; while(t--) { cin>>n; memset(cnt,0,sizeof cnt).原创 2021-11-16 22:52:42 · 365 阅读 · 0 评论 -
D. Same Differences【1200 / 思维 哈希】
https://codeforces.com/contest/1520/problem/D#include<bits/stdc++.h>using namespace std;const int N=1e5*2+10;int a[N],n,t;int main(void){ cin>>t; while(t--) { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; long long in.原创 2021-11-16 22:23:56 · 304 阅读 · 0 评论 -
B. Shuffle【1300 / 思维 区间合并】
https://codeforces.com/problemset/problem/1366/B假设我们在第i次可以到达的区间是[l,r]如果区间没有交集,则直接跳过。#include<bits/stdc++.h>using namespace std;int main(void){ int t; cin>>t; while(t--) { int n,x,m; cin>>n>>x>>m; int l=x,r=x; .原创 2021-11-12 16:36:18 · 260 阅读 · 0 评论 -
C. A and B and Team Training【1300 / 思维 贪心 枚举】
https://codeforces.com/problemset/problem/519/C方法一: 贪心,哪个当前多,用哪个#include<bits/stdc++.h>using namespace std;int main(void){ int n,m; cin>>n>>m; int cnt=0; while(1) { while(n>=m&&n>=2&&m) cnt++,n-=2,m--;//.原创 2021-11-12 16:13:20 · 132 阅读 · 0 评论 -
C. Social Distance【1300 / 思维 分类讨论】
https://codeforces.com/problemset/problem/1367/C分为三类情况讨论:全0的情况,即没有1只有1个1的情况有多于1个1的情况.#include<bits/stdc++.h>using namespace std;string s;int t,n,k;int main(void){ cin>>t; while(t--) { cin>>n>>k>>s; vecto.原创 2021-11-10 15:12:42 · 304 阅读 · 0 评论 -
B. Jzzhu and Sequences【1300 / 思维 规律】
https://codeforces.com/contest/450/problem/B找规律,发现6个为一组是一个循环节。#include<bits/stdc++.h>using namespace std;typedef long long int LL;const int N=1e5+10;const int mod=1e9+7;LL f[N];int main(void){ LL x,y,n; cin>>x>>y>>n; f[1.原创 2021-11-08 19:35:42 · 91 阅读 · 0 评论 -
C. Mere Array【1300 / 思维 数论】
https://codeforces.com/problemset/problem/1401/C将其从小到大排序,挨个比较,将不是在正确位置上的数,存到ans里。然后看ans里的每一个数和最小值gcd,看是不是最小值,如果是,那么这些数有一定可以通过某些变换到正确的位置上。#include<bits/stdc++.h>using namespace std;const int N=1e5*2+10;int a[N],b[N];int gcd(int a,int b) {retur.原创 2021-11-08 19:10:04 · 172 阅读 · 0 评论 -
598. 范围求和 II【思维 脑筋急转弯】
https://leetcode-cn.com/problems/range-addition-ii/因为都是从左上角开始的,故存一个最小的a,b即可。class Solution {public: int maxCount(int m, int n, vector<vector<int>>& ops) { int l=m,r=n; for(int i=0;i<ops.size();i++) { .原创 2021-11-07 22:17:21 · 119 阅读 · 0 评论 -
A. Pashmak and Garden【1200 / 思维】
https://codeforces.com/problemset/problem/459/A分类讨论:同行,必有解同列,必有解对角,看距离相不相等。#include<bits/stdc++.h>using namespace std;int main(void){ int x,y,xx,yy; cin>>x>>y>>xx>>yy; if(x==xx) { int len=abs(y-yy); cout<.原创 2021-11-06 22:58:45 · 124 阅读 · 0 评论 -
B. Trouble Sort【1300 / 思维】
https://codeforces.com/problemset/problem/1365/B分为两种情况:本身就有序或者b数组有0有1#include<bits/stdc++.h> using namespace std;int main(void){ int t; cin>>t; while(t--) { int n,x,flag=0; int flag1=0,flag2=0; cin>>n; vector<int&.原创 2021-11-05 22:53:11 · 133 阅读 · 0 评论 -
C. Ternary XOR【1200 / 思维 贪心】
https://codeforces.com/problemset/problem/1328/C尽可能的平分#include<bits/stdc++.h>using namespace std;int main(void){ int t; cin>>t; while(t--) { int n; cin>>n; string s; cin>>s; string a,b; for(int i=0;i<s.size();i++.原创 2021-11-02 20:32:49 · 110 阅读 · 0 评论 -
575. 分糖果【思维】
https://leetcode-cn.com/problems/distribute-candies/class Solution {public: int distributeCandies(vector<int>& ve) { unordered_map<int,int>mp; for(int i=0;i<ve.size();i++) mp[ve[i]]++; return min(mp.size(),.原创 2021-11-01 10:55:46 · 116 阅读 · 0 评论 -
B. A and B and Compilation Errors【1100 / 思维】
https://codeforces.com/problemset/problem/519/B思维: 用异或的思想,其实也可以用和做差的思想。#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int a[N],b[N],c[N],n;int main(void){ int n; cin>>n; int temp1=0,temp2=0; for(int i=1;i<=n;i++) ci.原创 2021-10-31 22:16:00 · 108 阅读 · 0 评论 -
A. Laptops【1100 / 排序】
https://codeforces.com/problemset/problem/456/A#include<bits/stdc++.h>using namespace std;const int N=1e5+10;vector<pair<int,int>>ve;int n;int main(void){ cin>>n; for(int i=0;i<n;i++) { int a,b; cin>>a>>.原创 2021-10-31 14:48:28 · 128 阅读 · 0 评论 -
C. Element Extermination【1400 / 思维 贪心 结论】
https://codeforces.com/problemset/problem/1375/C详细题解方法一:用栈来模拟,贪心的删除。如果栈为空那么直接入栈如果栈顶元素大于等于a[i],即不满足删除的条件,那么也直接入栈满足条件了,贪心的删除栈内此时只有一个元素,故直接跳过,不用入栈栈内有多个元素,那么入栈分类的讨论。取栈顶的两个元素,如果此时不满足删除条件了,那么直接重新入栈归位,退出循环如果经过删除后的栈,栈内只剩一个了那么也退出。取栈顶的两个元素,如果此时满足删除条件了,.原创 2021-10-29 10:37:33 · 160 阅读 · 0 评论 -
B. I Hate 1111【1400 / 思维 规律】
https://codeforces.com/problemset/problem/1526/B你会发现: 1111 11111…都会由 11,111构造出来。故x=11a+111b故只要判断 (x-111b)%11 是不是0即可详细题解#include<bits/stdc++.h>using namespace std;int main(void) { int t; cin>>t; while(t--) { long long int n; cin.原创 2021-10-29 09:33:55 · 183 阅读 · 0 评论 -
D. Zero Remainder Array【1400 / 思维 规律】
https://codeforces.com/problemset/problem/1374/D模拟做法: TLE了。大致思路用一个小根堆来存储。如果堆内为空,说明直接就是合法的直接输出0否则直接模拟,例如k=5,当2有两个时,第一个2是可以直接加的,但是第二个2就不可以了,我们得走一轮即2+k==2+5以此类推。#include<bits/stdc++.h>using namespace std;const int N=1e5*2+10;typedef long long.原创 2021-10-28 22:51:17 · 207 阅读 · 0 评论 -
C. Rotation Matching【1400 / 思维 数组循环移动】
https://codeforces.com/problemset/problem/1365/C因为他这个是一块移动的,就是说整个数组移动的。我们可以用一个桶来存储,每一个数到达它正确位置所需的步数。最后枚举每一个桶即可,求一个最大的。#include<bits/stdc++.h>using namespace std;const int N=1e5*4+10;int a[N],b[N],cnt[N],n; int main(void){ cin>>n; in.原创 2021-10-28 15:04:08 · 166 阅读 · 0 评论 -
D. Pair of Topics【1400 / 思维 二分】
https://codeforces.com/problemset/problem/1324/D我们直接将c数组构造出来,然后从小到大排序。默认ci>cj 避免重复计算然后对于每一个我们只要从后面找到满足条件的最小下标即可。然后加上那一段的个数。你可能会好奇,排序后的顺序不是会打乱原来的顺序么?其实是我所谓的。因为我们构造的数组既然有 ci>cj i>j 必然会有其相反所对应的,故无所谓了。#include<bits/stdc++.h>using nam.原创 2021-10-28 12:07:08 · 154 阅读 · 0 评论 -
A. Odd Selection【1200 / 思维】
https://codeforces.com/problemset/problem/1363/A分析可以得出,必须得有一个奇数,其它的必须都是偶数结果才会是奇数。当然两奇数和并后是偶数。所以我们先减1,存一个奇数,剩下的话先拿俩奇数,一对对的拿,应为奇数不够扩展必须俩两拿。剩下的不够的用偶数来补即可。#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int a[N],n,t,m;int main(void.原创 2021-10-27 08:43:17 · 243 阅读 · 0 评论 -
B. Pashmak and Flowers【1300 / 思维】
https://codeforces.com/problemset/problem/459/B如果最大值,和最小值不同。那么直接数量相乘。否则就是组合数,从n中选2个。#include<bits/stdc++.h>using namespace std;const int N=1e5*2+10;unordered_map<int,int>mp;int n,a[N];int main(void){ cin>>n; int minv=1e9,maxv=.原创 2021-10-26 12:20:46 · 120 阅读 · 0 评论 -
B. Sort the Array【1300 / 排序】
https://codeforces.com/problemset/problem/451/B如果本身直接有序的话,那么直接输出yes 选 1 1即可。否则的话我们只能选一段逆序的,将其转换看可不可以,如果还不可以就输出no,否则输出yes。#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int main(void){ int n; cin>>n; vector<int>a(n.原创 2021-10-26 09:10:51 · 286 阅读 · 0 评论 -
B. Scenes From a Memory【1000 / 思维】
https://codeforces.com/problemset/problem/1562/B1 4 6 8 9 有以上数字的直接输出,位数为1通过观察你会发现如果不含上面的字符那么只有2 3 5 7题目保证有解,故两位一定有解,直接暴力枚举两位的数字#include<bits/stdc++.h>using namespace std;bool check(int x){ for(int i=2;i<=x/i;i++) if(x%i==0) return true; r.原创 2021-10-22 19:53:13 · 185 阅读 · 0 评论 -
A. Mike and palindrome【1000 / 思维】
https://codeforces.com/problemset/problem/798/A#include<bits/stdc++.h>using namespace std;int main(void){ string s; cin>>s; int n=s.size(); int cnt=0; for(int i=0;i<n/2;i++) { if(s[i]!=s[n-1-i]) cnt++; } if(cnt==1) puts("YES");.原创 2021-10-22 19:00:35 · 102 阅读 · 0 评论 -
A. Dima and Friends【1000 / 思维】
https://codeforces.com/problemset/problem/272/A#include<bits/stdc++.h>using namespace std;int a[105],n,sum;int main(void){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i],sum+=a[i]; int cnt=0; for(int i=1;i<=5;i++) { if((sum+i).原创 2021-10-22 18:54:34 · 124 阅读 · 0 评论 -
A. Contest Start【1000 / 思维】
https://codeforces.com/problemset/problem/1539/A详细题解#include<bits/stdc++.h>using namespace std;typedef long long int LL;int main(void){ LL t; cin>>t; while(t--) { LL n,x,t; cin>>n>>x>>t; if(n*x<=t) cout<<.原创 2021-10-22 18:44:12 · 119 阅读 · 0 评论 -
229. 求众数 II【摩尔投票法的扩展】
https://leetcode-cn.com/problems/majority-element-ii/class Solution {public: vector<int> majorityElement(vector<int>& nums) { int r1,r2,c1=0,c2=0; for(int i=0;i<nums.size();i++) { int x=num.原创 2021-10-22 09:26:40 · 212 阅读 · 0 评论 -
B. Magic Stick【1000 / 思维】
https://codeforces.com/problemset/problem/1257/B思维题,你会发现,a>=b一定可以。如果a=1 则b只能<=1如果a=2则b只能<=3如果a=3则b只能<=3当a>=4是就可以一直的变大一定合法#include<bits/stdc++.h>using namespace std;int t,a,b;int main(void){ cin>>t; while(t--) { in.原创 2021-10-22 09:11:38 · 112 阅读 · 0 评论 -
A. Drazil and Date【1000 / 思维】
https://codeforces.com/problemset/problem/515/A求一下曼哈顿距离,总的步数减去它,如果下于0一定到不了。如果结果是偶数说明可以来回的踱步,最终也会看好到达。#include<bits/stdc++.h> using namespace std;int main(void){ int n,m,k; cin>>n>>m>>k; int sum=k-abs(n)-abs(m); if(sum>=.原创 2021-10-20 13:17:06 · 94 阅读 · 0 评论 -
453. 最小操作次数使数组元素相等【思维】
https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements/任选n-1一个数加1相当于 只选一个数减1.故只需统计每一个数和最小数的差值和即可。class Solution {public: int minMoves(vector<int>& nums) { int temp=1e9; for(int i=0;i<nums.size();i+.原创 2021-10-20 10:08:44 · 104 阅读 · 0 评论 -
B. Assigning to Classes【1000 / 思维】
https://codeforces.com/problemset/problem/1300/B直接排序,找到中间的两个做差即可。因为你会发现中间的两个必定可以作为各个组的中间值,且它们离的距离是最近的。#include<bits/stdc++.h>using namespace std;const int N=1e5*2+10;int a[N],t,n;int main(void){ cin>>t; while(t--) { cin>>n; .原创 2021-10-17 14:40:32 · 118 阅读 · 0 评论 -
A. Add and Divide【1000 / 思维】
https://codeforces.com/problemset/problem/1485/A除法和乘法等价的,要想a/b=0 其b必须大于a 即题目问的是b乘以几次大于a 最后再加上 a/b 的最后一次即可。问题是: b是可以加的,那么何时乘b最优呢? 直接暴力枚举所有的b即可。 因为 231>1e9 故我们的b不会很大。故直接枚举 b<x<b+30 即可#include<bits/stdc++.h>using namespace std;typed.原创 2021-10-17 14:30:44 · 227 阅读 · 0 评论