POJ 1745 【0/1 背包】

C#粘包和分包问题及解决方法 一:通过图解法来描述一下分包和粘包,这样客户更清晰直观的了解:  下面对上面的图进行解释:  1.正常情况:如果Socket Client 发送的数据包,在Socket Server端也是一个一个完整接收的,那个就不会出现粘包和分包情况,数据正常读取。  2.粘包情况:Socket Client发送的数据包,在客户端发送和服务器接收的情况下都有可能发送,因为客户端发送的数据都是发送的一个缓冲... 阅读详情

题目链接:http://poj.org/problem?id=1745

Divisibility
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 13431 Accepted: 4774

Description

Consider an arbitrary sequence of integers. One can place + or - operators between integers in the sequence, thus deriving different arithmetical expressions that evaluate to different values. Let us, for example, take the sequence: 17, 5, -21, 15. There are eight possible expressions: 17 + 5 + -21 + 15 = 16 
17 + 5 + -21 - 15 = -14 
17 + 5 - -21 + 15 = 58 
17 + 5 - -21 - 15 = 28 
17 - 5 + -21 + 15 = 6 
17 - 5 + -21 - 15 = -24 
17 - 5 - -21 + 15 = 48 
17 - 5 - -21 - 15 = 18 
We call the sequence of integers divisible by K if + or - operators can be placed between integers in the sequence in such way that resulting value is divisible by K. In the above example, the sequence is divisible by 7 (17+5+-21-15=-14) but is not divisible by 5. 

You are to write a program that will determine divisibility of sequence of integers. 

Input

The first line of the input file contains two integers, N and K (1 <= N <= 10000, 2 <= K <= 100) separated by a space. 
The second line contains a sequence of N integers separated by spaces. Each integer is not greater than 10000 by it's absolute value. 

Output

Write to the output file the word "Divisible" if given sequence of integers is divisible by K or "Not divisible" if it's not.

Sample Input

4 7
17 5 -21 15

Sample Output

Divisible

Source

 

题目大意:给N个数字和一个K,把N个数字加加减减后得到的数字是否能整除K。

大概思路:

一、暴力,全排列,爆炸,out!

二、0/1背包

状态:bool dp[ i ][ x ], 长度为 i 的序列的加减结果模 K 的后的 X 为真或为假

状态转移: dp[ i+1 ][ (((x-num [i+1])%K)+K)%K ]  =  dp[ i ][ x ]       减第 i+1 个数

      dp[ i+1 ][ (((x+num [i+1])%K)+K)%K ]  =  dp[ i ][ x ]      加第 i+1 个数

 

AC code (1224k 360ms):

 1 ///POJ 1745 【0/1背包】
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <iostream>
 5 #include <algorithm>
 6 #define INF 0x3f3f3f3f
 7 using namespace std;
 8 
 9 const int MAXN = 1e4+10;
10 const int MAXK = 111;
11 
12 int num[MAXN];
13 bool dp[MAXN][MAXK];
14 int N, K;
15 
16 void slv()
17 {
18     memset(dp, 0, sizeof(dp));
19     dp[1][((num[1]%K)+K)%K] = true;
20     for(int i = 1; i < N; i++)
21     {
22         for(int p = 0; p < K; p++)
23         {
24             if(dp[i][p])
25             {
26                 dp[i+1][(((p+num[i+1])%K)+K)%K] = true;
27                 dp[i+1][(((p-num[i+1])%K)+K)%K] = true;
28             }
29         }
30     }
31     if(dp[N][0]) printf("Divisible\n");
32     else printf("Not divisible\n");
33 }
34 
35 int main()
36 {
37     scanf("%d%d", &N, &K);
38     for(int i = 1; i <= N; i++)
39     {
40         scanf("%d", &num[i]);
41     }
42     slv();
43     return 0;
44 }

 

国科大作业考试资料《人工智能原理与算法》2024新编-第二次作业整理 1、对于下列活动,分别给出任务环境的PEAS描述, 并按2.3.2节列出的性质进行分析: 3、为图2.2中描述的吸尘器世界实现一个可以进行性能度量的环境模拟器。你的实现是必须是模块化的,以使传感器、执行器和环境特征(大小、形状、灰尘放置等)便于修改。 4、实现上述题目真空吸尘器环境中的简单反射Agent。用所有可能的初始灰尘分布和Agent位置,运行环境模拟器和Agent。记录Agent在每种情况下的性能评分和总体平均评分。 阅读详情

相关推荐

关于Kswapd的理解(一)

关于Kswapd的理解(一) 之前跟踪了MemAvailable的计算方式,其中watermark的计算花了很多精力,在学习的过程中看到一些资料中说watermark是给swapd使用的,于是乎,研究一下看看咯 本部分主要记录两个方面: 对于kswapd这个东西,从初学者(我)的角度出发会考虑哪些内容? 跟踪kswapd 初始化结构部分; 1. KSwapd机制 上图是还没有跟踪kswapd code的时候,对自己提出的一些疑问和自身的理解,主要是如下内容: kswapd 机制用来做什么:内存不足时

And乔的博客 2726

poj 1745 Divisibility(01背包应用)

Divisibility Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7707   Accepted: 2644 Description

志当存高远 1725

液态神经网络系列(四) | 一条 PyTorch 从零搭建 LTC 细胞

本文详细介绍了如何从零开始用PyTorch实现Liquid Time-constant Networks(LTC)神经元模型。首先将LTC的核心微分方程拆解为输入电导、系统时间常数和数值积分器三个模块,然后逐步构建LTCCell类,包括物理参数初始化、突触参数设置和前向演化过程。文章还展示了如何封装LTCModel处理不规则时间序列,并通过正弦波抗干扰实验验证了LTC模型的优越性。最后讨论了数值稳定性、计算代价等实现细节,并预告了下一篇将探讨使用伴随灵敏度算法优化显存占用的方法。

wyj333333的博客 2071

百练/ 北京大学2016研究生推免上机考试(校外)E: Divisibility(动态规划)

题目来源:http://poj.org/problem?id=1745DivisibilityTime Limit: 1000MS Memory Limit: 10000K DescriptionConsider an arbitrary sequence of integers. Onecan place + or - operators between integers in the ...

da_kao_la的博客 567

手把手教你用BQ Studio给BQ40Z50电量计“做体检”:从Golden Learning到精度验证的全流程实操

本文详细介绍了如何使用BQ Studio对BQ40Z50电量计进行全流程调试,从Golden Learning到精度验证。通过硬件连接、参数配置和优化技巧,帮助工程师提升电池管理系统的精度和性能,适用于BMS开发和电量计校准的实际应用场景。

weixin_30824599的博客 452

ConnectionResetError 10054 根因分析与全链路防御指南

ConnectionResetError(错误码10054)是TCP协议中服务端主动发送RST包导致的强制断连,本质并非网络连接失败,而是服务端基于空闲超时、连接满载、TLS协商失败等策略做出的确定性终止决策。理解其底层原理有助于跳出‘重试’误区,转向连接生命周期管理。该错误高频出现在HTTP长连接、WebSocket、第三方API对接等场景,尤其在Nginx反向代理、负载均衡器(如AWS ALB)、WAF设备及内核conntrack机制下极易触发。本文结合Wireshark抓包分析、客户端心跳保鲜、协议指

weixin_30225755的博客 642

poj 1745

<br /> DivisibilityTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 7277 Accepted: 2457<br />DescriptionConsider an arbitrary sequence of integers. One can place + or - operators between integers in the sequence, thus deriving different arithmetic

志当存高远 779

【unity实战】使用unity的Navigation+LineRenderer实现一个3D人物寻路提前指示预测移动轨迹的效果,并可以适配不同的地形

本文介绍了在Unity中使用Navigation导航系统和LineRenderer实现3D人物寻路轨迹预测效果的方法。通过NavMesh.CalculatePath计算路径点,结合Physics.Raycast进行地面点投射,将路径点赋予LineRenderer渲染出移动轨迹。关键点包括:1)利用NavMesh.CalculatePath计算两点间可行走路径;2)通过射线检测获取地面点提高路径适配性;3)使用协程定期更新路径绘制。文章还提供了完整代码实现,并说明需要将地面图层设置为Ground并进行导航网格

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 463

poj1745 Divisibility

Divisibility Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 10264   Accepted: 3635 Description Consider an arbitrary sequence of integers. One can place +

smz436487的专栏 422

漏洞挖掘之工具配置

本文主要讲解burp工具的插件安装。

qq_64775230的博客 3276

RK3588 部署 ArcFace(r100)人脸识别模型:ONNX 转 RKNN 全流程详解

本文介绍了将ArcFace人脸识别模型转换为RKNN格式并部署到RK3588 NPU的方法。ArcFace是主流的人脸特征提取模型,适用于1:1比对和1:N检索等场景。文章详细说明了模型特点(输入112x112 RGB图像,输出512维特征向量)及转换步骤:首先使用torch2onnx将PyTorch模型转为ONNX格式,再通过RKNN工具进行量化转换。提供了完整的Python转换代码,包括预处理配置、模型加载、构建和导出过程。该方法能有效提升边缘设备上的人脸识别实时性,适用于门禁、考勤等应用场景。

J。 421

POJ 1745 Divisibility(同余定理+01背包)

Divisibility Time Limit:1000MS Memory Limit:10000K Total Submissions:13911 Accepted:4928 Description Consider an arbitrary sequence of integers. O...

pxlsdz的博客 318

沁恒CH32V30X学习笔记02--GPIO的使用教程及2次封装驱动

刚复位后,GPIO 口运行在初始状态,这时大多数 IO 口都是运行在状态所有的 GPIO 口都可以被配置外部中断输入通道,但一个外部中断输入通道最多只能映射到一个GPIO 引脚上,且外部中断通道的序号必须和 GPIO 端口的位号一致,,两方都是一对一的关系。复用功能。

Car12 707

POJ 1745 Divisibility 01背包变式

POJ 1745 Divisibility 题目大意 N个整数的序列(顺序固定),通过加或减的运算,结果能否被K整除 思路 用二维bool数组存余数情况 dp[N][K] 变量i :考察到第 i个数 变量j :第 j个余数的情况 dp[ i ][ j ]:前 i个数是否能运算出余数 j AC代码 #include <bits/stdc++.h> using namespace std;...

LiO_Liu的博客 248

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

POJ 1745 Divisibility(0,1背包)(好题)

题意: 输入n个有序数字,数字前可加上+或-,求是否存在这样的和,使得该和能够整除数字k 每个数字前只有取正或负两种情况,所以符合0,1背包,而且背包的重量是除k的余数(均是正数) //172 KB 297 ms C++ 785 B #include #include #include #include using namespace std; int num[10010]; bool dp[

kalilili的专栏 921

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

POJ 1745 Divisibility 类似0-1背包DP

类似背包DP。 用dp[i][j](bool类型)来表示前i个数组成的和对k取模的值是否存在; 状态转移方程为: if(dp[i-1][j])dp[i][get(tmp-j)]=dp[i][get(tmp+j)]=1;//get:自己写个取模函数,注意负数取模-5%7=2 AC代码: View Code #include #includestring.h> #incl

Nicolas 899

【常规的01背包 POJ3624 UVA562 HDU2546 HDU3466 poj1745】

POJ3624 有N个物品,分别有不同的重量Wi和价值Di,Bessie只能带走重量不超过M的物品,要是总价值最大,并输出总价值 //#include &lt;bits/stdc++.h&gt; #include &lt;iostream&gt; #define X 10005 #define inf 0x3f3f3f3f #define PI 3.1415926535897932384626...

sxy201658506207的博客 278

poj1745-Divisibility(01背包)

#include #include #include using namespace std; int n, K; int v[10005]; bool f[10005][105]; struct poj1745 { /*【问题描述】:有n个数{v1,v2,...,vn},以及一个数K, * 在这N个数之间添加+或-得到一个表达式,判断该表达式的值能否被K整除 */ /*【解题思

Nicke_的博客 428

poj 1745 Divisibility(01背包)

我看的那背包专辑把这个放01背包里了,感觉并不像啊。 (a+b)%mod=(a%mod+b%mod)%mod dp[i][j]==true表示表示前i个数字经过加加减减的操作后,%K=j,dp[i][j]==false,那就是%K!=j。然后对下一个数字num计算(j+num)%K和(j-num)%K,然后标记,最后如果dp[N][0]==true,则说明前边那些数字经过++–的操作后能被K整除

梦幻的蔷薇色 292

F - Divisibility(01背包)

题目链接POJ - 1745 题目大意: 给出N和K,然后给出N个整数(不论正负),问在这N个数中,每两个数之间(即N - 1个位置)添加加号或者减号,然后运算的值对K取余,如果余数等于0输出Divisible,否则输出Not divisible 思路: 定义dp[i][j]为前i个数可以算得的所有情况,1为可以,0为不可以 所以如果dp[N][0]为1那么即可以组成一个数对K取余为0 ...

C'est la vie! 264

POJ 1745 Divisibility(背包)

Description Consider an arbitrary sequence of integers. One can place + or - operators between integers in the sequence, thus deriving different arithmetical expressions that evaluate to different val...

No Pain, No Gain . 161

Divisibility POJ - 1745(01背包+思维+好题)

传送门 题意:给出一组数,可以在其中添加'-'或者‘+’,最后问这些操作下来后可以使得结果被k整除么? 题解:可以看出每个数必须选,那么从前面递推过来就行了,也就是看一些组合,类似于填满背包的做法。 附上代码: #include&lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; using namespace...

肘子的博客 364

poj1745(01背包)

链接:点击打开链接 题意:给出N个数,这N个数中每个数必须用1次,做加减运算,求最后结果是否能整除K 代码:#include #include #include #include #include using namespace std; int dp[10005][105],s[10005]; //dp[i][j]代表前i个数做运算后余数是否等于j i

stay_accept的专栏 1142

背包DP合辑

背包dp题集 大部分和背包dp有关的都会放进来

GeN的博客 480

POJ1745Divisibility(01背包思想)

Divisibility Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11151 Accepted: 3993 Description Consider an arbitrary sequence of integers. One can place ...

apk6909的博客 143

POJ之01背包系列

poj3624 Charm Bracelet 模板题 没有要求填满,所以初始化为0就行 #include<cstdio> #include<iostream> using namespace std; #define N 15010 int n,m,v[N],c[N],f[N]; int main(){ scanf("%d%d",&n,...

weixin_33935777的博客 321

01背包练习总结

01背包问题 这两天在做01背包相关的题,我是从这位高手的博客里面看的题,他已经把类归好了,所以跟着练就行了 神牛牛牛的01背包 这几道题感觉确实还是训练脑壳,虽然上学期刚刚学了01背包问题,但是感觉就是期末最后一道大题用了一哈,而且就是切用那个套路,没啥意思,但是通过这几道题,感觉确实不一样。 第一道题poj3624 嗨呀~~~看了题的第一反应,还是感觉没意思,就是切那个套路嘛,但...

Two_Punch的博客 656
上一篇: (第三场) H Diff-prime Pairs 【数论-素数线性筛法+YY】
下一篇: (第三场) A PACM Team 【dp,五维背包】
莜莫oO
博客等级 码龄9年 7粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值