C. Anadi and Domino
2024-09-01 08:20:27
C. Anadi and Domino
题目链接:http://codeforces.com/contest/1230/problem/C
time limit per test:
2 seconds
memory limit per test:
256 megabytes
input:
standard input
output:
standard output
题目大意:
两个骰子可以进行组合,第一个大于等于第二个骰子,每个骰子6种情况所以一共有21中图形。给一个无向图,向边上放置上述图形,要求可以有的边上没有骰子,并且边上的骰子一部分对着一个点,要求对着一个点的所有骰子的点数相同。输出可以放置图形的最大值。
思路:
暴力列举出所有的点的临近部分骰子的点数,然后进行判断,在每种情况下有多少个边上可以放置两个骰子组成的图形。然后输出最大值。
代码:
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int > P;
const int N=;
int vis[N][N];
int arr[N];
int n,m,a,b,ans=,cnt=;
P mp[N];
void check(){
int u,v;
memset(vis,,sizeof(vis));
cnt=;
for(int i=;i<m;i++){
u=arr[mp[i].first];
v=arr[mp[i].second];
if(u>v){
swap(u,v);
}
if(vis[u][v]==){
vis[u][v]=;
cnt++;
}
}
ans=max(cnt,ans);
} void dfs(int a){
if(a==n+){
check();
return ;
}
for(int i=;i<=;i++){
arr[a]=i;
dfs(a+);
}
}
int main(){
memset(mp,,sizeof());
memset(vis,,sizeof());
cin>>n>>m;
for(int i=;i<m;i++){
scanf("%d%d",&a,&b);
mp[i]={a,b};
}
dfs();
cout<<ans<<endl;
return ;
}
另一种思路:
当n<7时有多少个边就有多少个dominoes,因为每个点与点之间都可以相连,并且不会使用同一个dominoes。当等于7时,必定有一个是重复的。
解析:https://blog.csdn.net/qq_38946354/article/details/101271185
最新文章
- Linux中的历史命令
- HTML5中判断横屏竖屏
- [Android]使用RecyclerView替代ListView(二)
- 分享一个点赞超过100的漂亮ASP.NET MVC蓝色界面框架
- 原生JS获取各种高度宽度、浏览器窗口滚动条的位置、元素的几何尺寸名
- 什么是iis服务器
- Smart Forms&;ScriptFrom
- appserv安装
- RESTheart安装与设置
- eclipse 配置Maven问题解决办法:新建maven工程时报错:Could not resolve archetype org.apache.maven.archetypes .
- UINavigationController 导航控制器 ,根据文档写的一些东西
- 简单运用 activity 的 button 点击事件
- ubuntu14.04中 gedit 凝视能显示中文,而source insight中显示为乱码的解决的方法
- 关于Console控制台输出的玩法
- python爬虫从入门到放弃(九)之 实例爬取上海高级人民法院网开庭公告数据
- CSS样式----盒子模型(图文详解)
- bzoj2442[Usaco2011 Open]修剪草坪 单调队列优化dp
- A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse.
- vmware虚拟机安装vmware tools
- spring cloud+.net core搭建微服务架构:服务发现(二)