day4(day5补完的)

继续刷搜索方面的题,

初步了解了序列。

T1

迷宫问题

题目描述

设有一个 n*n 方格的迷宫,入口和出口分别在左上角和右上角。迷宫格子中分别放 0 和 1 ,0 表示可通,1 表示不能,入口和出口处肯定是 0。迷宫走的规则如下所示:即从某点开始,有八个方向可走,前进方格中数字为 0 时表示可通过,为 1 时表示不可通过,要另找路径。找出所有从入口(左上角)到出口(右上角)的路径(不能重复),输出路径总数,如果无法到达,则输出 0。
输入格式

共 n+1 行;第一行位正整数 n,表示迷宫的行数及列数;接下来 n 行,每行 n 个数,表示对应的格子是否可以通过。
输出格式

路径总数。
输入样例

    3

    0 0 0

    0 1 1

    1 0 0

输出样例

    2

提示说明

【数据说明】
     100%数据满足:2<=n<10。

#include <bits/stdc++.h>
using namespace std;
int a[15][15];
int n;
int X[15]={-1,1,0,0,-1,-1,1,1};
int Y[15]={0,0,-1,1,-1,1,-1,1};
int sum=0;
void dfs(int x,int y)
{
if(x==1&&y==n)
{
sum++;
return ;
}
for(int i=0;i<=7;i++)
{
int nx=x+X[i],ny=y+Y[i];
if(nx>0&&nx<=n&&ny>0&&ny<=n)
if(a[nx][ny]==0)
{
a[nx][ny]=1;//biaoji
dfs(nx,ny);
a[nx][ny]=0;
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
a[1][1]=1;
dfs(1,1);
cout<<sum;
return 0; }

还是深搜,一开始我用search没写出来QaQ。

除了判断八个方向上各是0或1,还要判断会不会越界。

if(nx>0&&nx<=n&&ny>0&&ny<=n)
if(a[nx][ny]==0)
{
a[nx][ny]=1;//biaoji
dfs(nx,ny);
a[nx][ny]=0;

就是这个↑

————————————————————————————————————————

T2

部落卫队  洛谷P1692

题目描述

原始部落 byteland 中的居民们为了争夺有限的资源,经常发生冲突。几乎每个居民都有他的仇敌。部落酋长为了组织一支保卫部落的队伍,希望从部落的居民中选出最多的居民入伍,并保证队伍中任何 222 个人都不是仇敌。

给定 byteland 部落中居民间的仇敌关系,编程计算组成部落卫队的最佳方案。若有多种方案可行,输出字典序最大的方案。

输入格式

第 111 行有 222 个正整数 nnn 和 mmm,表示 byteland 部落中有 nnn 个居民,居民间有 mmm 个仇敌关系。居民编号为 1,2,⋯ ,n1,2, \cdots ,n1,2,⋯,n。接下来的 mmm 行中,每行有 222 个正整数 uuu 和 vvv,表示居民 uuu 与居民 vvv 是仇敌。

输出格式

第 111 行是部落卫队的人数;文件的第 222 行是卫队组成 xix_ixi​,1≤i≤n1 \le i \le n1≤i≤n,xi=0x_i=0xi​=0 表示居民 iii 不在卫队中,xi=1x_i=1xi​=1 表示居民 iii 在卫队中。

#include <bits/stdc++.h>
using namespace std;
int v[10000],p[10000],sum,m;
struct c{
int b[1000],k;
}a[1000];
void dfs(int i,int s){
if(i==m+1){
if(s>sum){
memcpy(p,v,sizeof(v));
sum=s;
}
return;
}
if(!v[i]){
v[i]=1;
for(int j=0;j<a[i].k;j++)
v[a[i].b[j]]+=2;
dfs(i+1,s+1);
v[i]=0;
for(int j=0;j<a[i].k;j++)
v[a[i].b[j]]-=2;
}
dfs(i+1,s);
}
int main()
{ int n,x,y,i;
cin>>m>>n;
for(i=1;i<=n;a[x].b[a[x].k++]=y,i++)
cin>>x>>y;
dfs(1,0);
printf("%d\n",sum);
for(i=1;i<=m;i++)
if(p[i]==1)
printf("1 ");
else
printf("0 ");
}

一开始读题时很模糊,如果一个人与多个人都有仇该如何判断,是不是也可能放在队伍里。

花费很长时间,T1 T2差了三个小时。

————————————————————————————————————————

T3

最佳调度问题

题目

假设有n(n<=20)个任务由k(k<=20)个可并行工作的机器完成。完成任务i需要的时间为ti。 试设计一个算法,对任意给定的整数n和k,以及完成任务i 需要的时间为ti ,i=1~n。计算完成这n个任务的最佳调度,使得完成全部任务的时间最早。

输入格式:
输入数据的第一行有2 个正整数n和k。第2 行的n个正整数是完成n个任务需要的时间。

输出格式:
将计算出的完成全部任务的最早时间输出到屏幕。

#include <bits/stdc++.h>
using namespace std;
int a[105],s[1005];
int n,k,result;
int max(int x,int y){
if(x>y) return x;
else return y;
}
void search(int x,int y) {
int i
if(y>=result) return;
if(x>n) {
if(y<result) result=y;
return;
}
for(int i=1; i<=k; i++) { s[i]=s[i]+a[x];
search(x+1,max(y,s[i]));
s[i]=s[i]-a[x]; } }int main() {
cin>>n>>k;
for(int i=1; i<=n; i++)
cin>>a[i];
memset(s,0,sizeof(s));
result=INT_MAX;
search(1,0);
cout<<result;
return 0;
}

这道题主要就离谱在不管用什么方法,系统就是判断是超时,就是73分

————————————————————————————————————————

T4

图M的着色问题  洛谷P2819

题目背景

给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的。图的m着色问题是对于给定图G和m种颜色,找出所有不同的着色法。

题目描述

对于给定的无向连通图G和m种不同的颜色,编程计算图的所有不同的着色法。

输入格式

第1行有3个正整数n,k 和m,表示给定的图G有n个顶点和k条边,m种颜色。顶点编号为1,2,…,n。接下来的k行中,每行有2个正整数u,v,表示图G 的一条边(u,v)。

输出格式

程序运行结束时,将计算出的不同的着色方案数输出。

#include <bits/stdc++.h>
using namespace std;
int n,m,k,s,ks[10000];
int c[10000],e[10000],a[1000];
void search(int x){
if(x>n){
s++;
return;
}
int i;
bool b[1000];
i=ks[x];
memset(b,1,sizeof(b));
while(i!=0){
if(e[i]<x) b[a[e[i]]]=false;
i=c[i];
}
for(int i=1;i<=k;i++)
if(b[i]){
a[x]=i;
search(x+1);
}
}
int main(){
cin>>n>>m>>k;
int i,x,y;
for(i=1;i<=m;i++){
cin>>x>>y;
c[i]=ks[x];
ks[x]=i;
e[i+m]=y;
c[i+m]=ks[y];
ks[y]=i+m;
e[i+m]=x; }
s=0;
search(1);
cout<<s<<endl;
return 0;
}

2022寒假集训day4的更多相关文章

  1. 2022寒假集训day2

    day1:学习seach和回溯,初步了解. day2:深度优化搜索 T1 洛谷P157:https://www.luogu.com.cn/problem/P1157 题目描述 排列与组合是常用的数学方 ...

  2. 【集训Day4 动态规划】【2018寒假集训 Day4 更新】蛙人

    蛙人 (ple) 蛙人使用特殊设备潜水.设备中有一个气瓶,分两格:一格装氧气,另一格装氮气.留在水中有时间的限制,在深水中需要大量的氧气与氮气.为完成任务,蛙人必须安排好气瓶.每个气瓶可以用它的重量和 ...

  3. HZNU-ACM寒假集训Day4小结 最短路

    最短路 1.Floy 复杂度O(N3)  适用于任何图(不存在负环) 模板 --kuangbin #include<iostream> #include<cstdio> #in ...

  4. 2022寒假集训day6

    day6上午还是做四道题T1区域[上机练习]1.编程计算由"*"号围成的下列图形的面积.面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目.如下图所示,在 10*10 ...

  5. 2022寒假集训day5

    day5 五道栈的题加上字符串. 单调队列. T1 表达式括号匹配   洛谷P1739 题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@&q ...

  6. 2022寒假集训day3

    day3:四道检测题,花了大半天时间. T1 子集和问题 问题描述 子集和问题的一个实例为<S,c>.其中S={x1,x2,-,xn}是一个正整数的集合,c是一个正整数.子集和问题判定是否 ...

  7. Loj #6069. 「2017 山东一轮集训 Day4」塔

    Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都 ...

  8. Loj 6068. 「2017 山东一轮集训 Day4」棋盘

    Loj 6068. 「2017 山东一轮集训 Day4」棋盘 题目描述 给定一个 $ n \times n $ 的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置 $ (x, y),(u, ...

  9. loj6068. 「2017 山东一轮集训 Day4」棋盘 二分图,网络流

    loj6068. 「2017 山东一轮集训 Day4」棋盘 链接 https://loj.ac/problem/6068 思路 上来没头绪,后来套算法,套了个网络流 经典二分图 左边横,右边列 先重新 ...

随机推荐

  1. docker构建.net core运行的镜像

    在docker很火的今天,越来越多的应用现在都在往docker上迁移,.net core怎么能落后? 项目要运行在docker上,我们需要先制作镜像,可以基于centos来制作,当然也可以基于Ubun ...

  2. JS常见框架汇总

    基础框架 Vue.js 官网地址 : http://cn.vuejs.org/ 官方简介 : Vue.js 是一套用于构建用户界面的渐进式框架. 框架类型 : 前端项目级框架 适用平台 : 通用 仓库 ...

  3. git 生成忽略文件

    一.在.git的同级目录下打开git bash 二.在命令行输入 三.在生成的文件中添加忽略提交的文件夹名称 来自为知笔记(Wiz)

  4. Shell 中的 expect 命令

    目录 expect 介绍 expect 安装 expect 语法 自动拷贝文件到远程主机 示例一 示例二 示例三 示例四 expect 介绍 借助 expect 处理交互的命令,可以将交互过程如 ss ...

  5. spring cloud --- config 从git 获取文件【 可能是yml或 properties】遇到有相同字段的取值规则

    spring boot      1.5.9.RELEASE spring cloud    Dalston.SR1 1.前言 昨天做了 spring cloud config 配置中心 获取存在gi ...

  6. 解决MySQL服务器禁止远程连接的问题

    1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 " ...

  7. iOS二进制方案真实落地经验(30分钟降低到10分钟以内)

    iOS二进制方案真实落地经验(30分钟降低到10分钟以内) 我们做iOS二进制化断断续续尝试了一年多了,来来回回换了三个架构师去尝试落地,今日完全落地,在此做个总结 背景 工程基于cocoapod的组 ...

  8. Python多线程、线程池及实际运用

    我们在写python爬虫的过程中,对于大量数据的抓取总是希望能获得更高的速度和效率,但由于网络请求的延迟.IO的限制,单线程的运行总是不能让人满意.因此有了多线程.异步协程等技术. 下面介绍一下pyt ...

  9. RabbitMQ除开RPC的五种消模型----原生API

    2.五种消息模型 RabbitMQ提供了6种消息模型,但是第6种其实是RPC,并不是MQ,因此不予学习.那么也就剩下5种. 但是其实3.4.5这三种都属于订阅模型,只不过进行路由的方式不同. 通过一个 ...

  10. SnackBar--FloatingActionButton--CoordinatorLayout

    SnackBar snack:小吃,点心,快餐 btOpenSnackBar = (Button) findViewById(R.id.bt_openSnackBar); btOpenSnackBar ...