2016 CCPC东北赛区 简单三少(proA+proC+proE)

本文解析了三道经典的思维题,包括最小生成树问题、区间端点表达式问题及格子消除游戏。通过深入分析,提供了简洁的算法实现,帮助读者理解并掌握解题思路。

A Minimum’s Revenge HDU - 5922(思维题)

给你一棵树,有n个节点,编号从1~n,每两个节点之间都有一条边权值为两个节点编号的最小公倍数。问最小生成树的权值和为多少?

简单题,最小公倍数是本身,即最小生成树为和(除1以外)

#include<cstdio>
typedef long long ll;

int main(){
	int T,t=1;
	scanf("%d",&T);
	ll n;
	while(T--){
		scanf("%lld",&n);
		printf("Case #%d: %lld\n",t++,n*(n+2)/2-1);
	}
	return 0;
} 

C Mr. Frog’s Problem HDU - 5924(思维题)

给两个数A,B,找到所有的C,D满足其表达式

由于A,B是区间的两个端点,所以A/B + B/A 已经就是最大值了。

所以当A=B 时答案就是A,B;当不相等时,答案为A,B和B,A

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;

int main(){
	int T,t=1;
	ll x,y;
	scanf("%d",&T);
	while(T--){
		scanf("%lld %lld",&x,&y);
		printf("Case #%d:\n",t++);
		if(x>y) swap(x,y);
		if(x==y){
			printf("1\n%lld %lld\n",x,y);
		}	
		else {
			printf("2\n%lld %lld\n",x,y);
			printf("%lld %lld\n",y,x);
		}
	}
	return 0;
}

E Mr. Frog’s Game HDU - 5926(思维题)

相同的格子只有相连或者在同一台边上的才能消掉,问图中是否有能消掉的格子。

判断边上和内部即可。

#include<cstdio>
int a[35][35];

int main(){
	int T,n,m,t=1;
	scanf("%d",&T);
	while(T--){
		scanf("%d %d",&n,&m);
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++)
				scanf("%d",&a[i][j]);
		}
		int cnt=0;
		for(int i=0;i<m;i++) //第一行
			for(int j=i+1;j<m;j++)
				if(a[0][i]==a[0][j])
					cnt++; 
		for(int i=0;i<m;i++) //最后一行
			for(int j=i+1;j<m;j++)
				if(a[m-1][i]==a[m-1][j])
					cnt++; 
		for(int i=0;i<n;i++) //第一列 
			for(int j=i+1;j<n;j++)
				if(a[i][0]==a[j][0])
					cnt++; 
		for(int i=0;i<n;i++) //最后一列 
			for(int j=i+1;j<n;j++)
				if(a[i][n-1]==a[j][n-1])
					cnt++; 	
					
		if(cnt>0)
			printf("Case #%d: Yes\n",t++);
		else{
			for(int i=0;i<n;i++)
				for(int j=0;j<m;j++)
					if(a[i][j]==a[i+1][j]||a[i][j]==a[i][j+1])
						cnt++;
			if(cnt>0)
				printf("Case #%d: Yes\n",t++);
			else
				printf("Case #%d: No\n",t++);
		}
	}
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值