题解
bonely
这个作者很懒,什么都没留下…
展开
-
Wonderful Coloring - 1
题目:题目链接:题解:#include <bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { string a; cin>>a; int con[30]={0}; for(int i=0;a[i];i++) { con[a[i]-'原创 2021-08-13 21:41:45 · 274 阅读 · 0 评论 -
Polycarp and Coins
题目:题目链接:题解:#include <bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { long long n; cin>>n; long long a=n/3,b=n/3; int c=n%3; if(c==1) a++; else原创 2021-08-13 21:40:41 · 191 阅读 · 0 评论 -
Moamen and k-subarrays
题目:题目链接题解:#include <bits/stdc++.h>using namespace std;const int N=1e6+10;long long a[N],b[N];map<long long, long long> c;int main(){ int t; cin>>t; while(t--) { c.clear(); long long n,k; cin>>n>>k; for(int原创 2021-08-13 21:36:29 · 130 阅读 · 0 评论 -
Ezzat and Two Subsequences
题目:题目链接题解:#include <bits/stdc++.h>using namespace std;const int N=1e6+10;long long a[N];int main(){ int t; cin>>t; while(t--) { long long n; cin>>n; long long sum=0; long long ma=-1e9-10; for(int i=1;i<=n;i++) cin原创 2021-08-13 21:35:24 · 139 阅读 · 0 评论 -
P2953 [USACO09OPEN]Cow Digit Game S
题目:题目链接题解:#include <bits/stdc++.h>using namespace std;const int N=1e6+10;int f[N];int ma(int x){ int ans=0; while(x) { int d=x%10; ans=max(ans, d); x/=10; } return ans;}int mi(int x){ int ans原创 2021-08-13 21:34:00 · 105 阅读 · 0 评论 -
P1488 肥猫的游戏
题目:题目链接题解:#include <bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; int r=0; int m=n-2; int a,b,c; cin>>a>>b>>c; int s[5]={a,b,c}; sort(s,s+3); if(s[0]+1==s[1]&&s[原创 2021-08-13 21:31:40 · 119 阅读 · 0 评论 -
P1447 [NOI2010] 能量采集
题目:题目链接题解:#include <bits/stdc++.h>using namespace std;long long pri(int n){ long long ans=n; for(int i=2;i<=n/i;i++) { if(n%i==0) { ans=(long long)ans*(i-1)/i; while(n%i==0) n/=i; }原创 2021-08-13 21:30:27 · 93 阅读 · 0 评论 -
P1290 欧几里德的游戏
题目:题目链接题解:#include <bits/stdc++.h>using namespace std;int con;int c(long long n,long long m)//n<m{ if(n==0) return false; else if(m/n==1) return !c(m%n,n); else return true;}int main(){ int t; cin>>t; while原创 2021-08-13 21:29:09 · 124 阅读 · 0 评论 -
P1247 取火柴游戏
题目:题目链接题解:#include <bits/stdc++.h>using namespace std;long long a[500005];int main(){ int n; cin>>n; long long ans=0; for(int i=1;i<=n;i++) { cin>>a[i]; ans^=a[i]; } if(ans) {原创 2021-08-13 21:27:41 · 85 阅读 · 0 评论 -
P1100 高低位交换
题目:题目链接题解:#include <bits/stdc++.h>using namespace std;int main(){ long long x; cin>>x; cout<<((x&0x0000ffff)<<16|(x&0xffff0000)>>16)<<endl; return 0;}原创 2021-08-13 21:26:12 · 117 阅读 · 0 评论 -
矩阵距离(多源bfs)
题目:题目链接:题解:#include <bits/stdc++.h>using namespace std;int n,m;char pos[1005][1005];int dis[1005][1005];int dx[4]={0,0,1,-1};int dy[4]={1,-1,0,0};typedef pair<int,int> pll;void bfs(){ memset(dis,-1,sizeof dis); queue<pll&原创 2021-08-08 22:23:41 · 77 阅读 · 0 评论 -
魔板(最小步数)
题目:题目链接:题解:#include <bits/stdc++.h>using namespace std;string st,en;map<string,int> dis;map<string,pair<char,string>> pre;queue<string> q;string move0(string a){ string ans; for(int i=7;i>=0;i--) ans+=a[i]原创 2021-08-08 22:22:25 · 82 阅读 · 0 评论 -
Hankson的趣味题
题目:题目链接:题解:#include <bits/stdc++.h>using namespace std;const int N=45000;int pri[N],primes[N];int con,conf,cond;typedef pair<int,int> pll;pll f[N];int yueshu[N];void prime(){ for(int i=2;i<=N;i++) { if(!pri[i]) p原创 2021-08-08 22:19:51 · 107 阅读 · 0 评论 -
青蛙的约会
题目:题目链接:题解:同余方程#include <bits/stdc++.h>using namespace std;long long exgcd(long long a,long long b,long long &x,long long &y){ if(b==0) { x=1; y=0; return a; } long long gcd=exgcd(b,a%b,y,x);原创 2021-08-08 22:18:15 · 75 阅读 · 0 评论 -
曹冲养猪(同余)
题目:题目链接:题解:同余方程#include <bits/stdc++.h>using namespace std;typedef long long ll;ll exgcd(ll a,ll b,ll &x,ll &y){ if(b==0) { x=1; y=0; return a; } ll gcd; gcd=exgcd(b,a%b,y,x); y-=a/b*x;原创 2021-08-08 22:16:50 · 133 阅读 · 0 评论 -
数三角形(组合数学)
题目:题目链接:题解:#include <bits/stdc++.h>using namespace std;typedef long long ll;long long c(int n){ long long ans=((ll)n*(n-1)*(n-2))/6; return ans;}int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}int main(){ int n,m; cin原创 2021-08-08 22:15:35 · 165 阅读 · 0 评论 -
xay loves count
题目:题目链接:题解:#include <bits/stdc++.h>using namespace std;#define int long longconst int maxn=1e6;int a[maxn+5],b[maxn+5];signed main(){ int n,ans=0,s1=0; scanf("%lld",&n); for (int i = 0; i < n; ++i) { int x;原创 2021-08-08 22:12:42 · 107 阅读 · 0 评论 -
xay loves or
题目:题目链接:题解:坑点: yyy 是正整数#include <bits/stdc++.h>using namespace std;int main(){ long long x,s; cin>>x>>s; if(x>s) cout<<0<<endl; else { long long ans=1; for(int i=0;i<32;i++)原创 2021-08-08 22:04:50 · 67 阅读 · 0 评论 -
一个简单的整数问题2
题目:题目链接题解:树状数组#include <bits/stdc++.h>using namespace std;long long a[100005],t1[100005],t2[100005],sum[100005];int n;void add1(int x, int k){ for(; x <= n; x += x & -x) t1[x] += k;}long long ask1(int x){ long long ans = 0;原创 2021-08-05 00:45:12 · 81 阅读 · 0 评论 -
一个简单的整数问题
题目:题目链接:题解:树状数组#include <bits/stdc++.h>using namespace std;long long a[100005],t[100005];int n;void add(int x, int k){ for(; x <= n; x += x & -x) t[x] += k;}long long ask(int x){ long long ans = 0; for(; x; x -= x &原创 2021-08-05 00:43:34 · 102 阅读 · 0 评论 -
楼兰图腾题解
题目:题目链接:题解:树状数组#include <bits/stdc++.h>using namespace std;const int N = 2e5+10;long long a[N];long long t[N];long long bigger[N],lower[N];int n;void add(long long x, long long k){ for(; x <= n; x += x & -x) t[x] += k;}long l原创 2021-08-05 00:42:18 · 113 阅读 · 0 评论 -
Segment Tree with Pruning
题目题目链接:题解:记忆化搜索#include <bits/stdc++.h>using namespace std;map<long long,long long>p;long long slove(long long n,long long k){ if(n<=k) return 1; if(p[n]!=0) return p[n]; if(n%2==0) { p[n]=2*slove(n/2,k)+1; } else {原创 2021-08-05 00:40:44 · 120 阅读 · 0 评论 -
Intervals on the Ring
题目:题目链接:题解:using namespace std;int t,n,m;struct node{ int l,r;}a[1005];bool cmp(node x,node y){ return x.l<y.l;}int main(){ cin>>t; while(t--) { cin>>n>>m; for(int i=0;i<m;i++)cin>>a[i].l>>a[i].r; s原创 2021-08-03 01:24:58 · 71 阅读 · 0 评论 -
Web of Lies
题目:题目链接:题解:#include <bits/stdc++.h>using namespace std;int g[200005];int main(){// int t;// cin>>t;// while(t--)// { //memset(g,0,sizeof g); int n,m; cin>>n>>m; int ans=0; for(int i=1;i<=m;i++) { int u,v原创 2021-08-03 00:33:50 · 112 阅读 · 0 评论 -
Gregor and the Pawn Game
题目:题目链接:题解:从左向右看,如果前面有 111 便先向左上角找,然后向右上角找#include <bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { int n; cin>>n; string a,b; cin>>a>>b; int ans=0; for(int i=0;i<n;i++) {原创 2021-08-02 22:24:10 · 324 阅读 · 0 评论 -
Gregor and Cryptography
题目:题目链接:题解:质数一定是奇数,所以选择 p−1p-1p−1 和 p/2p/2p/2#include <bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { long long n; cin>>n; cout<<n/2<<" "<<n-1<<endl; } return 0;}..原创 2021-08-02 22:21:43 · 179 阅读 · 0 评论 -
2021牛客暑期多校训练营3
文章目录B--Black and whiteE--MathJ--Counting TrianglesB–Black and white题目链接:题解:#include<bits/stdc++.h>#define ll long longusing namespace std;const int maxn = 5005;struct node { int u,v; ll w; bool operator < (const node&原创 2021-07-31 23:55:03 · 105 阅读 · 0 评论 -
2021牛客暑期多校训练营4
题目:题目链接题意:LCS(s1,s2)LCS(s1,s2)LCS(s1,s2)表示 s1s1s1 和 s2s2s2 的最长公共子序列给定三个字符串 s1s1s1, s2s2s2,s3s3s3,要求满足 LCS(s1,s2)=aLCS(s1,s2) = aLCS(s1,s2)=a, LCS(s2,s3)=bLCS(s2,s3) = bLCS(s2,s3)=b, LCS(s1,s3)=cLCS(s1,s3) = cLCS(s1,s3)=c输出满足要求的 s1,s2,s3s1,s2,s3s1,s2原创 2021-07-31 13:54:45 · 119 阅读 · 0 评论 -
2021牛客暑期多校训练营2
文章目录C--Draw GridsD--Er Ba GameC–Draw Grids题目链接:题意:总共有 n∗mn*mn∗m 个点, 两人轮流选取两个点连一条线, 不能连已经连过的线, 并且连成的图形不能形成闭合回路, 两人都选取最优策略,最后不能操作的人输题解:判断奇偶性就好#include <bits/stdc++.h>using namespace std;int main(){ int n,m; cin>>n>>m原创 2021-07-25 23:11:58 · 138 阅读 · 1 评论 -
2021牛客暑期多校训练营1
文章目录Alice and BobBall Dropping在补了....Alice and Bob题目链接:题意:总共有两堆石头,每次可以从一堆中取走 kkk (k>0)(k>0)(k>0)块石头,从另一堆取走 s∗ks*ks∗k (s>=0)(s>=0)(s>=0)块石头, 不能操作的人输题解:用一个二维数组 f[i][j]f[i][j]f[i][j] 储存状态, f[i][j]f[i][j]f[i][j] 为 111 代表有两堆石头分别有i原创 2021-07-23 22:12:46 · 167 阅读 · 0 评论 -
KD-Graph
题目:链接题意:总共有 nnn 个点,mmm条边,要分成 kkk 组,满足(1)(1)(1) 如果顶点 p 和 q ( p ≠ q ) 在同一组中,则 p 和 q 之间必须至少有一条路径满足该路径中的最大值小于或等于 D。(2)(2)(2) 如果顶点 p 和 q ( p ≠ q ) 在不同的组中,则 p 和 q 之间不可能有任何路径满足该路径中的最大值小于或等于 D。题解:最开始分为cnt=ncnt=ncnt=n个组按找点的边权从小到大排序, 如果这两个点不在同一个集合中,则将它们合并到一个原创 2021-07-23 16:32:53 · 160 阅读 · 0 评论 -
P2257 YY的GCD
题目:题目链接:题解:莫比乌斯反演#include <bits/stdc++.h>#define N 10000010using namespace std;long long pri[N],cnt,g[N];bool st[N];long long mu[N],sum[N];void get_mu(){ mu[1]=1; for(long long i=2;i<N;i++) { if(!st[i]){mu[i]=-1;pri原创 2021-05-24 22:25:43 · 73 阅读 · 0 评论 -
P1829 [国家集训队]Crash的数字表格 / JZPTAB
题目:题目链接:题解:莫比乌斯反演#include <bits/stdc++.h>using namespace std;long long mod=20101009;const int N=1e7+10;long long mu[N],pri[N],con,sum[N];bool st[N];long long n,m;void getmus(){ mu[1]=1; for(int i=2;i<=N;i++) { if(!原创 2021-05-24 22:19:07 · 76 阅读 · 0 评论 -
P4450 双亲数
题目:题目链接:题解:莫比乌斯反演即求∑i=1n∑j=1m[gcd(i,j)=k]\sum_{i=1}^{n} \sum_{j=1}^{m} {[gcd(i,j)=k]}∑i=1n∑j=1m[gcd(i,j)=k]∑i=1n∑j=1m[gcd(i,j)=k]\sum_{i=1}^{n} \sum_{j=1}^{m} {[gcd(i,j)=k]}∑i=1n∑j=1m[gcd(i,j)=k]=∑i=1[n/k]∑j=1[m/k][gcd(i,j)=1]\sum_{i=1}^{[n/k]} \原创 2021-05-22 21:43:26 · 101 阅读 · 0 评论 -
2020ICPC 江西省大学生程序设计竞赛 A Simple Math Problem
题目:题目链接:题解:莫比乌斯反演推导过程如下∑i=1n∑j=1iF[j][gcd(i,j)=1]\sum_{i=1}^{n}\sum_{j=1}^{i} {F[j][gcd(i,j)=1]}∑i=1n∑j=1iF[j][gcd(i,j)=1]可以转化为 ∑i=1nF[i]∑j=ingcd[(i,j)=1]\sum_{i=1}^{n}{F[i]} \sum_{j=i}^{n} {gcd[(i,j)=1]}∑i=1nF[i]∑j=ingcd[(i,j)=1]∑i=1nF[i]∑j原创 2021-05-22 21:32:33 · 346 阅读 · 0 评论 -
区间选点
题目:题解:贪心,根据右端点排序#include <bits/stdc++.h>using namespace std;struct node { long long a,b;}p[100005];bool cmp(node x,node y){ return x.b<y.b;}int main(){ int n; cin>>n; for(int i=0;i<n;i++) { cin原创 2021-05-21 23:15:25 · 86 阅读 · 0 评论 -
Codeforces Round #721 (Div. 2) B2. Palindrome Game (hard version)
题目:题目链接:题解:先数出有多少个位置不匹配,如果为000则和B1B1B1一样,如果为111则alice第一轮翻转,bob必须得第一个填,如果0 的数量大于2则bob必败,不匹配位置大于1,则alice必胜#include <bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { int n; cin>>n; string a; cin>原创 2021-05-21 23:11:59 · 111 阅读 · 0 评论 -
Codeforces Round #721 (Div. 2) B1. Palindrome Game (easy version)
题目:题目链接题解:#include <bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { int n; cin>>n; string a; cin>>a; int con=0; for(int i=0;i<n;i++) { if(a[i]=='0') con++; } if(con%2==0)原创 2021-05-21 22:47:19 · 146 阅读 · 0 评论 -
区间覆盖
题目:题解:贪心策略先按照左端点排序,对于每一次选择,选择当前区间的左端点能覆盖到线段左端点的区间,并且覆盖到的线段的右端点是最长的那个,如果不能覆盖则无解#include <bits/stdc++.h>using namespace std;struct node { long long a,b;}e[100005];bool cmp(node x,node y){ return x.a<y.a;}int main(){ std::ios原创 2021-05-21 22:44:21 · 111 阅读 · 0 评论 -
最大异或对
题解:题解:用trie树存储每一个数,从最大位开始,每次选择不同的#include <bits/stdc++.h>using namespace std;const int N=1e5+10;const int M=31*N;int son[M][2],idx;int a[N];int qurry(int x){ int p=0; int ans=0; for(int i=30;i>=0;i--) { int u=x&g原创 2021-05-19 23:19:27 · 78 阅读 · 0 评论