3280 easyfinding
给一个M 行N 列的01 矩阵,让你选出一些行 (不一定选出全部行)使得每一列都有
且只有一个1。其中M<= 16,N<=300 。
输入含有多组数据。以文件结束符(eof )为结束。最多会有500 组。
输入之间会有梯度,也就是不是每组输入都是500 组。
对每组数据,第一行:两个由空格隔开的整数M 和N 。然后是M 行每行N 个等于0
或者等于1 的整数,整数之间由空格隔开。
对每组数据输出一行,如果可以达到题中要求,输出Yes 否则输出No 。均不包括引号。
3 3
0 1 0
0 0 1
1 0 0
4 4
0 0 0 1
1 0 0 0
1 1 0 1
0 1 0 0
Yes
No
注意时间复杂度
分类标签 Tags 点此展开
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int map[][];
int n,m;
void dfs(){
int flag=;
for(int i=;i<=m;i++)
for(int j=i;j<=m;j++){
for(int k=;k<=n;k++){
int num=map[j][k]-map[i-][k];
if(num!=) break;
if(k==m){flag=;printf("Yes\n");return ;}
}
}
if(!flag) printf("No\n");
}
int main(){
while(scanf("%d%d",&m,&n)==){
memset(map,,sizeof map);
for(int i=,x;i<=m;i++){
for(int j=;j<=n;j++){
scanf("%d",&x),map[i][j]=map[i-][j]+x;
}
}
dfs();
}
return ;
}
正解AC代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define N 310
struct node{
int vis[N];
}a[N];
int n,m,head,tail,flag;
int v[][N];
int ok(int x){//验证
for(int i=;i<=m;i++)
if(!a[x].vis[i])return ;
return ;
}
void bfs(){
while(head<=tail){//不明确第一个状态,so"<="
if(head>*n) return ;//防止死循环
for(int i=;i<=n;i++){
++tail;
for(int j=;j<=m;j++)//回溯
a[tail].vis[j]=a[head].vis[j];
int ff=;
for(int j=;j<=v[i][];j++)
if(a[tail].vis[v[i][j]]){//有1 - 不满足
ff=;break;
}
if(!ff){
for(int j=;j<=v[i][];j++)
a[tail].vis[v[i][j]]=;//更新vis
if(ok(tail)){
flag=;
printf("Yes\n");
return ;
}
}
else
tail--;//当前不满足,回溯
}
head++;
}
}
int main(){
while(scanf("%d%d",&n,&m)==){
memset(a,,sizeof a);
memset(v,,sizeof v);
for(int i=,x;i<=n;i++){
for(int j=;j<=m;j++){
scanf("%d",&x);
if(x) v[i][++v[i][]]=j;//模拟动态数组,v[i][++v[i][0]]=j;记录第i行第v[i][0]个1的列号j
}
}
head=;tail=;flag=;
bfs();
if(!flag) printf("No\n");
}
return ;
}
3280 easyfinding的更多相关文章
- easyfinding(codevs 3280)
3280 easyfinding 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 给一个M 行N 列 ...
- poj 3280 Cheapest Palindrome
链接:http://poj.org/problem?id=3280 思路:题目给出n种m个字符,每个字符都有对应的添加和删除的代价,求出构成最小回文串的代价 dp[i][j]代表区间i到区间j成为回文 ...
- 【BZOJ】【3280】小R的烦恼
网络流/费用流 和软件开发那题基本相同,只是多加了一个“雇佣研究生”的限制:不同价格的研究生有不同的数量…… 那么只需加一个附加源点,对每一种研究生连边 S->ss 容量为l[i],费用为p[i ...
- BZOJ 3280: 小R的烦恼 & BZOJ 1221: [HNOI2001] 软件开发
3280: 小R的烦恼 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 399 Solved: 200[Submit][Status][Discuss ...
- POJ 3280 Cheapest Palindrome(DP 回文变形)
题目链接:http://poj.org/problem?id=3280 题目大意:给定一个字符串,可以删除增加,每个操作都有代价,求出将字符串转换成回文串的最小代价 Sample Input 3 4 ...
- poj 3280 Cheapest Palindrome ---(DP 回文串)
题目链接:http://poj.org/problem?id=3280 思路: dp[i][j] :=第i个字符到第j个字符之间形成回文串的最小费用. dp[i][j]=min(dp[i+1][j]+ ...
- (中等) POJ 3280 Cheapest Palindrome,DP。
Description Keeping track of all the cows can be a tricky task so Farmer John has installed a system ...
- POJ 3280 - Cheapest Palindrome - [区间DP]
题目链接:http://poj.org/problem?id=3280 Time Limit: 2000MS Memory Limit: 65536K Description Keeping trac ...
- POJ 3280 Cheapest Palindrome(区间DP求改成回文串的最小花费)
题目链接:http://poj.org/problem?id=3280 题目大意:给你一个字符串,你可以删除或者增加任意字符,对应有相应的花费,让你通过这些操作使得字符串变为回文串,求最小花费.解题思 ...
随机推荐
- rails generate model/resource/scaffold的区别
If you’re just learning Ruby on Rails, you may be confused as to when to generate individual models, ...
- Django——META内部类选项
Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract 这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会对应 ...
- ScrollView反弹效果
public class BounceScrollView extends ScrollView { private View inner;// 孩子View private float y;// 点 ...
- 简单模拟Spring的注入
主要就是读XML技术和反射技术. 在xml中读出相关配置信息,然后利用反射将其实例化为对象,并调用其构造方法,在实例化的过程中将属性注入实例. 实例化和属性注入这些操作都交给了框架,不再需要自己的去n ...
- <转>大白菜的后门
转自360论坛
- radiusd cisco限速问题
http://puck.nether.net/pipermail/cisco-bba/2011-February/001349.html
- asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(一)—— 手把手教你创建第一个三层架构+mvc的asp.net项目
下面开启项目 1. 打开vs2010-文件-新建项目 2. 先创建一个空的解决方案: 选择其他项目类型-visual studio 解决方案-空白解决方案(默认.NET Framework 4),项目 ...
- internet与Internet的区别
internet是用一个共同的协议族把多个网络连接在一起.而Internet指的是世界范围内通过TCP/IP互相通信的所有主机集合(超过1 0 0万台).Internet是一个internet,但in ...
- springboot学习(四) 日志管理
1.简介 Spring Boot内部日志系统使用的是Commons Logging,但开放底层的日志实现.默认为会Java Util Logging, Log4J, Log4J2和Logback提供配 ...
- svn Couldn't open rep-cache database
出现这样的错误原因是因为 问题一 开始出现错误:The database disk image is malformed 解决方案:http://www.cnblogs.com/chen110xi/p ...