POJ 3414 Pots(BFS)||SDUT(Pots)

手把手教你用VM实现欧姆龙PLC数据采集(含Fins协议配置详解) 本文详细介绍了如何使用VM(VisionMaster)实现与欧姆龙PLC的数据采集,重点解析了Fins协议(包括Fins TCP/UDP)的配置步骤。从网络环境搭建、PLC的IP地址设置,到VM端Fins通讯通道的详细配置与数据点映射,提供了完整的实战指南。文章还涵盖了数据收发解析、常见问题排查清单,帮助工程师快速完成视觉系统与PLC的稳定集成。 阅读详情
                                                                                                                               Pots
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 12022 Accepted: 5078 Special Judge

Description

You are given two pots, having the volume of A and B liters respectively. The following operations can be performed:

  1. FILL(i)        fill the pot i (1 ≤ i ≤ 2) from the tap;
  2. DROP(i)      empty the pot i to the drain;
  3. POUR(i,j)    pour from pot i to pot j; after this operation either the potj is full (and there may be some water left in the poti), or the poti is empty (and all its contents have been moved to the potj).

Write a program to find the shortest possible sequence of these operations that will yield exactlyC liters of water in one of the pots.

Input

On the first and only line are the numbers A, B, andC. These are all integers in the range from 1 to 100 andC≤max(A,B).

Output

The first line of the output must contain the length of the sequence of operationsK. The followingK lines must each describe one operation. If there are several sequences of minimal length, output any one of them. If the desired result can’t be achieved, the first and only line of the file must contain the word ‘impossible’.

Sample Input

3 5 4

Sample Output

6
FILL(2)
POUR(2,1)
DROP(1)
POUR(2,1)
FILL(2)
POUR(2,1)


题目大意:有两个杯子的容量分别是A,B,问经过多少步,可以让C升的水装到一个杯子中。

思路:问最短的步数当然是BFS,但是怎么将其路径标记下来是难点,并且怎么个搜索法。

可以设一个串在node 来专门装当前的情况,然后分别映射到str中,对于怎么搜索肯定分为fill,drop,pour三大类



#include<iostream>
#include<cstdio>
#include<string.h>
#include<string>
#include<cmath>
#include<queue>
#define LL long long
using namespace std;
int A,B,C;
struct node
{
    int n1,n2,tep;
    string a;//保存当前的操作
};
bool vis[100][100];
char str[6][10]= {"FILL(1)","FILL(2)","POUR(2,1)","POUR(1,2)","DROP(1)","DROP(2)"};//具体有六种实现
void bfs()
{
    queue<node>q;
    while(!q.empty()) q.pop();
    node f1,f2;
    int t;
    f1.n1=0;
    f1.n2=0;
    f1.tep=0;
    f1.a="";开始时为空串
    q.push(f1);
    while(!q.empty())
    {
        f1=q.front();
        q.pop();
        if(vis[f1.n1][f1.n2])//剪纸
            continue;
       else
            vis[f1.n1][f1.n2]=true;
        if(f1.n1==C||f1.n2==C)
        {
            printf("%d\n",f1.tep);
            for(int j=0;j<f1.tep;j++)
            {
                printf("%s\n",str[ f1.a[j]-'0' ]);//分别对应到str中
            }
            return ;
        }
        for(int i=0;i<4;i++)
        {
            f2=f1;
            f2.tep++;
            if(i==0)
            {
                if(f2.n1==0)
                {
                    f2.n1=A;
                    f2.n2=f1.n2;//注意这里必须是f2.x=f1.x因为不是的话可能会对下一个if()造成影响,尽管开头的部分有f2=f1;在下边并列的部分就无所谓了
                    f2.a=f1.a+'0';
                    q.push(f2);
                }
                if(f2.n2==0)
                {
                    f2.n2=B;
                    f2.n1=f1.n1;//保持相对不变
                    f2.a=f1.a+'1';
                    q.push(f2);
                }
            }
            if(i==1)
            {
                if(f2.n1!=0)
                {
                    f2.n1=0;
                    f2.n2=f1.n2;
                    f2.a=f1.a+'4';
                    q.push(f2);
                }
                if(f2.n2!=0)
                {
                    f2.n2=0;
                    f2.n1=f1.n1;
                    f2.a=f1.a+'5';
                    q.push(f2);
                }
            }
            if(i==3)
            {
                if(f2.n2!=0&&f2.n1!=A)
                {
                    t=A-f2.n1;
                    if(f2.n2>=t)
                    {
                        f2.n2-=t;
                        f2.n1=A;
                    }
                    else
                    {
                        f2.n1+=f2.n2;
                        f2.n2=0;
                    }
                    f2.a+='2';
                    q.push(f2);
                }
            }
            if(i==2)
            {
                if(f2.n1!=0&&f2.n2!=B)
                {
                    t=B-f2.n2;
                    if(f2.n1>=t)
                    {
                        f2.n1-=t;
                        f2.n2=B;
                    }
                    else
                    {
                        f2.n2+=f2.n1;
                        f2.n1=0;
                    }
                    f2.a+='3';
                    q.push(f2);
                }
            }
        }
    }
    printf("impossible\n");
}
int main()
{
    int n,m,i,j,k,s;
    while(~scanf("%d%d%d",&A,&B,&C))
    {
        memset(vis,false,sizeof(vis));
        bfs();
    }
    return 0;
}



SDUT Pots

   简化的Pots,过一段时间再做这题,居然怎么搜都没思路了- -,(自己的提升空间还有很大啊!)

   如果是找得话,肯定是讲所有的可能情况都枚举一遍,即细分的话可以有6种情况。既可以分别枚举这些情况还需要注意,运算的先后顺序问题。

 剪枝也是必要的手段,这道题剪枝的话,顶多也就是从某个状态有没有被搜到过 的问题,所以以每次每个个瓶子的状态标记即可。搜过的直接跳过。


#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<queue>
#include<map>
#define L1 long long
#define L2 __int64
#define inf 0x3f3f3f3f
using namespace std;

const int m1=1001000;
const int m2=1010;
int head[m1],vex[m1],arr[m1];
bool vis[m2][m2];
char st2[500000],st1[500000];

struct node
{
    int x,y,tmp;
};

void bfs(int a,int b,int c)
{
    queue<node>q;
    while(!q.empty()) q.pop();
    node f1,f2;
    f1.x=0;
    f1.y=0;
    f1.tmp=0;
    q.push(f1);

    while(!q.empty())
    {
        f1=q.front();
        q.pop();
        if(f1.x==c||f1.y==c)
        {
            printf("%d\n",f1.tmp);
            return ;
        }

        if(vis[f1.x][f1.y] )
            continue;
        else
            vis[f1.x][f1.y]=true;

        for(int i=0;i<6;i++)
        {
            f2=f1;
            f2.tmp++;
            if(i==0)
            {
                if(f2.x==0)
                {
                    f2.x=a;
                    q.push(f2);
                }
            }
            if(i==1)
            {
                if(f2.y==0)
                {
                    f2.y=b;
                    q.push(f2);
                }
            }
            if(i==2)
            {
                if(f2.x!=0)
                {
                    f2.x=0;
                    q.push(f2);
                }
            }
            if(i==3)
            {
                if(f2.y!=0)
                {
                    f2.y=0;
                    q.push(f2);
                }
            }
            if(i==4)
            {
                if(f2.y!=0&&f2.x!=a)
                {
                    int t=a-f2.x;
                    if(f2.y>=t)
                    {
                        f2.x=a;
                        f2.y-=t;
                        q.push(f2);
                    }
                    else
                    {
                        f2.x+=f2.y;
                        f2.y=0;
                        q.push(f2);
                    }
                }
            }
            if(i==5)
            {
                if(f1.y!=b&&f1.x!=0)
                {
                    int t=b-f2.y;
                    if(f2.x>=t )
                    {
                        f2.x-=t;
                        f2.y=b;
                        q.push(f2);
                    }
                    else
                    {
                        f2.y+=f2.x;
                        f2.x=0;
                        q.push(f2);
                    }
                }
            }
        }
    }

}
int gcd(int a,int b)
{
    return b==0?a:gcd(b,a%b);
}
int main()
{
    int n,m,i,j,k;
    int cla;
    while(~scanf("%d%d%d",&n,&m,&k))
    {
        j=gcd(n,m);
        if(k%j)
        {
            printf("impossible\n");continue;
        }
        memset(vis,false,sizeof(vis));
        bfs(n,m,k);
    }
    return 0;
}



python使用TensorRT报错,多线程或多进程中使用问题 python使用TensorRT报错,Cuda Runtime问题 阅读详情

相关推荐

把STM32MP135当单片机玩:实战SD卡脱机运行LED程序(基于MP135DK开发板)

本文详细介绍了如何在STM32MP135开发板上实现SD卡脱机运行LED程序,通过裸机开发方式(Bare Metal)利用HAL库完成GPIO控制,并解析了SD卡启动流程。内容涵盖工程创建、代码编写、SD卡烧录及常见问题排查,为开发者提供了一种高性能单片机开发方案。

weixin_33734785的博客 242

POJ 3414-Pots 简单搜索 BFS

<br />题目来源:http://acm.pku.edu.cn/JudgeOnline/problem?id=3414<br /> <br />解题报告:<br /> <br />还是BFS<br /> <br />设(i,j)为瓶1与瓶2在某一时刻的容量,那么从这点出发,可以到达的点有:<br /> <br />(A, j) : FILL(1)<br />(i, B) : FILL(2)<br />(0, j): DROP(1)<br />(i, 0): DROP(2)<br />(i+j, 0) or

kindlucy的专栏 4333

F280049C_HRPWM_死区时间高精度控制与MEP技术实战解析

本文深入解析了F280049C的HRPWM模块及其基于MEP技术的死区时间高精度控制。通过实测数据与TI官方代码对比,详细阐述了DBREDHR和DBFEDHR寄存器的配置技巧、精度优化方法及常见问题调试,为电源管理和电机控制应用提供了实用的实战指南。

yolo5detector的博客 217

poj 3414 pots

<br />本题的大意是说:给你两个容器a,b,然后给你需要倒出的体积c,问你能几步将所需的体积倒出来。<br /> <br />基本的做法就是用BFS,模拟倒酒的每一个过程。<br /> <br />在倒酒的过程中,只有六种状态:从外界倒入a;从外界倒入b;将a酒杯倒空;将b酒杯倒空;把酒从a酒杯倒入b;把酒从b酒杯倒入a。<br /> <br />判断每一种状态是不是都出现过,如果没有出现就将它写入队列中,并将出现过的状态标记下来。<br /> <br />本题主要是打印路径的问题,关于这个问题我困扰了

zhenzi_1989的专栏 419

ArcGIS新手必看:HWSD2土壤数据从下载到批量提取TIFF的完整流程

本文详细介绍了ArcGIS中HWSD2土壤数据的完整处理流程,从数据下载、预处理到批量提取TIFF文件。涵盖栅格属性表构建、属性数据连接及性能优化等关键步骤,帮助新手高效掌握HWSD2数据提取技术,提升地理信息数据处理效率。

ll5678的博客 1036

Cosmos Transfer2.5多模态AI模型部署与优化实战

多模态AI技术通过融合文本、图像、代码等不同模态数据,实现跨模态理解与生成。其核心原理基于Transformer架构的注意力机制,结合对比学习实现模态对齐。这类技术在智能内容创作、跨模态搜索等领域具有重要价值,尤其适合电商营销图文生成、UI设计转代码等场景。Cosmos Transfer2.5作为先进的多模态模型,支持8192 tokens长文本窗口和混合模态输入,实测推理速度达17.5 samples/s(T4显卡)。部署时需注意FlashAttention优化可提升3倍长文本处理效率,8-bit量化则能

weixin_29038303的博客 281

Pots-简单的BFS问题

描述You are given two pots, having the volume of A and B liters respectively. The following operations can be performed:FILL(i)        fill the pot i (1 ≤ i ≤ 2) from the tap;DROP(i)      empty the pot ...

lrf2454224026的博客 314

1、信息与物理世界:“It from Bit”还是“Bit from It”?

这篇博文探讨了物理学与信息理论之间的深刻联系,从惠勒提出的“It from Bit”概念出发,讨论了信息是否是物质世界的基础,或者物质是否是信息的来源。文章回顾了2013年举办的征文竞赛以及众多学者对这一问题的不同观点,涵盖了量子理论、热力学、计算机科学、黑洞物理以及时空本质等多个领域。同时,文章还分析了信息理论在哲学层面的含义,并展望了其在未来理论、实验和应用研究中的潜力与方向。

water的专栏 289

Pots

PotsTime Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem DescriptionYou are given two pots, having the volume of A and B liters respectively. The following operations can be performed:FI

梦初始的地方,它也需要生根发芽。 666

2026年瑞芯微数字IC设计笔试试卷带答案

本文主要考察数字集成电路设计相关知识,包括低功耗设计、时序分析、跨时钟域处理、总线协议等内容。试题分为单选题、多选题、代码设计题和简答题四部分。 单选题涉及门控时钟降低动态功耗、静态时序分析的限制、跨时钟域同步方案、时序违例修复方法、AHB总线信号、异步FIFO设计、半导体工艺电阻特性、二进制数转换、同步/异步复位比较以及分频电路设计等知识点。 多选题重点考查动态功耗优化技术、亚稳态特性、异步FIFO设计规范、Verilog可综合代码编写要求以及AXI总线协议特点等。 代码设计题要求实现一个同步FIFO和3

Open 215

黑猫带你学UFS协议第23篇:UFS固件升级操作详解(FFU)

摘要:本文介绍了UFS固件更新(FFU)的实现方法与注意事项。根据UFS3.1 JEDEC协议,FFU通过write buffer命令(MODE=0Eh)下载FW固件,随后必须进行power cycle或硬件复位生效。文章详细阐述了FFU操作的10条规则,包括数据分片传输要求、寄存器访问限制等,同时指出协议未明确的厂商实现差异。关键寄存器包括bFFUTimeout、bDeviceFFUStatus和fPermanentlyDisableFwUpdate。

黑猫奥利奥的博客 1万+

SDUT-2780--Pots

Pots 题目描述 You are given two pots, having the volume of A and B liters respectively. The following operations can be performed:   FILL(i)        fill the pot i (1 ≤ i ≤ 2) from the tap; DROP

bobo 708

【雷达】一维和二维自适应波束形成(DBF))DBF附matlab代码

1 简介 数字波束形成技术是天线波束形成原理与数字信号处理技术相结合的产物,其广泛应用于阵列信号处理领域.由于电磁工作环境的恶化和大量射频干扰的存在,在极低的信干噪比(SINR)条件下进行目标检测和信息提取十分困难.对于阵列系统,往往采用自适应数字波束形成(ADBF)技术,来抑制强干扰和方向性干扰对有用信号的影响.介绍了数字波束形成器的基本原理及其DSP的实现结构.​ 2 完整代码 clc;clear all;close all;%%%%%%%%%%%%%%%%%一维DBF%%%%%%%%%%%%%

qq_59747472的博客 7265

HDOJ 1010 Tempter of the Bone(DFS奇偶剪枝)

Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, and the doggie could feel the ground sinking. He re

Grit_ICPC的博客 918

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

POJ 1129 Channel Allocation(暴力搜--涂色问题)

Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13295   Accepted: 6806 Description When a radio station is broadcasting over a very large ar

Grit_ICPC的博客 902

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

马的走法 SDUT

马的走法 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 在一个4*5的棋盘上,马的初始位置坐标(纵 横)位置由键盘输入,求马能返回初始位置的所有不同走法的总数(马走过的位置不能重复,马走“日”字)。如果马的初始位置坐标超过棋盘的边界,则输出ERROR。例如初始位置为4 6,则输出ERROR。 输入 输入数

Grit_ICPC的博客 891

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

POJ 2676 Sudoku(DFS)

Sudoku Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16024   Accepted: 7824   Special Judge Description Sudoku is a very simple task. A square table with 9

Grit_ICPC的博客 867

HDU 5242 Game (树上贪心|类 树链剖分)

大意:有向图给定n-1条边然后给出每个点的权值,每个点的权值只能累加一次,问从根节点走,可以走k次能累计的最大点权和。 思路:本题可以进行两遍dfs操作,第一次为从叶子节点到跟节点的节点权值和。然后根据权值排序,然后根据排序后的下标,来进行第二遍dfs搜索即从当前到根节点的和。 输出前k大值即可。 #include #include #include #define inf

Grit_ICPC的博客 844

浙江理工校赛

题目大意:就是开始有2瓶酒,n个酒馆,m个排挡,走到排挡酒-1,走到酒馆酒就加倍,最后有多少种组合的方法使得酒的数目为0,并且保证最后都是排挡。 思路:1.可以用next_permutation(a,a+n)来进行枚举            2.就是直接DFS搜索,但是搜索的话还要分情况,就是区分进入排挡和酒馆。所以还要加个循环看通过哪个方向可能会达到预想的结果。   #include

Grit_ICPC的博客 819

POJ 2531 Network Saboteur(DFS)

Network Saboteur Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10216   Accepted: 4885 Description A university network is composed of N computers. System adm

Grit_ICPC的博客 744

SDUT 数据结构实验之图论四:迷宫探索 (DFS)

DFS收索所有的经过路径。且注意当返回时直接v进入数组即可。 #include #include #include #include #include #include #include #include #include #include #include #define LL long long using namespace std ; bool vis[100000]; boo

Grit_ICPC的博客 726

NYOJ 488 素数环(DFS)

题目大意:给定一个数判断是否有环可以构成每个相邻的数的和是一个素数. 思路:从1开始DFS,遇到相加全成为素数环的就输出,类似的回溯,递归,数列1-n都是奇偶相间的,所以当N为奇数时,一定有种奇+奇的方式,所以不可能会有素数.那么可以剪枝. #include #include #include #include #include #define ll __int64 #de

Grit_ICPC的博客 725

codeforces 638B - Making Genome in Berland (STL&&DFS)

大意给定一些序列a-z,问你能把他们全部连在一起,并输出最短的最终序列。思路:类似与拓扑排序,并且只有26个字母所以爆搜就行,存储序列可以用vector存储,记录入度并标记出现的字母最后再标记已经存储的字母即可。#include<map> #include<queue> #include<cmath> #include<cstdio> #include<stack> #include<iostrea

Grit_ICPC的博客 698

Flip Game Poj1753

Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 33621   Accepted: 14686 Description Flip game is played on a rectangular 4x4 field with two-sided pie

Grit_ICPC的博客 696

Poj 3278 Catch That Cow

Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 58054   Accepted: 18053 Description Farmer John has been informed of the location of a fugitiv

Grit_ICPC的博客 675

SDUT 3322 (收索+打表)

题目描述 一下迭代序列定义在整数集合上: n = n/2 (n 是偶数) n = n*3 + 1(n 是奇数) 应用以上规则,并且以数字13开始我们得到一下序列: 13,40,20,10,5,16,8,4,2,1 可以看出这个以13开始以1结束的序列一共经过了9次运算。虽然还没有被证明(Collatz问题),但是人们认为在这个规则下,以任何数字开始都会以1 结束。   以哪

Grit_ICPC的博客 669
上一篇: POJ 1942 Paths on a Grid
下一篇: POJ 1019 Number Sequence (循环递增序列的的第K个值)
Grit_ICPC
博客等级 码龄11年 58粉丝 614原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值