UVA 10651 Pebble Solitaire 状态压缩dp

Jasper Report使用JSON数据源创建报表 最近在做一个项目小功能,表单结案要生成PDF报表。 起初,想用HTML模板(art-template模板引擎)编写,利用浏览器的打印功能保存成pdf文件下载。但是HTML编写好的模板,页码、页眉、页脚设置有坑,表单内容中的表格较多,表格不能设置跨页,导致跨页的表格内容与页眉重叠,没能解决这个问题。 于是,转战研究Jasper report生成报表,用更加专业的报表生成工具来做。刚开始,也是跌跌撞撞,遇到了很多问题,因为觉得没有退路了,必须要用这个搞出来,所以就硬着头皮去找各种资料。 主要使用的json 阅读详情

一开始还在纠结怎么表示一个状态,毕竟是一个串。后来搜了一下题解发现了这里用一个整数的前12位表示转态就好了 ,1~o,0~'-',每个状态用一个数来表示,然后dp写起来就比较方便了。

代码:

 1 #include <iostream>
 2 #include <sstream>
 3 #include <cstdio>
 4 #include <climits>
 5 #include <cstring>
 6 #include <cstdlib>
 7 #include <string>
 8 #include <cmath>
 9 #include <vector>
10 #include <queue>
11 #include <algorithm>
12 #define esp 1e-6
13 #define pb push_back
14 #define in  freopen("in.txt", "r", stdin);
15 #define out freopen("out.txt", "w", stdout);
16 #define print(a) printf("%d\n",(a));
17 #define bug puts("********))))))");
18 #define Rep(i, c) for(__typeof(c.end()) i = c.begin(); i != c.end(); i++)
19 #define inf 0x0f0f0f0f
20 using namespace std;
21 typedef long long  LL;
22 typedef vector<int> VI;
23 typedef pair<int, int> pii;
24 typedef vector<pii,int> VII;
25 typedef vector<int>:: iterator IT;
26 #define N 50000
27 int dp[N];
28 int ans;
29 void f(int x)
30 {
31     if(dp[x])
32         return ;
33     int num = 0;
34     for(int i = 0; i < 12; i++)
35         if(x&(1<<i))
36         num++;
37     ans = min(ans, num);
38     dp[x] = 1;
39     for(int i = 0; i <= 9; i++)
40         if(((x&(1<<i)) && (x&(1<<(i+1))) && !(x&(1<<(i+2))))
41                 ||(!(x&(1<<i)) && (x&(1<<(i+1))) && (x&(1<<(i+2)))))
42             f(x^(1<<(i+1))^(1<<i)^(1<<(i+2)));
43 }
44 int main(void)
45 {
46 
47     char s[100];
48     int T, t;
49     for(t = scanf("%d", &T), gets(s); t <= T; t++)
50     {
51         memset(dp, 0, sizeof(dp));
52         gets(s);
53         int n = 0;
54         ans = 20;
55         for(int i = 0; i < 12; i++)
56             if(s[i] - '-')
57                 n ^= (1<<i);
58                 f(n);
59         printf("%d\n", ans);
60     }
61     return 0;
62 }
View Code

 

或者可以用map+string的方法,一直都没怎么学过STL,看了http://www.myexception.cn/ai/1243266.html 这里的方法表示又涨了不少知识,拿来重新写了一遍(其实还是“剽窃”,没办法先当一个"搬运工”吧)。

 1 #include <iostream>
 2 #include <sstream>
 3 #include <cstdio>
 4 #include <climits>
 5 #include <cstring>
 6 #include <cstdlib>
 7 #include <string>
 8 #include <cmath>
 9 #include <stack>
10 #include <map>
11 #include <vector>
12 #include <queue>
13 #include <algorithm>
14 #define esp 1e-6
15 #define pb push_back
16 #define in  freopen("in.txt", "r", stdin);
17 #define out freopen("out.txt", "w", stdout);
18 #define print(a) printf("%d\n",(a));
19 #define bug puts("********))))))");
20 #define Rep(i, c) for(__typeof(c.end()) i = c.begin(); i != c.end(); i++)
21 #define inf 0x0f0f0f0f
22 using namespace std;
23 typedef long long  LL;
24 typedef vector<int> VI;
25 typedef pair<int, int> pii;
26 typedef vector<pii,int> VII;
27 typedef vector<int>:: iterator IT;
28 map<string, bool> my;
29 int ans;
30 void dfs(string cur)
31 {
32     if(my.find(cur) != my.end())
33         return;
34     int len = cur.size(), num = 0;
35     for(int i = 0; i < len; i++)
36         if(cur[i] == 'o')
37         num++;
38     ans = min(ans, num);
39     my[cur] = true;
40     for(int i = 0; i <= 9; i++)
41     {
42         if(cur.substr(i, 3) == "-oo")
43         {
44             string temp = cur;
45             temp.replace(i, 3, "o--");
46             dfs(temp);
47         }
48         if(cur.substr(i, 3) == "oo-")
49         {
50             string temp = cur;
51             temp.replace(i, 3, "--o");
52             dfs(temp);
53         }
54     }
55 }
56 int main(void)
57 {
58     int T;
59     string s;
60     for(int t = scanf("%d", &T); t <= T; t++)
61     {
62         cin>>s;
63         my.clear();
64         ans = 20;
65         dfs(s);
66         printf("%d\n", ans);
67     }
68     return 0;
69 }
View Code

 

前端使用二开Thingsboard一、二、三事(三)-规则链 以项目实战为基础,逐步介绍前端在thingsboard系统二次开发中的一些注意事项以及一些thingsboard一些页面功能讲解,为前端人员开发使用thingsboard提供一种可靠思路,打造一个完美的物联网系统。 阅读详情

相关推荐

登临科技Goldwasser加速卡Python SDK实战:从环境配置到YOLOv5模型性能压测

本文详细介绍了登临科技Goldwasser加速卡的Python SDK实战指南,从环境配置到YOLOv5模型性能压测的全过程。通过驱动安装、SDK环境搭建、模型转换与推理优化等步骤,帮助开发者高效利用AI加速卡提升深度学习模型性能。重点分享了批量推理压测技巧和常见问题解决方案,助力开发者充分发挥Goldwasser加速卡的算力优势。

weixin_29035147的博客 300

UVa 10651 Pebble Solitaire(状态压缩DP)

题意:转化为01序列,可以做如下转换011-->100, 110-->001 使得序列的1最少 二进制的集合表示: 空集:0 全集:( 1 集合里添加元素:S|(1 集合删去元素:S&~(1 #include #include #include #include #include #include #include #include #include #include #incl

qwesde 567

U8 API接口开发踩过的坑

U8 API接口开发踩过的坑

haiyang5233233的专栏 1655

UVa 10651 - Pebble Solitaire 状态压缩 dp

Problem A Pebble Solitaire Input: standard input Output: standard output Time Limit: 1 second   Pebble solitaire is an interesting game. This is a game where you are given a board with an arrang

Azarath Metrion Zinthos 1095

千兆以太网PHY设计:PCB原理图完整示例

深入解析千兆以太网PHY电路设计要点,提供完整的PCB原理图设计实例,帮助工程师掌握高速信号布局与电源去耦等关键技术,提升设计稳定性与信号完整性。

weixin_30633869的博客 630

《数据结构》02-线性结构1 两个有序链表序列的合并

题目 本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列。 函数接口定义: List Merge( List L1, List L2 ); 其中List结构定义如下: typedef struct Node *PtrToNode; struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next;...

叫我皮卡丘 7665

uva 10651- Pebble Solitaire(状态压缩DP)待看。。。

1、http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1592 2、题目: Problem A Pebble Solitaire Input: standard input Output: standard output Time Limit:

sdjzping的专栏 1078

保姆级教程:STK 11.0 从下载到安装成功(附Matlab互联配置与常见问题解决)

本文提供STK 11.0的完整安装指南,包括下载、安装步骤、Matlab互联配置及常见问题解决方案。详细介绍了系统要求核查、分步安装流程、关键文件替换和许可证配置,确保用户能够顺利完成STK 11.0的部署并实现与Matlab的无缝对接。

weixin_30698297的博客 344

uva_10651_Pebble Solitaire(状态压缩DP)

题目意思很明确,12这个数字很有状态压缩的意味 这一题的阶段就是按照left -> right 的顺序DP 这里一共有2^12个状态,从1 到 2^12 的数字,每个数字的二进制表示这一行的状态 状态:dp[i]表示该状态的游戏最终结果 状态转移:dp[i] = min(dp[j]), j就是从i的状态经过游戏规则所能转换的状态 ans = dp[n] #include #include #

unixcsir的专栏 351

使用STM32H7点亮RGB屏幕

希望本文能对你有所帮助!RGB屏幕是一种具有红、绿、蓝三种颜色通道的显示设备,通过控制每个通道的亮度,可以显示出丰富多彩的图像和动画。要使用STM32H7控制RGB屏幕,我们需要连接适当的引脚,并编写适当的代码来控制每个颜色通道的亮度。在主循环中,我们先点亮红色通道,然后延迟一段时间,接着点亮绿色通道,再延迟一段时间,最后点亮蓝色通道,并再次延迟。需要注意的是,示例代码中的延迟循环使用了一个简单的计数器实现,但实际应用中可能需要更精确的延迟方式,例如使用定时器中断或操作系统提供的延迟函数。

QoyOle的博客 923

《30天入门 SAP BTP 开发》教程的目录和使用说明,建议收藏

本教程分为两部分:第一部分为SAP BTP入门系列,包含从基础概念到操作步骤的系统性学习内容,建议零基础用户按顺序学习;第二部分为专题文章集合,涵盖SAP BTP的多个技术点,适合已有基础的用户按需查阅。教程包含账号申请、Global Account操作、Java应用开发、AI工具使用等丰富内容,同时解答常见问题并提供实战案例。所有文章均附带详细链接,便于读者系统学习或针对性查阅。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4392

uva 10651 Pebble Solitaire(dp,状态压缩,记忆化搜索)

把每个空格子看做0,有石头的格子看做1 若zgeg

yjCola 645

MDF和DHF、DMR、DHR三者差异?注册与备案文件?医疗器械产品技术要求编写指导原则

定义:设计历史文档(DHF ) 指的是描述某医疗器械成品设计过程的有关记录。内容:DHF包括设计开发活动的所有记录。从最初的策划、客户需求、设计输入,设计输出、设计验证、设计确认、所有的设计评审,设计转换,以及设计变更相关的所有记录。均属于DHF的一部分。要求:各制造商应为每个类型的器械建立并保持设计历史文件。设计历史文件应包含或引用必要的记录,以证实设计符合经批准的设计计划和法规的要求。

学海无涯的专栏 9110

UVa10651 Pebble Solitaire

UVa10651 Pebble Solitaire 题意:n组测试数据,每个测试数据有12个字符构成。'o'表示当前位置有珠子,‘-’表示是空位,如果有两个珠子连在一起,且两个珠子的左右有空位,那么,就可以把一个珠子越过另一个珠子,占据空了的位置(左边或右边的空位都可以。很像跳棋) 状态压缩DP load……

天亮说晚安 1588

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

UVA 10651 --Pebble Solitaire +dfs

这道题有两种做法:搜索和状态压缩dp 因为这个题的状态只要2^12,所以可以用dfs或bfs将所有的可达状态走一遍,然后就可以得到答案了。 我是用二进制压缩以后再进行的dfs;其实也可以直接开一个12位长度数组表示状态,然后dfs或bfs,这样 状态判重可以用hash或二进制压缩。 代码如下: #include #include #include using namesp

荒野孤鹰 857

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

uva 10651 Pebble Solitaire

题意:n组测试数据,每个测试数据有12个字符构成。'o'表示当前位置有珠子,‘-’表示是空位,如果有两个珠子连在一起,且两个珠子的左右有空位,那么,就可以把一个珠子越过另一个珠子,占据空了的位置(左边或右边的空位都可以。很像跳棋) 状态压缩DP,用一个int的当前位有1表示当前位有珠子。 #include #include #include using namespace std; co

1291

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Uva - 10651 - Pebble Solitaire

题意:12个位置,有些有鹅卵石,有些是空的,2个连续的鹅卵石, 如果其左边连着的那个是空的,那么第二个鹅卵石可移动到那个空的位置上,并移除第1个鹅卵石; 如果其右边连着的那个是空的,那么第一个鹅卵石可移动到那个空的位置上,并移除第2个鹅卵石。 问最后最少可以剩下多少个鹅卵石。 题目链接:http://uva.onlinejudge.org/index.php?option=com_onli

无节操 1463

UVA 10651 Pebble Solitaire 鹅卵石摆放 记忆化搜索+DFS+记忆化搜索

题意:有12个坑,里面有些鹅卵石,游戏规则:如果有连续的两个鹅卵石,且旁边有个空坑,那可以把旁边的那个鹅卵石跳过空坑中间那个鹅卵石放到空坑里面,而中间那个鹅卵石就被去掉了。 只有12个坑,状态为2^12,才4000多个,所以用stl或是位运算去储存都可以,然后DFS。 我这里用的是位运算+记忆化搜索,好像没有记忆化也不会超时 = = PS:这就是传说中的状态压缩? 代码: /* *

水果君の日常 1849

[集合DP] UVA 10651 Pebble Solitaire

根据题目描述,每次变换都减少了一个石子,所以只要求出初始状态最多可以变换多少次,用初始状态石子数目减去这个变换次数就得到最后剩余最少的石子的数目; 最多有12位,用一个 int 表示状态,状态的转移可以用位运算实现。 1 /* 2 UVA 10651 - Pebble Solitaire 3 */ 4 # include <cstdio> 5 # in...

weixin_30810239的博客 104

UVa 10651 Pebble Solitaire(状压DP)

题意:110->001,011->100。问最后最多少几个1。 思路:状压DP水题。 #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long

ACMiao的博客 572

uva10651 - Pebble Solitaire(状态压缩)

状态压缩+记忆化搜索 状态压缩对位运算要求的较多。对位运算不熟的话就复习一下吧。 纯正的暴力然后用记忆化搜索剪枝。 碰到合适的情况就转移。【向右或向左】 求最后在棋盘上剩余最少的棋子数目。 代码如下: #include #include #include using namespace std; #define N 4500 int dp[N]; char s[25]; int

稻草人 1019

UVa 10651 Pebble Solitaire (DP&bitset)

10651 - Pebble Solitaire Time limit: 3.000 seconds  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1592 化为二进制进行状态转移,详见代码。 完整代码:

AC,∑ndless 1387

uva 10651 - Pebble Solitaire

Problem A Pebble Solitaire Input: standard input Output: standard output Time Limit: 1 second   Pebble solitaire is an interesting game. This is a game where you are given a board with an arrang

GAUSS_CLB 608

UVa 10651 Pebble Solitaire 记忆化搜索+位运算

/** * 位运算+记忆化搜索: * 这题就当做是熟悉熟悉位运算,练练简单的记忆化搜索的。 * 要是熟悉了位运算,这题其实很容易的。 * 依题意: 一排有12个位置,这样用int去压缩也是很足够的。 * 对于一个数的每个位, 0表示空,1表示有。 * 然后遍历的时候三个三个去分析,然后dfs记忆化搜一下就行了。 */ #include #

xuruoxin的专栏 877

acm专题学习之动态规划(一)状压dp+记忆化搜索+uva 10651 - Pebble Solitaire

题目:由‘o'或’-‘组成的12格子棋盘,有两个规则:’-oo'可以变成’o--',’oo-'可以变成’--o'。问通过这两个规则最少可以只剩多少个‘o'。 状态压缩dp:带入二进制。比如说这道题里,每个格子有两种情况,那么12个格子最多有2的12次方种情况。每个格子里面‘o'对应为1,’-‘对应为0,那么组成的情况就可以用12个格子组成的2进制数表示。例如’-oo-oo-oo-oo'为'011...

qq_40306845的博客 210

UVa10651 - Pebble Solitaire

Problem A Pebble Solitaire Input: standard input Output: standard output Time Limit: 1 second   Pebble solitaire is an interesting game. This is a game where you are given a board with an arrang

mowayao的专栏 836
上一篇: UVA 825 Walkiing on the safe side
下一篇: UVA - 10047 The Monocycle
rootial
博客等级 码龄15年 2粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值