
CF
巴扎嘿呀
学习知识图谱中~欢迎交流
展开
-
Cleaning(思维)
#include<bits/stdc++.h>#define ll long longusing namespace std;const ll inf=1e18;const int N=2e5+100;ll pre[N],suf[N];ll a[N];int main(){ int T;scanf("%d",&T); while(T--){ pre[0]=0; bool f=false; int n;scanf("%d",&n); suf[n+.原创 2021-01-25 17:41:50 · 141 阅读 · 0 评论 -
Array Destruction(贪心+multiset)
#include<bits/stdc++.h>using namespace std;typedef pair<int,int> PII; const int N=1100;int a[2*N];int main(){ int T;scanf("%d",&T); while(T--){ bool f1=false; int n;scanf("%d",&n); for(int i=0;i<2*n;i++){ scanf("%d",.原创 2021-01-25 16:11:39 · 116 阅读 · 0 评论 -
E. Long Permutation(康托编码)
#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=2e5+100;ll sum[N];ll fac[20];int n,q;ll cnt;void init(){ for(int i=1;i<=n;i++){ sum[i]=sum[i-1]+i; } fac[0]=1; for(int i=1;i<=17;i++){ fac[i]=fac[i-1]*i.原创 2020-11-04 08:43:57 · 367 阅读 · 0 评论 -
F. Identify the Operations(思维)
#include<bits/stdc++.h>#define ll long longusing namespace std;const int mod=998244353;const int N=2e5+100;int a[N],b[N];bool st[N];int pos[N];int main(){ int T;scanf("%d",&T); while(T--){ int n,m;scanf("%d%d",&n,&m); for(i.原创 2020-11-03 19:34:16 · 454 阅读 · 0 评论 -
C. The Delivery Dilemma(二分答案)
#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=2e5+100;int a[N],b[N];vector<int> v;int n;bool check(ll x){ v.clear(); for(int i=0;i<n;i++){ if(a[i]<=x) continue; else v.push_back(i); } ll sum=0;.原创 2020-11-03 17:12:52 · 537 阅读 · 0 评论 -
B. Saving the City(贪心)
#include<bits/stdc++.h>#define ll long longusing namespace std;vector<int> v;int main(){ int T;scanf("%d",&T); while(T--){ int pre=-1; ll ans=0; v.clear(); int a,b;scanf("%d%d",&a,&b); string s;cin>>s;int n=s..原创 2020-11-03 17:12:09 · 385 阅读 · 0 评论 -
D. Extreme Subtraction(思维+贪心/差分)
#include<bits/stdc++.h>using namespace std;const int N=3e4+100;int a[N];int pre=-1;int main(){ int T;scanf("%d",&T); while(T--){ bool f=true; int n;scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); int i; for(i=.原创 2020-11-03 17:11:17 · 276 阅读 · 1 评论 -
C. Division(思维+分解质因数)
#include<bits/stdc++.h>#define ll long longusing namespace std;ll p,q;ll ans;void f(ll x){ ll t=p; while(t%q==0) t/=x; ans=max(ans,t);}int main(){ int T;scanf("%d",&T); while(T--){ scanf("%lld%lld",&p,&q); if(p%q!=0) prin.原创 2020-11-02 20:34:44 · 533 阅读 · 0 评论 -
D. Divide and Sum(思维+组合数)
#include<bits/stdc++.h>#define ll long long using namespace std;const int mod=998244353;const int N=150000+100;int a[2*N];ll sum[2];int fac[2*N];int infac[2*N];ll qp(int a,int b){ ll ans=1; while(b){ if(b&1){ ans=ans*a%mod; } .原创 2020-11-02 20:33:07 · 581 阅读 · 0 评论 -
C. Chef Monocarp(dp)
#include<bits/stdc++.h>using namespace std;const int INF=0x3f3f3f3f;const int N=220;int a[N];int dp[N][2*N];int main(){ int T;scanf("%d",&T); while(T--){ int n;scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sor.原创 2020-10-28 19:01:56 · 226 阅读 · 0 评论 -
E. Solo mid Oracle(数学)
#include<bits/stdc++.h>#define ll long longusing namespace std;ll a,b,c,d;int main(){ int T;scanf("%d",&T); while(T--){ scanf("%lld%lld%lld%lld",&a,&b,&c,&d); if(a>(c*b)){ puts("-1"); continue; } ll t=a/(b*.原创 2020-10-27 14:49:48 · 268 阅读 · 0 评论 -
D. Shurikens(贪心)
#include<bits/stdc++.h>using namespace std;typedef pair<int,int> pii;const int N=3e5+100;vector<pii> v;int j;int now;int a[N];bool f=true;int ans[N];int main(){ int n;cin>>n; n*=2; for(int i=1;i<=n;i++){ char c;ci.原创 2020-10-26 14:07:12 · 233 阅读 · 0 评论 -
C. Perform Easily(贪心)
#include<bits/stdc++.h>using namespace std;const int N=1e5+100;const int INF=0x3f3f3f3f;int a[10],b[N];int st[N];struct P{ int num; int id;}p[6*N+100];int cnt;bool cmp(P x,P y){ return x.num<y.num;}int main(){ for(int i=0;i<6;i+.原创 2020-10-26 14:06:32 · 415 阅读 · 0 评论 -
D. Hexagons(最小向量分解)
#include<bits/stdc++.h>#define ll long longusing namespace std;int c[10];int main(){ int T;cin>>T; while(T--){ int x,y;cin>>x>>y; for(int i=1;i<=6;i++) cin>>c[i]; ll ans=0; c[1]=min(c[1],c[6]+c[2]); c[2]=mi.原创 2020-10-22 11:01:14 · 231 阅读 · 0 评论 -
Codeforces Global Round 11 C. The Hard Work of Paparazzi(dp)
#include<bits/stdc++.h>using namespace std;const int N=1e5+100;const int INF=0x3f3f3f3f;int a[N][3];int dp[N];int main(){ int m,n;scanf("%d%d",&m,&n); for(int i=1;i<=n;i++){ scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]).原创 2020-10-11 15:38:37 · 160 阅读 · 0 评论 -
Codeforces Global Round 11 B. Chess Cheater(贪心)
#include<bits/stdc++.h>using namespace std;vector<int> v1,v2;bool f1,f2;int main(){ //freopen("in.txt","r",stdin); int T;scanf("%d",&T); while(T--){ f1=f2=false; v1.clear(); v2.clear(); int n,k;scanf("%d%d",&n,&k); .原创 2020-10-11 14:03:08 · 269 阅读 · 0 评论 -
D - Rescue Nibel!(组合数+线段交)
//1<=b<=a<=1e5 ,Cab mod (1e9+7)#include <iostream>#include <algorithm>#define ll long long using namespace std;const int N=300010,mod=998244353;ll fact[N],infact[N];struct P{ int num,v;}a[N];ll ans=0;vector<P> v;bool.原创 2020-09-27 10:55:49 · 132 阅读 · 0 评论 -
Codeforces Round #672 (Div. 2) Pokémon Army
题意就是给你一串数字,让你找出一串序列(可以不连续),使他们+,-,+,-...运算后这样的结果最大比如1 2 5 4 3 6 7最大结果为5−3+7=9hard version较easy version区别是hard version有最大为3e5次的交换,即交换两个数字然后每次交换输出结果easy version没有交换,简单很多,可以用dp来做#include<bits/stdc++.h>#define ll long longusing namespace原创 2020-09-25 18:38:51 · 152 阅读 · 0 评论 -
CF343C Read Time(二分+双指针)
题意:给你n个探头,m个要读的轨道,n个探头的初始位置是h1---hn(从小到大),m个轨道的位置为p1------pn(也是从小到大),探头可以左移或右移,这些探头可以一起动,每移动一格的时间为1,探头读轨道不计时间,如果要读的轨道上就有探头那么就不需要时间,找最小的时间来读完这些轨道。二分找答案,用双指针贪心地判断答案合不合法。#include<iostream>#define ll long longusing namespace std;const int N=1e5+1原创 2020-09-17 22:34:21 · 190 阅读 · 0 评论 -
CF983B XOR-pyramid(区间DP)
递推式:f[i,j]=f[i+1,j]^f[i,j-1]#include<bits/stdc++.h>using namespace std;const int N=5010;int a[N];int f[N][N];int dp[N][N];int main(){ memset(f,0,sizeof f); memset(dp,0,sizeof dp);// freopen("in.txt","r",stdin); int n;scanf("%d",&n);原创 2020-09-17 22:37:48 · 128 阅读 · 0 评论 -
CF982D Shark(并查集+multiset)
用并查集和multiset维护序列长度#include<bits/stdc++.h>using namespace std;const int N=1e5+10;struct P{ int pos,v;}p[N];int n;int a[N];int f[N],size[N];set<int> q;set<int>::iterator qq;multiset<int> s;multiset<int>::iterator原创 2020-09-17 22:39:27 · 137 阅读 · 0 评论 -
CF985E Pencils and Boxes(树状数组+dp)
树状数组优化dp问题#include<bits/stdc++.h>using namespace std;const int N=5e5+10;int n,k,d;int b[N];int a[N];int f[N];int lowbit(int x){ return x&-x;}void update(int x,int v){ while(x<=n){ b[x]+=v; x+=lowbit(x); }}int query(int x)原创 2020-09-17 22:40:38 · 146 阅读 · 0 评论 -
CF986C AND Graph(并查集)
#include<bits/stdc++.h>using namespace std;const int N=1<<23;int a[N];int f[N];int p[N];int n,m;int find(int x){ if(p[x]!=x) p[x]=find(p[x]); return p[x];}int he(int x,int y){ x=find(x); y=find(y); p[x]=y;}void dfs(int x,int y.原创 2020-09-17 22:43:43 · 201 阅读 · 0 评论 -
CF1061D TV Shows(multiset)
#include<bits/stdc++.h>#define ll long longusing namespace std;const int mod=1e9+7;const int N=1e5+10;int n,x,y;multiset<int> s;multiset<int>::iterator ss;struct P { int l,r;} a[N];bool cmp(P x,P y) { if(x.l==y.l) return x.r&.原创 2020-09-17 22:44:39 · 218 阅读 · 0 评论 -
CF1061C Multiplicity(dp)
#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e5+10;const int mod=1e9+7;int f[N*10];int n;vector<int> v[N];int main(){ //freopen("in.txt","r",stdin); scanf("%d",&n); for(int i=0;i<n;i++){ v[i]..原创 2020-09-17 22:45:39 · 161 阅读 · 0 评论 -
CF776C Molly‘s Chemicals(前缀和+map+思维)
一开始用unordered_map就tle了,以前看过他和map区别,但没太深印象,大概是哈希就用unordered_map,其他就用map吧。sum[r]-pow(k,i)==sum[l]枚举r,map记录r之前的l前缀和出现次数,每次累加即可。#include<bits/stdc++.h>#define ll long longusing namespace std;const int N=1e5+10;const ll INF=1e14;ll sum[N];se.原创 2020-09-18 20:02:32 · 278 阅读 · 0 评论 -
E - Hatsune Miku (dp)
#include<bits/stdc++.h>using namespace std;const int M=55;const int N=105;int mp[M][M];int f[N][M];int a[N];int main(){ //freopen("in.txt","r",stdin); int T;scanf("%d",&T); while(T--){ int n,m;scanf("%d%d",&n,&m); for(int i.原创 2020-09-20 10:07:07 · 144 阅读 · 0 评论