Educational Codeforces Round 70 (Rated for Div. 2) A,B,C,D,E

SAP SD跨公司销售IDOC自动记账配置实战指南 本文详细介绍了SAP SD模块中跨公司销售IDOC自动记账的配置实战指南。通过IDOC技术实现集团企业间交易的自动化处理,显著提升财务效率和准确性。文章涵盖前置配置、RFC连接、合作伙伴参数设置及财务科目分配等关键步骤,并提供了常见错误排查和性能优化建议,帮助用户快速掌握这一高效业务流程。 阅读详情

S t r i n g F o r c e s StringForces StringForces 为什么他们代码能力那么强!!!


A. You Are Given Two Binary Strings…

传送门


Solution

显然只需要把最低位的 1 1 1消掉就好了

#include<cstdio>
#include<algorithm>
#include<cstring>
const int MAXN = 1e5+10;
int n,m;
char b1[MAXN],b2[MAXN];
void solve(){
	scanf("%s%s",b1+1,b2+1);
	n=strlen(b1+1);
	m=strlen(b2+1);
	std::reverse(b1+1,b1+1+n);
	std::reverse(b2+1,b2+1+m);
	int pos=1;
	while(b2[pos]!='1')
		pos++;
	int i;
	for(i=pos;i;i++){
		if(b1[i]=='1')
			break;
	}
	printf("%d\n",i-pos);
}
int main(){
	int T;
	scanf("%d",&T);
	while(T--)
		solve();
	return 0;
}

B. You Are Given a Decimal String…

传送门


Solution

假设从 a i a_i ai​转移到 a j a_j aj​,可以看作从 0 0 0转移到 ( a i − a j + 10 ) % 10 (a_i-a_j+10)\%10 (ai​−aj​+10)%10
所以可以枚举每次选的两个数 x , y x,y x,y
设 f [ n ] f[n] f[n]为用这两个数凑出 n n n最少要多少步
f [ x ] = f [ y ] = 1 f[x]=f[y]=1 f[x]=f[y]=1
转移 f [ ( n + x ) % 10 ] = f [ n ] + 1 f[(n+x)\%10]=f[n]+1 f[(n+x)%10]=f[n]+1
f [ ( n + y ) % 10 ] = f [ n ] + 1 f[(n+y)\%10]=f[n]+1 f[(n+y)%10]=f[n]+1
然后像 s p f a spfa spfa那样转移就好了
如果不好理解,可以直接理解成最短路
具体细节看代码

#include<cstdio>
#include<queue>
#include<cstring>
const int MAXN = 3e6;
char str[MAXN];
int n,data[10],f[22];
bool inq[22];
void solve(int a,int b){
	data[1]=a;data[2]=b;
	for(int i=1;i<10;i++)
		f[i]=0x3f3f3f3f;
	f[0]=0x3f3f3f3f;
	for(int i=0;i<10;i++)
		inq[i]=0;
	std::queue<int> Q;
	Q.push(a);Q.push(b);
	f[a]=f[b]=1;
	inq[a]=1;inq[b]=1;
	while(Q.size()){
		int cur=Q.front();
		Q.pop();
		inq[cur]=0;
		for(int i=1;i<=2;i++){
			int t=(cur+data[i])%10;
			if(f[t]>f[cur]+1){
				f[t]=f[cur]+1;
				if(!inq[t]){
					inq[t]=1;
					Q.push(t);
				}
			}
		}
	}
}
typedef long long ll;
ll ans[22][22];
int main(){
	scanf("%s",str+1);
	n=strlen(str+1);
	for(int i=1;i<=n;i++)
		str[i]-='0';
	for(int i=0;i<10;i++){
		for(int j=0;j<10;j++){
			ll tmp=0;
			solve(i,j);
			int t=0;
			for(int k=2;k<=n;k++){
				t=(str[k]-t+10)%10;
				if(f[t]==0x3f3f3f3f){
					tmp=-1;
					break;
				}
				tmp += f[t]-1;
				t=str[k];
			}
			ans[i][j]=tmp;
		}
	}
	for(int i=0;i<10;i++){
		for(int j=0;j<10;j++){
			printf("%lld ",ans[i][j]);
		}
		puts("");
	}
	return 0;
}

C. You Are Given a WASD-string…

传送门


Solution

模拟题……
如果不考虑新添加的那个字符的话。
答案只跟运动中的 x x x和 y y y的极大极小值有关。
为了方便描述,现在把这 4 4 4个量合称运动空间。
如果可以处理出前缀和后缀运动空间,那么就可以枚举在哪个位置放哪个字符,计算答案。
其实前缀是不需要保存的,因为可以在枚举过程中得到。
主要考虑后缀怎么处理,和如何把前缀和后缀合起来。
其实这都属于“如何把前缀和后缀合起来”这个问题。(处理后缀相当于这一步的运动空间和之后的运动空间的合成
假设我们已知前缀和后缀的运动空间和现在点位置在 ( x , y ) (x,y) (x,y)
那么只需要把后缀运动空间的4个量分别 + x +x +x或 + y +y +y,然后和前缀大的取大,小的取小,这实际上就是坐标系的变换。
然后就做完了……

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
typedef long long ll;
const int MAXN = 3e5;
char str[MAXN];
int n;
struct E{
	int mxx,mnx,mxy,mny;
	void init(){
		mxx=0;
		mnx=0;
		mxy=0;
		mny=0;
	}
	void update(int x,int y){
		mxx=max(mxx,x); mnx=min(mnx,x);
		mxy=max(mxy,y); mny=min(mny,y);		
	}
	E operator ^ (E b){
		E ret;
		ret.mxx = max(mxx,b.mxx);
		ret.mnx = min(mnx,b.mnx);
		ret.mxy = max(mxy,b.mxy);
		ret.mny = min(mny,b.mny);
		return ret;
	}
	ll getans(){
		ll ans =0;
		ans = ((ll)(mxx-mnx+1)) * ((ll)(mxy-mny+1));
		return ans;
	}
	E add(int x,int y){
		E ret = *this;
		ret.mxx+=x;	ret.mnx+=x;
		ret.mxy+=y; ret.mny+=y;
		return ret;
	}
	E trans(int x,int y){
		E ret = (*this);
		ret.update(x,y);
		return ret;
	}
};
E pre[MAXN],suf[MAXN];
void solve(){
	scanf("%s",str+1);
	n=strlen(str+1);
	int x=0,y=0;
	for(int i=0;i<=n+1;i++){
		pre[i].init();
		suf[i].init();
	}
	for(int i=1;i<=n;i++){
		if(str[i]=='W'){x++;}else if(str[i]=='S'){x--;}else if(str[i]=='A'){y--;}else{y++;}
		pre[i] = pre[i-1];
		pre[i].update(x,y);
	}
	
	for(int i=n;i>=1;i--){
		x=y=0;
		if(str[i]=='W'){x++;}else if(str[i]=='S'){x--;}else if(str[i]=='A'){y--;}else{y++;}
		suf[i].update(x,y);
		E tmp = suf[i+1].add(x,y);
		suf[i] = suf[i] ^ tmp;		
	}
	ll ans = 0x7fffffffffffffff;
	x=y=0;
	ans = min(ans,suf[1].getans());
	for(int i=1;i<n;i++){
		if(str[i]=='W'){x++;}else if(str[i]=='S'){x--;}else if(str[i]=='A'){y--;}else{y++;}
		E tmp=suf[i+1]; E cur;
		cur = pre[i].trans(x+1,y) ^ tmp.add(x+1,y);	ans = min(ans,cur.getans());
		cur = pre[i].trans(x-1,y) ^ tmp.add(x-1,y);	ans = min(ans,cur.getans());
		cur = pre[i].trans(x,y-1) ^ tmp.add(x,y-1);	ans = min(ans,cur.getans());
		cur = pre[i].trans(x,y+1) ^ tmp.add(x,y+1);	ans = min(ans,cur.getans());
	}
 
	printf("%lld\n",ans);
}
int main(){
	int T;
	scanf("%d",&T);
	while(T--)
		solve();
	return 0;
}

D. Print a 1337-string…

传送门


Solution

先考虑 133333...33337 133333...33337 133333...33337这样情况假设其中有 m m m个 3 3 3那么对答案的贡献就是 C m 2 C_{m}^{2} Cm2​
贪心地让 m m m取到尽可能大的值。
剩下的考虑如果再在第二个 3 3 3后面加 n n n个 7 7 7那么对答案的贡献就是 n n n。
于是剩下的就在第二个 3 3 3后面填上相应多个 7 7 7就好了。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(){	ll n;
	scanf("%lld",&n);
	printf("133");
 
	ll i;
	for(i=2;i;i++){
		if((i*(i+1)/2) > n){
			break;	
		}
	}
	n -= (i-1)*i/2;
	for(int j=1;j<=n;j++)putchar('7');
	for(int j=3;j<=i;j++)putchar('3');
	puts("7");
	ll tmp = 0;
	tmp += 3  + n + i - 1;
}
int main(){
	int T;
	scanf("%d",&T);
	while(T--)
		solve();
	return 0;
}

E. You Are Given Some Strings…

传送门


Solution

做这个题的时候被误导了一下,于是弱智的我写的后缀数组……
看看有时间再补个其他正常做法吧……

SA 做法

如果只考虑一个字符串匹配的话,可以想到把所有的字符串用特殊的字符连接然后建 S A SA SA
枚举每一个要匹配的字符串,在 S A SA SA数组上左右二分(这里需要 h e i g h t height height数组, s t 表 st表 st表),在二分出的区间上打上 + 1 +1 +1的标记(需要差分)。
打完标记之后扫一遍就可以处理出以主串每个位置开头就多少个匹配。
然后这个题要两个字符串拼起来,那就把每个字符串包括主串分别反过来按上面的套路连起来。
就可以处理出以主串每个位置结尾有多少匹配。
相邻的开头结尾乘一乘就好了

#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define dep(i,a,b) for(int i=a;i>=b;i--)
typedef long long ll;
const int MAXN = 7e5;
const int MAXM = 2e5+10;
struct ele{
	int id,x,y;	
};
int Bin[MAXN];
void sorty(ele *s,ele *bs,int len){
	rep(i,0,6e5+10)Bin[i]=0;
	rep(i,1,len)Bin[s[i].y]++;
	rep(i,1,6e5+10)Bin[i]+=Bin[i-1];
	dep(i,len,1)bs[Bin[s[i].y]--]=s[i];
	rep(i,1,len)s[i]=bs[i];
}
void sortx(ele *s,ele *bs,int len){
	rep(i,0,6e5+10)Bin[i]=0;
	rep(i,1,len)Bin[s[i].x]++;
	rep(i,1,6e5+10)Bin[i]+=Bin[i-1];
	dep(i,len,1)bs[Bin[s[i].x]--]=s[i];
	rep(i,1,len)s[i]=bs[i];
}
int count(ele *s,int len){
	ele tmp=s[1];
	int ret=0;
	s[1].x=++ret;
	rep(i,2,len){
		if(tmp.x==s[i].x&&tmp.y==s[i].y){
			tmp=s[i];
			s[i].x=ret;
		}else{
			tmp=s[i];
			s[i].x=++ret;
		}
	}
	return ret;
}
void sortid(ele *s,ele *bs,int len){
	rep(i,0,6e5+10)Bin[i]=0;
	rep(i,1,len)Bin[s[i].id]++;
	rep(i,1,6e5+10)Bin[i]+=Bin[i-1];
	dep(i,len,1)bs[Bin[s[i].id]--]=s[i];
	rep(i,1,len)s[i]=bs[i];
}
void build(int *s,int len,int *h,int *rk,int *sa){
	static ele SA[MAXN],BUF[MAXN];
	int k=1;
	rep(i,1,len){SA[i].id=i;SA[i].x=s[i];SA[i].y=0;}
	while(k<len){
		rep(i,1,len){
			if(i+k<=len){SA[i].y=SA[i+k].x;}
			else{SA[i].y=0;}
		}
		sorty(SA,BUF,len);
		sortx(SA,BUF,len);
		int tmp=count(SA,len);
		sortid(SA,BUF,len);
		if(tmp == len)
			break;
		k<<=1;
	}	
	rep(i,1,len){rk[i]=SA[i].x;sa[SA[i].x]=i;}
	k=0;
	rep(i,1,len){
		if(rk[i]==1)continue; 
		int j=sa[rk[i]-1];
		while(i+k<=len&&j+k<=len&&s[i+k]==s[j+k])k++;
		h[rk[i]]=k;
		if(k>0)k--;
	}
}
 
int n,tot,pos[MAXM],alpha,len,str1[MAXN],str2[MAXN],length[MAXN];
char buf[MAXM];
int f[MAXN],sa[MAXN],rk[MAXN],g[MAXN],g2[MAXN],h[MAXN],rmq[21][MAXN];
int getrmq(int l,int r){
	int t=(int)(log(r-l+1)/log(2));
	return min(rmq[t][l],rmq[t][r-(1<<t)+1]);
}
int main(){
	alpha='z'+2;
	scanf("%s",buf+1);
	len=strlen(buf+1);
	rep(i,1,len)str1[i]=str2[len-i+1]=(int)buf[i];
	tot=len+1;
	str1[tot]=str2[tot]=++alpha;
	scanf("%d",&n);
	rep(i,1,n){
		pos[i]=tot+1;
		scanf("%s",buf+1);
		int curLen=strlen(buf+1);
		length[i]=curLen;
		rep(j,1,curLen){
			str1[++tot]=(int)buf[j];
			str2[tot]=(int)buf[curLen-j+1];
		}
		str1[++tot]=++alpha;
		str2[tot]=alpha;
	}
	build(str1,tot,h,rk,sa);
	rep(i,1,tot)rmq[0][i]=h[i];
	rep(i,1,20)
		rep(j,1,tot){
			if(j+(1<<i)-1>tot)break;
			rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+(1<<(i-1))]);
		}
	rep(i,1,n){
		int p=pos[i];
		p=rk[p];
		int l=1,r=p-1,cur_ans=-1;
		while(l<=r){
			int mid=(l+r)>>1;
			if(getrmq(mid+1,p)>=length[i]){
				cur_ans=mid;
				r=mid-1;
			}else{
				l=mid+1;
			}
		}
		if(cur_ans==-1)
			cur_ans=p;
		f[cur_ans]++;
		l=p+1;r=tot;cur_ans=-1;
		while(l<=r){
			int mid=(l+r)>>1;
			if(getrmq(p+1,mid)>=length[i]){
				cur_ans=mid;
				l=mid+1;
			}else{
				r=mid-1;
			}
		}
		if(cur_ans==-1)
			cur_ans=p;
		f[cur_ans+1]--;
	}
	
	int tmp=0;
	rep(i,1,tot){
		tmp += f[i];
		f[i]=0;
		if(sa[i]<=len){
			g[sa[i]]=tmp;
		}
	}
	build(str2,tot,h,rk,sa);
	rep(i,1,tot)rmq[0][i]=h[i];
	rep(i,1,20)rep(j,1,tot){
		if(j+(1<<i)-1>tot)break;
		rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+(1<<(i-1))]);
	}
	rep(i,1,n){
		int p=pos[i];
		p=rk[p];
		int l=1,r=p-1,cur_ans=-1;
		while(l<=r){
			int mid=(l+r)>>1;
			if(getrmq(mid+1,p)>=length[i]){
				cur_ans=mid;
				r=mid-1;
			}else{
				l=mid+1;
			}
		}
		if(cur_ans==-1)
			cur_ans=p;
		f[cur_ans]++;
		l=p+1;r=tot;cur_ans=-1;
		while(l<=r){
			int mid=(l+r)>>1;
			if(getrmq(p+1,mid)>=length[i]){
				cur_ans=mid;
				l=mid+1;
			}else{
				r=mid-1;
			}
		}
		if(cur_ans==-1)
			cur_ans=p;
		f[cur_ans+1]--;
	}
	tmp=0;
	rep(i,1,tot){
		tmp += f[i];
		f[i]=0;
		if(sa[i]<=len){
			g2[len-sa[i]+1]=tmp;
		}
	}
	ll ans=0;
	rep(i,1,len-1){
		ans+=(ll)g2[i]*g[i+1];
	}	
	printf("%lld",ans);
	return 0;
}
CXL技术入门:从PCIe到高性能计算的桥梁(附最新2.0协议解析) 本文深入解析CXL技术如何作为PCIe的进化版,成为高性能计算的关键桥梁,特别聚焦CXL 2.0协议的关键升级。从技术架构、三大子协议到典型应用场景,全面介绍CXL在缓存一致性、内存共享等方面的优势,帮助开发者快速掌握这一前沿技术。 阅读详情

相关推荐

FFmpeg实战:5分钟搞定m3u8视频下载与ts文件合并(附完整命令)

本文详细介绍了如何使用FFmpeg快速下载m3u8视频并合并ts文件为mp4格式。通过简洁的命令行操作,读者可以轻松完成视频处理任务,包括环境准备、链接获取、下载合并及性能优化等实用技巧,特别适合需要高效处理流媒体内容的用户。

weixin_30836759的博客 221

Educational Codeforces Round 70 (Rated for Div. 2)

Educational Codeforces Round 70 (Rated for Div. 2) 题目链接 A. You Are Given Two Binary Strings... 注意到乘以一个\(2^k\)就相当于将二进制左移\(k\)位,然后贪心匹配就行了:找到\(t\)串最后一个\(1\)的位置,然后尽可能地去匹配\(s\)串后面的\(1\)。 Code #includ...

dft539533的博客 241

量化交易如何利用涨停板策略收割散户

量化交易通过算法筛选特定特征的股票,在早盘建立底仓后,利用大单拉升制造抢筹假象,吸引散户跟风买入。这种策略利用了散户的认知偏差,如锚定效应和从众心理,导致次日低开闷杀。从技术实现来看,量化策略通过控制买入量、隐藏真实意图等手段,精准执行隔日砸策略。对于短线交易者而言,理解量化资金的运作逻辑和识别危险涨停板的特征至关重要,这包括观察封板时间、盘口挂单、量价关系等多维度数据。在算法主导的市场中,散户需要升级交易工具和策略,从预测走势转向应对走势,才能避免成为量化策略的牺牲品。

weixin_33046983的博客 288

Educational Codeforces Round 70 (Rated for Div. 2) A.B.C.D

A. You Are Given Two Binary Strings... 找出第二个串最后一个1的位置 在第一个串的这个位置及之前找 第一个1的位置,两个位置相减就是答案 #include<bits/stdc++.h> using namespace std; int main() { int t; for(cin>>t; t; t--){ string...

OOOak 743

新能源充电桩充电枪口标准

建立的标准确保了新能源汽车充电的安全性、兼容性和效率,促进了新能源汽车产业的发展。

网络安全的研究者、新能源行业的追求者 4689

Qt 【window udp 高频采集丢包问题】

使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。

weixin_45397344的博客 177

Educational Codeforces Round 70 (Rated for Div. 2) D. Print a 1337-string...

https://codeforces.com/problemset/problem/1202/D 题意:给出n,构造一个长度不超过1e5的串,仅由1, 3, 7组成,使得其为1337的子序列数量恰好为n。 思路:很妙,如果只是单独构造1或7的数量会超过1e5;如果只构造1和7那就会很麻烦;所以我们构造3,很容易知道如果构造出k个3,那么就可以存在k * (k - 1) / 2个1337,n最大为1e9,所以我们可以暴力枚举求出最接近且不超过n的k,剩下的用1来凑,然后答案就形如——133333…1111…3

qq_45664326的博客 215

开发Qt上位机获取阿里云IOT设备数据(开发上位机对接阿里云IOT平台)

使用Qt框架开发一款上位机软件,调用阿里云物联网平台的API接口,获取设备最新上传的实时数据,并在Qt设计的软件界面上展示处理。同时,还支持绘制曲线图表展示数据,并具备定时刷新功能。

2143

Educational Codeforces Round 70 (Rated for Div. 2) B D

ORZ #include <iostream> #include <string> #include <algorithm> #define llint long long #define inf 1000000000000000000 using namespace std; string s; llint cnt[15]; llint cost[15];...

Y_is_sunshine的博客 365

(2)NPW(监控片)【中】---业务场景精讲

自己在日常工作当中,由于非产线人员出生,对NPW的知识一直一知半解,业务场景认识的不够透彻,做系统的时候很难理解甲方的NPW业务应用,特收集了不少关于NPW的一些业务场景,下面都是一些摘抄,大家关注我标红标粗的部分,

阿拉伯梳子的专栏 1588

RT-DETR改进策略【小目标改进】| Shape-NWD:融合改进,结合Shape-IoU和NWD 更好地适应小目标特性

Bw−wgt2h−hgt2weight2Bweight2w−wgt​2h−hgt​2​其中weight2weight = 2weight2。

Limiiiing的博客 1544

Educational Codeforces Round 69 (Rated for Div. 2)

A. DIY Wooden Ladder 排个序,最长的两根作梯子的腿,然后答案就是 剩余梯子的个数,梯子腿长度-1。 #include <bits/stdc++.h> #define ll long long using namespace std; const ll mod = 1e9 + 7; int a[100005]; int main() { int T; sca...

JZK-Keven 的博客 778

流体仿真软件:COMSOL Multiphysics二次开发_(3).流体仿真基础理论

流体仿真基础理论包括流体的基本性质、流体运动方程、边界条件、初始条件、湍流模型和网格生成等。在使用COMSOL Multiphysics进行流体仿真时,正确设置这些参数和条件是获得准确仿真结果的关键。通过实际应用案例,可以更好地理解如何在COMSOL中进行流体仿真,并提取和分析仿真结果。希望本文对流体仿真初学者和从业人员有所帮助。

kkchenjj的博客 1341

Educational Codeforces Round 181 (Rated for Div. 2)题解

思路:我们直接去遍历字符串s,如果没有出现FFT和NTT就直接输出原字符串,否则就是将所有T移动到整个字符串的前面思路:我们直接去求dx与dy的gcd,然后用dx和dy都去除以gcd,剩下的就是要走的步数,如果有一个要是大于k,那么就要再额外+1的成本思路:由分解质因数可以知道,一个数可以由p个质数的pi次方组成,因此如果我们想要拆分没有1位数的质数,那么就应当将是1位数质数的倍数去掉,然后直接用容斥原理很容易就做出来了。

2301_80475191的博客 596

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Educational Codeforces Round 173 (Rated for Div. 2)

这是一道简单题,直接贪心即可代码如下。

disliked的博客 397

Educational Codeforces Round 70 (Rated for Div. 2) 题解

比赛链接:https://codeforc.es/contest/1202   A. You Are Given Two Binary Strings... 题意:给出两个二进制数\(f(x)\)和\(f(y)\),定义一个二进制数\(s_k=f(x)+2^k\cdot f(y)\),询问\(k\)取何值时\(s_k\)的反向字符串(将二进制数看作01串)字典序最小。 分析:首先,我们需...

weixin_30901729的博客 244

【Educational Codeforces Round 60 (Rated for Div. 2)】 A B C D E

A 题意 给你一个平均数的定义 问你最长的平均数区间是啥 一开始想复杂了 后来biubiubiu提醒说是找一个最大的数 你向左右蔓延找到一个最长的连续区间并且满足区间内的数都是该最大值即可 #include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;iostream&gt; #include &lt;queue&gt; #in...

我是谁 --- 卡比兽 217

Educational Codeforces Round 69 (Rated for Div. 2) A B C D

Educational Codeforces Round 69 (Rated for Div. 2) A #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5+100; int t; int n; int a[N]; int main(){ ...

weixin_30456039的博客 89

Educational Codeforces Round 50 (Rated for Div. 2)的A、B、C三题AC代码

A题链接:https://codeforces.com/contest/1036/problem/A A题AC代码: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <math.h> ...

u25th_engineer的博客 164

Educational Codeforces Round 70 (Rated for Div. 2) - D. Print a 1337-string

链接 :http://codeforces.com/contest/1202/problem/D D. Print a 1337-string... time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output The ...

aeowuguozhi的博客 223

Educational Codeforces Round 70 (Rated for Div. 2) C. You Are Given a WASD-string...(线段树)

题目链接 http://codeforces.com/contest/1202/problem/C 题目描述 You have a stringss— a sequence of commands for your toy robot. The robot is placed in some cell of arectangulargrid. He can perform four ...

Megurine_Luka_的博客 470

Educational Codeforces Round 83 (Rated for Div. 2) A~~E

A 水题 #include<bits/stdc++.h> using namespace std; int main(){ int t; cin>>t; while(t--){ int n,m; cin>>n>>m; if(n % m==0) cout<<"YES"<<endl; else cout<&...

PengWei Yang 236

Educational Codeforces Round 139 (Rated for Div. 2)题解

以上19种情况,一位和二位去满各有九种情况,三位只能取一种情况,所以共19种。只要有两个相同的两位子串,就说明可以用小于n次操作将字符串输入。然后通过差值寻找答案即可,当差值为k的时候,长度一定是k的因数。这里的话,我们将每一纵坐标标记为三种状态,状态1(2), 偶数个状态3,状态2(1)状态1(2), 偶数个状态3,状态1(2)有且仅有两者差值为1的时候,链可以无限长。,满足题目要求的情况有。当n为3位数时,例如。

Kicamon的博客 984

n=C(2,n)+k(构造)( Print a 1337-string)Educational Codeforces Round 70 (Rated for Div. 2)

题目链接:https://codeforc.es/contest/1202/problem/D 题意: 给你一个数 n ( <=1e9 ),让你构造137713713.....(只含有1,3,7)的字符串使不同1337的子序列个数为n,而构造出来的字符串不能很长( <= 1e5)。 思路: 这类构造题肯定是要先固定一种方式,我尝试了以 C(2,a)+C(2,b)+C(...

dgv22747的博客 189
上一篇: CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)
下一篇: 演讲:Why we need reading
Kvrmnks
博客等级 码龄14年 17粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值