洛谷P1074:靶形数独(搜索、剪枝)
解析
搜索题都是玄学
本题暴搜人人都会写,关键是如何剪枝
我一直在最优性剪枝上纠结qwq
但仔细想想,不同方案的权值差别没有那么大
再加上剪枝时不可避免的要放弃一些准确度
所以最优性剪枝在本题可能确实没有太大的作用
考虑我们平时如何玩数独
肯定是先从东西少的地方开始搜啦!
然后放到代码上试试…
诶?怎么切了?
我们理性的分析一下
可能有一些各自由于自己行已经填的东西所以几乎已经确定了
然而如果先搜其他行可能会在一个与本来可以确定的地方矛盾的搜索树上走的太深
所以我们先确定能确定的再搞剩下的会大大加速
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define debug(a,b) fprintf(stderr,a,b)
const int N=1e5+100;
const int M=2e5+100;
const int mod=998244353;
const double eps=1e-8;
inline ll read(){ll x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}
int a[11][11] = {{0,0,0,0,0,0,0,0,0,0,0},{0,6,6,6,6,6,6,6,6,6,0},{0,6,7,7,7,7,7,7,7,6,0},{0,6,7,8,8,8,8,8,7,6,0},{0,6,7,8,9,9,9,8,7,6,0},{0,6,7,8,9,10,9,8,7,6,0},{0,6,7,8,9,9,9,8,7,6,0},{0,6,7,8,8,8,8,8,7,6,0},{0,6,7,7,7,7,7,7,7,6,0},{0,6,6,6,6,6,6,6,6,6,0},{0,0,0,0,0,0,0,0,0,0,0}
};
bool hang[10][10],lie[10][10],d[10][10],num[10];
int mp[10][10],tot;
#define bel(a,b) ((a-1)/3*3+(b-1)/3+1)
int now,ans;
struct node{int x,num;
}p[10];
bool cmp(node a,node b){return a.num>b.num;}
int id[10][10],cnt[10];
void dfs(int k,int x,int o){if(k>9){ans=max(ans,now);return;}if(o>cnt[x]){dfs(k+1,p[k+1].x,1);return;}int y=id[x][o];for(int i=1;i<=9;i++){if(hang[x][i]||lie[y][i]||d[bel(x,y)][i]) continue;hang[x][i]=lie[y][i]=d[bel(x,y)][i]=1;now+=i*a[x][y];dfs(k,x,o+1);hang[x][i]=lie[y][i]=d[bel(x,y)][i]=0;now-=i*a[x][y];}return;
}
int main(){#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);freopen("a.out","w",stdout);
#endif//start=clock();for(int i=1;i<=9;i++){p[i].x=i;for(int j=1;j<=9;j++){int o=read();mp[i][j]=o;if(o){hang[i][o]=lie[j][o]=d[bel(i,j)][o]=1;now+=o*a[i][j];p[i].num++; }else id[i][++cnt[i]]=j;}}sort(p+1,p+1+9,cmp);dfs(1,p[1].x,1);printf("%d\n",ans?ans:-1);return 0;
}
//2025
洛谷P1074:靶形数独(搜索、剪枝)相关推荐
- 洛谷P1074 靶形数独 [搜索]
题目传送门 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了 ...
- 洛谷 P1074 靶形数独
P1074 靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士 ...
- [洛谷P1074] 靶形数独
洛谷题目链接:靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博 ...
- 洛谷P1074 靶形数独
题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...
- 洛谷 P1074 靶形数独 Label:search 不会
题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他 们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教, Z 博士拿出了他最近发明的 ...
- 洛谷 P1074靶形数独
题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的&q ...
- 洛谷P1074 靶形数独(跳舞链)
传送门 坑着,等联赛之后再填(联赛挂了就不填了233) 1 //minamoto 2 #include<iostream> 3 #include<cstdio> 4 #incl ...
- 洛谷 2921 记忆化搜索 tarjan 基环外向树
洛谷 2921 记忆化搜索 tarjan 传送门 (https://www.luogu.org/problem/show?pid=2921) 做这题的经历有点玄学,,起因是某个random题的同学突然 ...
- 洛谷 P1433 吃奶酪 dfs剪枝
洛谷 P1433 吃奶酪 dfs剪枝 题解: dfs+剪枝,不过现在好像被卡时间了,第10个点过不了.. 代码如下: #include<iostream> #include<algo ...
- 靶形数独(洛谷-P1074)
题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的&q ...
最新文章
- 永磁同步电机转子磁链_永磁同步电机介绍
- UA MATH563 概率论的数学基础I 概率空间1 基本概念
- Transformer落地:使用话语重写器改进多轮人机对话
- 大话数据结构04:循环链表
- word无所不能之在word中浏览网页看电影
- Centos修改默认网卡名
- GD32F103实战
- 小球碰撞python代码_Java 实现小球碰撞GUI
- masm32 汇编hello world程序
- VUE读取Vcard文件,并获取/筛选想要的内容
- 2015年11月小结
- 李白 宣州谢朓楼饯别校书叔云
- java实现高德地图app_入门指南-高德地图手机版 | 高德地图API
- 2022-2028年全球与中国精制花生油行业发展趋势及投资战略分析
- Trident API
- html5 3d引擎 星空,使用3D引擎threeJS实现星空粒子移动效果
- 免费超大量邮件发送服务Amazon SES和Mailgun提供SMTP和API支持
- Windows 8.1 更新错误 0x80073712 解决办法
- Ajax之父Jesse James Garrett在adaptive path工作坊上的演讲《用户体验的要素》
- 2022秋软工实践2:结对编程
热门文章
- 秋招面试我去了拼多多,直接被问JVMGC底层原理和算法,我吊打面试官
- linux中人脸识别不了,虹软人脸识别在 linux中so文件加载不到的问题
- linux 手机 wlan信号桥,手机WLAN信号桥是什么?WLAN信号的作用和使用方法
- Linux网络模块全局变量,()不是Linux系统的特色.
- linux系统刷分辨率,Linux下设置其分辨率及刷新率
- python如何使用geotools_基于GeoTools实现道路结点的提取
- c++牛客网面试题05. 替换空格
- 软件构造学习笔记-第九周、第十周
- 数学中R,Z,N,Q都代表什么意思?
- [蓝桥杯2016决赛]阶乘位数-数论