Educational Codeforces Round 132 (Rated for Div. 2)+Codeforces Round #810 (Div. 2)

A. Three Doors

平平无奇的一个模拟水题,经常考下标的知识。



    #include <bits/stdc++.h>
    using namespace std;
    int a[3];
    int main(){
    	int t;
    	cin>>t;
    	while(t--){
    		int x;
    		cin>>x;
    		for(int i=1;i<=3;i++)
    			cin>>a[i];
    	if(a[x]==0) {printf("NO\n");} 
        else if(a[a[x]]==0) {printf("NO\n");}
    	else printf("YES\n");
    		
    	}
    }

B 多次询问,有条件的前后前缀和+差分,即可求得

数据范围,记得long long

    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    ll a[100010];	
    int n,m;
    ll d1[100010],d2[100010];
    void solve(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++) cin>>a[i];
    	 for(int i=1;i<=n;i++) {
    	 	d1[i]=d1[i-1];
    	 	if(a[i]<a[i-1]) d1[i]+=a[i-1]-a[i];
    	 }
    	 for(int i=n;i>=1;i--){
    	 	d2[i]=d2[i+1];
    	 	if(a[i]<a[i+1]) d2[i]+=a[i+1]-a[i];
    	 	
    	 }
    	 	while(m--){
    	 		int x,y;
    	 		cin>>x>>y;
    	 		if(x<y) cout<<abs(d1[y]-d1[x])<<endl;
    	 		else cout<<abs(d2[x]-d2[y])<<endl;
    	 		
    	 	}
    }
    int main(){
    	int t=1;
    	while(t--){
    		solve();
    	}
    	
       return 0;
    }

C 括号匹配问题,尽量让左边都是左括号,右边都是右括号,找到临界值进行判断。

    #include <bits/stdc++.h>
    using namespace std;
    const int N=2e5+10;
    #define  ll long long
    char a[N];
    int s[N];
    void solve(){
        cin>>a+1;
    	int len=strlen(a+1);
    	int tot=0,id=0;
    	for(int i=1;i<=len;i++){
    		if(a[i]=='(') tot++;
    		if(a[i]==')') tot--;
    		if(a[i]=='?') s[++id]=i;
    		
    	}
    	if(tot==id||id==-tot){
    		printf("YES\n");
    		return;
    	}
    	int mid=(id-tot)/2;
    	for(int i=1;i<mid;i++) a[s[i]]='(';
    	for(int i=mid;i<=id;i++) a[s[i]]=')';
    	a[s[mid+1]]='(';
    	tot=0;
    	bool ans=0;
    	for(int i=1;i<=len;i++){
    	if(a[i]=='(')tot++;
    	else tot--;
    	if(tot<0){
    		ans=1;
    		break;
    		
    	}	
    	}
    	if(ans) printf("YES\n");
    	else printf("NO\n");
    }
    int main(){
    	int t;
        scanf("%d",&t);
    	while(t--){
    		solve();
    	}
    	
    }

A 一道贪心而已,先输出这个数,然后每个数都会无法整除,最小为1

    #include <bits/stdc++.h>
    using namespace std;
    void solve(){
    	int x;
    	cin>>x;
    	cout<<x<<" ";
    	for(int i=1;i<x;i++) cout<<i<<" ";
    	cout<<endl;
    }
    int main(){
    	int t;
    	cin>>t;
    	while(t--){
    		solve();
    	}
    }

B题

建图,然后分情况考虑。首先m为偶数的时候,那么把需要的人邀请过来即可,不开心为0;

如果m为奇数,那么一定至少少一对朋友,可以少一个人,也可以少两个人,少两个人的情况直接两层遍历,少一个人的情况:如果这个人为偶数对关系,那么剩下的是奇数对关系,将这个人的值和剩下的奇数对关系的值比较即可。

    #include <bits/stdc++.h>
    using namespace std;
    vector<long long >a[100100];
    long long  b[100100];
    int t;	int n,m;	int x,y;
    int main(){
     
    	cin>>t;
    	while(t--){
    	cin>>n>>m;long long ans=0;
    	for(int i=1;i<=n;i++) a[i].clear();
    	for(int i=1;i<=n;i++) {
    		cin>>b[i];
    		ans+=b[i]; 
    	}
    for(int i=1;i<=m;i++){
    		
    			cin>>x>>y;
    			a[x].push_back(y);
    			a[y].push_back(x);
    			
    }
     
     
    	if((m%2)==0) {
    		cout<<"0"<<endl;
    	}
    	
        else{
      	    for(int i=1;i<=n;i++){
    	  	if(a[i].size()%2) ans=min(ans,b[i]);
    	  	
    	  }
    	  for(int i=1;i<=n;i++){
    	  	for(int j=0;j<a[i].size();j++){
    		  	int u=a[i][j];
    		  	ans=min(ans,b[i]+b[u]);
    		  }
    	  }
    	  cout<<ans<<'\n';
      }
    }
    	return 0;
    }

从这里书写我的奇迹。

"educational codeforces round 103 (rated for div. 2)"是一个Codeforces平台上的教育性比赛,专为2级选手设计评级。以下是有关该比赛的回答。 "educational codeforces round 103 (rated for div. 2)"是一场Codeforces平台上的教育性比赛。Codeforces是一个为程序员提供竞赛和评级的在线平台。这场比赛是专为2级选手设计的,这意味着它适合那些在算法和数据结构方面已经积累了一定经验的选手参与。 与其他Codeforces比赛一样,这场比赛将由多个问题组成,选手需要根据给定的问题描述和测试用例,编写程序来解决这些问题。比赛的时限通常有两到三个小时,选手需要在规定的时间内提交他们的解答。他们的程序将在Codeforces的在线评测系统上运行,并根据程序的正确性和效率进行评分。 该比赛被称为"educational",意味着比赛的目的是教育性的,而不是针对专业的竞争性。这种教育性比赛为选手提供了一个学习和提高他们编程技能的机会。即使选手没有在比赛中获得很高的排名,他们也可以从其他选手的解决方案中学习,并通过参与讨论获得更多的知识。 参加"educational codeforces round 103 (rated for div. 2)"对于2级选手来说是很有意义的。他们可以通过解决难度适中的问题来测试和巩固他们的算法和编程技巧。另外,这种比赛对于提高解决问题能力,锻炼思维和提高团队合作能力也是非常有帮助的。 总的来说,"educational codeforces round 103 (rated for div. 2)"是一场为2级选手设计的教育性比赛,旨在提高他们的编程技能和算法能力。参与这样的比赛可以为选手提供学习和进步的机会,同时也促进了编程社区的交流与合作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值