组合数zxy

$ C_n^m zxy $

 ​​​​​​UNIQUE VISION Programming Contest 2022 Winter(AtCoder Beginner Contest 283)

Event Time Announcer


 

快速幂,写挂了。

看到这个题的第一眼,我就知道我输了。zxy拥有一套强大的代码模板。他只需要输出power(a,b)即可。 他有这么nb,怎么不把线段树平衡树红黑树手写队列栈双端队列大小根堆树状数组可持久化并查集可持久化线段树梅滕斯函树全部写到他的模板里呢?。

最终去qoj上找了我快速幂的代码,发现没写if(b&1)。

4分54秒。A。

#include<bits/stdc++.h>
#include<iostream>
#include<ctime>
#include<cstdlib> 
using namespace std;
int getrand(int min,int max){
    return (rand()%(max-min+1))+min;
}
long long power(long long a,long long b){
	if(a==0)return 0;
	long long ans=1;
	while(b){
		if(b&1)ans=ans*a;
		a=a*a;
		b>>=1;
	}
	return ans;
} 
int main(){
	srand(time(0));
	int a,b;
	cin>>a>>b;
	long long ans=power(a,b);
	cout<<ans<<endl; 
	return 0; 
}

不会TLE的。

#include<bits/stdc++.h>
using namespace std;
int a[100005],n,q;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	cin>>q;
	int node,k,x;
	while(q--){
		cin>>node;
		if(node==1){
			cin>>k>>x;
			a[k]=x;
		}else{
			cin>>k;
			cout<<a[k]<<endl; 
		}
	}
	return 0; 
}

 

要用string。数成对出现的0的个数,再用总位数减去。

#include<bits/stdc++.h>
using namespace std;
string s;
int main(){
	cin>>s;
	long long ans=s.size();
	bool flag=0;
	for(int i=0;i<s.size();i++){
		if(flag){
			if(s[i]=='0')ans--;
			flag=0;
		}else{
			if(s[i]=='0')flag=1;
		}
	}
	cout<<ans<<endl;
	return 0; 
}

顺便提一句,这场的C和D用了翻译。金山词霸。我不建议去挂梯子用更好的翻译,很麻烦,没必要。一般英语有初二水平的OIer都可以借助国内大众的翻译平台看懂题目(除非qq邮箱自带翻译的那种太垃圾的)。要多练习自己的英语读题能力。如果用词霸这种翻译出来都不能看懂,就应该反思自己了。 最好要做到整场都不用翻译。

本来呢,放的是图片,应当给出翻译。但我实在懒得了。不太想再复述题面了。上面有比赛链接,您可以自行找到题目进行翻译。我就不把词霸翻译放出来恶心您了。(金山词霸的翻译怎么了?您可以试试)

好吧,这一看就是括号序列。

这时候,肥不拉几的zxy拖着他的脸皮过来了。

 

我自闭了。

 

 

 

然后我又开始仔细思考。许久,又遇到了一些问题。

 

是的,我懂了。

我们并不需要把字母和括号弄成一个东西。也许,我最开始想要把他们弄在一起,是觉得删除操作不方便。但我想通了。

我们准备好一个栈,和一个用于记录字母现在是否存在的数组,我们叫他dp数组。dp我这里直接开了两百,我并不记得ascii的编号了。 当然,您想用map也可以。

我们对这个表达式进行扫描。如果s[i]=='(',压入栈中;如果s[i]是字母,且目前这个字母不存在,则压入栈中,并对他进行标记;若存在,无疑高桥先生会晕倒。如果s[i]==')',我们便进行消除操作。在栈中不断弹出字母,直到碰上一个'(',最后把他也弹出。弹出字母时,要记得清除标记。最后遍历完没有问题,直接输出yes。

#include<bits/stdc++.h>
#include<stack>
using namespace std;
stack<char>s;
string fckzxy;
int dp[200];
int main(){
	cin>>fckzxy;
	for(int i=0;i<fckzxy.size();i++){
		if(fckzxy[i]=='(') s.push('(');
		else{
			if(fckzxy[i]==')'){
				while(s.top()!='('){
					dp[(int)s.top()]--;
					s.pop();
				}
				s.pop();
			}else{
				if(!dp[(int)fckzxy[i]]){
					s.push(fckzxy[i]);
					dp[(int)fckzxy[i]]++;
				}else{
					cout<<"No"<<endl;
					return 0;
				}
			}
		}
	}
	cout<<"Yes"<<endl;
	return 0; 
}

这道模拟,无论怎么说,作为D,还是很水的。以前D都考些什么?都是要用上算法的。

zex听说我切D了,高兴极了。他之前骂着我usaco铜组爆零太离谱了,但我觉得那题很难的。反正我不会。这个D,要是没过,才是真离谱。

 

e。我AT毕竟从来都是灰名,从来没有像cf那样注重名利。很多人说的,什么新号有加持,可以上大分,打垃了不好上分什么的,在我这个AT号上从来就是浮云一样的存在。现在如果有人问我我最喜欢的号,我会说,我的AT号。

而我以前是只切A的人,心情好切B。到现在D也可以了,可能确实比较令人惊喜吧。


$C_n^m,zxy$ 

15min。

在搞笑吗。

大家不要学zxy。要像我一样,一遍就做对。

 

however,abc四题快乐。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值