//LA 4794 状压dp
//据说是当年2010年全球总决赛最简单的一道题目
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
#include<stdio.h>
#include<stdlib.h>
#include<istream>
#include<vector>
#include<math.h>
#include<stack>
#include<string.h>
#include<algorithm>
#define mod 10000009
#define maxn 10001
#define long long ll
using namespace std;
int a[1<<15+1],b[20],n,dp[102][1<<15+1],vis[102][1<<15+1]; //dp第一维表示最短的宽,第二维表示面积状态,一般会表示为三维,长,宽,面积,但复杂度会超标,因此采用如上方式,但要注意的是,如上方式判定最后一块面积时要在最后加一个条件。
int bitcount(int x)
{
int i,f=0;
for(i=0;i<n;i++)
{
int t=1<<i;
if((x&t)!=0)
f++;
}
return f;
}
int dfs(int l, int sta)
{
int i, j;
if(vis[l][sta])
return dp[l][sta];
vis[l][sta]=true;
if(bitcount(sta)==1)
return dp[l][sta]=1;
for (i = 1;i < sta;i++)
{
if ((i&sta) == i)
{
if (a[i] % l == 0)
{
if (dfs(min(l,(a[sta]-a[i])/l),sta-i) && dfs(min(a[i]/l,l),i))
{
return dp[l][sta]=1;
}
}
if (a[i] % ( a[sta] / l) == 0)
{
int ll = a[sta] / l;
if (dfs(min(ll, (a[sta] - a[i]) / ll), sta - i) && dfs(min(a[i] / ll, ll), i))
{
return dp[l][sta]=1;
}
}
}
}
return dp[l][sta]=0;
}
int main()
{
//freopen("d:\\in.txt", "r", stdin);
int cnt=0;
while (~scanf("%d", &n) && n != 0)
{
cnt++;
int i,x,y;
memset(a,0,sizeof(a));
memset(vis,false,sizeof(vis));
scanf("%d%d", &x, &y);
for (i = 1;i <= n;i++)
scanf("%d", &b[i]);
int t,all;
all = 1 << n;
all--;
for (i = 1;i <= all;i++)
{
int sum = 0;
for (int j = 0;j < n;j++)
{
int tem = 1 << j;
if ((i&tem) != 0)
a[i] += b[j + 1];
}
}
if (x > y)
t = dfs(y, all);
else
t = dfs(x, all);
if(a[all]!=x*y||a[all]%x!=0) //这里要注意一下,假如是 面积4*4,分割为8,会误认为可以,因为最后一步只考虑了是否为一块。
{
printf("Case %d: No\n", cnt);
continue;
}
if (t != 0)
printf("Case %d: Yes\n", cnt);
else
printf("Case %d: No\n", cnt);
}
return 0;
}相关推荐
两相交错并联Boost电路仿真模型(Simulink仿真实现)
内容概要:本文档系统性地介绍了基于Simulink平台的两相交错并联Boost电路仿真模型,属于电力电子变换器建模与仿真研究的重要组成部分。该模型采用交错并联结构,有效提升了系统效率、降低了输出电流纹波,并具备优良的动态响应与系统稳定性。文档不仅聚焦于该特定拓扑的开环与闭环控制实现,还整合了丰富的配套资源,涵盖多种主流DC-DC变换器(如Buck、Boost、LLC、CLLC)、功率因数校正(PFC)电路、PWM整流器、双向充放电系统以及新能源应用场景(如V2G、微电网)等领域的仿真模型。资源体系强调软开关技术、多相交错控制、系统级建模与参数优化设计,所有内容均提供可运行的Simulink仿真文件,部分包含详细的设计报告、计算书及参考文献,具有较强的工程实践与科研复现价值。; 适合人群:电气工程、自动化、电力电子与电力传动等相关专业的硕士博士研究生、高校科研人员,以及从事新能源发电、电动汽车、电源系统设计等领域的工程技术人员。; 使用场景及目标:①支撑高校电力电子与电力系统方向的科研项目,用于新型拓扑结构的建模与先进控制算法的验证;②服务于本科生与研究生的毕业设计、课程设计及高水平学术论文的仿真复现;③为企业在电源产品研发、新能源系统集成等环节提供成熟的仿真方案参考,缩短研发周期,降低试错成本。; 阅读建议:建议使用者首先访问文档末尾提供的完整资源目录链接,按需下载对应仿真模型;在实践过程中,应重点关注模型的参数配置、控制策略实现细节与仿真工况设置,结合配套的说明文档深入理解其工作原理与设计思路,推荐在MATLAB/Simulink环境中动手调试与二次开发,以充分掌握电力电子系统的核心技术。
LA - 4794 - Sharing Chocolate(状态压缩dp)
题意:能否把一块面积为x*y的巧克力分成面积分别为a1, a2, a3, ..., an的小块巧克力。 题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2795 ——>>集合上的动态规划~~好喜欢~~设d[S][x]为把面积为x
从单机到多机:用llama.cpp的RPC模式榨干你闲置的GPU(附性能调优参数)
本文详细介绍了如何利用llama.cpp的RPC模式实现多机部署,将闲置GPU资源整合为高效推理集群。通过实战案例展示了性能调优参数设置、端口分配策略以及常见问题排查技巧,帮助中小团队最大化利用异构GPU设备,提升文本摘要等任务的推理效率。
LA_4794 Sharing Chocolate( 狀態壓縮DP )
題意: 給你一塊n*m面積的矩形,每次只切割只能橫着切或者是豎着切,問能不能切割成指定的面積的集合 分析: 如果使用沒有優化的DP,比較容易想到如下: 狀態:f[r][c][S],表示面積爲r*c的矩形能否切割成面積的集合S 狀態轉移: f[r][c][S] = 1, 當且緊當:f[r0][c][SR0] = f[r-r0][c][S^SR0] = 1 or f[r][c0][SC0] = f[r
金融科技数据源
数字金融开放研究平台
一个基于fluent超声振动仿真算例分析(含有UDF的编写设定)
一个基于Fluent的超声防堵算例
动态规划部分题目小结
UVA10635 LCS转LIS http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=19053 两个长度为p+1和q+1的序列A,B,序列中元素互不相同,且都是1到n^2的整数,求AB的LCS,将A中元素变为1到p+1,B中不在A中的元素直接删掉,问题转换为在B中求LIS 复杂度nlogn。 #include using namespa
Linux下基于AHCI controller模块实现SATA Platform驱动附代码详细流程
本文主要是针对ARM A55集成了AHSATA controller模块开发sata驱动,通过Platform的形式在linux识别到SSD,本文详细讲述整个开发过程,同时对SATA Platform驱动进行讲解。1、配置SATA Phy的初始化;2、打开SATA Platform相关编译开关;3、配置设备树;4、linux启动识盘。
LA 4794 Sharing Chocolate 状压dp--个人的理解+带注释代码
原题:https://vjudge.net/problem/UVALive-4794 题意: 给你一个a*b的巧克力块,问能不能分为面积分别为 a1,a2……an 的巧克力块(n<=15),每次操作只能横着切或者竖着切,不能切一半不切一半。 首先看数据量,n<=15,这么特殊的数据量很容易让人想到状态压缩dp。 我们将需要得到的小巧克力面积用一个二进制保存起来,同时定义...
CAT24C16 EEPROM的I²C页写与页读底层实现
I²C是一种广泛应用于嵌入式系统的双线同步串行通信协议,其核心在于严格的时序控制、地址寻址机制与主从应答逻辑。理解I²C总线物理层(上拉电阻、SCL/SDA电气特性)、协议层(START/STOP、ACK/NACK、7位地址格式)及外设寄存器操作(如SR1状态标志、CCR时钟分频),是实现可靠通信的基础。在实际工程中,EEPROM类器件(如CAT24C16)因其非易失性、页缓冲区结构和写保护(WP)功能,成为数据持久化关键载体;其16字节页写约束、内部写周期(5–10ms)与地址指针自动递增等特性,直接决定
dp 专题系列(二):LA3983 Robotruck,LA4794 Sharing Chocolate,LA4394 String Painter,LA4327 Parade,Uva 10817
这几天做的多校联合状态很不好,而且多校的题目数据也略坑爹(居然赛后知道有输出文件为空的数据。。。。)。。。 说说这几天做的dp题目吧。。。 dp感觉是越来越切不动了,各种状态不会想。。。 (一):Live Archive 3983 先说说这个Robotruck这题吧,题目还是很好的,状态还是比较好想的(但我就是没转移出来。。蒟蒻啊) 状态:dp[i] 表示第
QGC4.0.11界面修改
QGC4.0.11。
LA4794 Sharing Chocolate
看到数据范围就是状压嘛,,本来觉得复杂度x*3^n太高了会炸结果就是那样。然后发现自己忽略了很多状态是不合法的不会被转移到,所以推荐使用记忆化搜索。然后注意一下,还是输出的时候,特判了之后要么return要么另外输出的时候加else 一个else没看到花了20min,简直了。
STM32F407中文手册
STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。
lwip-2.0.3
lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。
LA 4794 状态DP+子集枚举
状态压缩DP,把切割出的面积做状态压缩,统计出某状态下面积和。 设f(x,y,S)为在状态为S下在矩形x,y是否存在可能划分出S包含的面积。若S0是S的子集,对矩形x,y横切中竖切,对竖切若f(x,k,S0)且f(x,y-k,S^S0)为真,则为真,对横切同样。 然后枚举S的子集即可。可以用记忆化搜索。 #include <iostream> #include <cs...
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
LA 4794 Sharing Chocolate (状压DP)
题意:给你一块x * y的巧克力问是否经过若干次切割后能分成面积为a1,a2,....an的巧克力 思路:因为n很小,所以可以状态压缩,设dp[S][i]当宽为i的时候是否能分成集合为S的巧克力,因为宽度确定了的话,那么长度也就一定确定了,再者就是保证S集合的巧克力面积总和要可以整除i。这里还需要运用到一个枚举子集的技巧,这样才能高效枚举子集。 #include #includ
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
LA 4794 Sharing Chocolate(状压DP)
题意:给出一个长宽确定的矩形,每次可以沿一条直线把它分割成两块长宽都为整数的矩形,问能否通过多次操作得到n块面积分别为a1,a2...an的矩形。 分析:《训练指南》P75。 代码: #include<bits/stdc++.h> using namespace std; const int maxn = 16; const int maxw = 100 + 10; int ...
la 4794 分享巧克力 dfs(超时) dp
我开始试着用dfs,结果超时,附代码。 /* la 4794 */ #include #include #include #define N 100+10 using namespace std; struct node { int x; int y; int area; }; node a[N];//存中间块 int b[N];//存目标面积 int x,y,n; int mi
LA 4794 Sharing Chocolate
大白书中的题感觉一般都比较难,能理解书上代码就已经很不错了 按照经验,一般数据较小的题目,都有可能是用状态压缩来解决的 题意:问一个面积为x×y的巧克力,能否切若干刀,将其切成n块面积为A1,A2,,,An块巧克力。(每次只能沿直线切一块巧克力) 设计状态: f(r, c, S) = 1表示r行c列的巧克力可以切成面积集合为S的若干块巧克力 分解问题: f(r, c, S) = 1当且...
LA 4794 状压dp - 把矩形蛋糕分成若干固定面积的矩形块
题目大意: 思路:这里分的时候是把集合分成两个,并且把这个矩阵块分成两个。分别等于这两个集合的矩阵和,当一个集合只有一个元素,那么就满足条件了。 #include <bits/stdc++.h> #define LL long long using namespace std; int a[20]; int d[1<<20][150], sum[1<<20]...
动态规划,记忆化搜索(分享巧克力,LA 4794)
能想到是那种枚举子集的动态规划,结果写着写着成了模拟了= =。 S是位向量,代表着巧克力的集合。 dp[S]是一个vector,里面装着巧克力集合S能拼出的长方形。模拟转移方程就是枚举S的子集S0,S1,然后拼出一个长方形,然后排序去重。。。果断超时。 其实这种O不OK的问题,状态转移方程都是一旦有一种决策OK,那就OK。 问题在于状态是啥,转移方程是啥。 很容易想到dp[S
LA4794 分享巧克力
Sharing Chocolate Chocolate in its many forms is enjoyed by millions of people around the world every day. It is a truly universal candy available in virtually every country around the world. Y...
白书动态规划例题和习题简解
Pre言: 本文的题解原题均来源于白书,题号: UVa 10859, 11825, 11584, 10534, 11552, 11404, 11795, 10564. LA 3983, 4794, 4256, 4731, 4727, 2038, 4394, 4015. 一直觉得自己的基础DP不是很扎实,所以就花了一节晚自习+半个上午的时间阅读和解决了上述大部分题目,少数几道习题查了题解之后...
1592



被折叠的 条评论
为什么被折叠?



