Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_36480062
Algorithm
提交
f20c4f81
A
Algorithm
项目概览
qq_36480062
/
Algorithm
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
Algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f20c4f81
编写于
4月 11, 2020
作者:
qq_36480062
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
c
上级
247d24fb
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
56 addition
and
4 deletion
+56
-4
ACWing/src/basic/queue/单调队列.java
ACWing/src/basic/queue/单调队列.java
+1
-0
ACWing/src/线性dp/背包模型/兑换硬币.java
ACWing/src/线性dp/背包模型/兑换硬币.java
+2
-1
ACWing/src/线性dp/背包模型/普通二维费用背包.java
ACWing/src/线性dp/背包模型/普通二维费用背包.java
+1
-1
ACWing/src/线性dp/背包模型/混合背包.java
ACWing/src/线性dp/背包模型/混合背包.java
+1
-1
ACWing/src/线性dp/背包模型/金明的预算方案.java
ACWing/src/线性dp/背包模型/金明的预算方案.java
+6
-1
挑战程序设计竞赛/src/basic/抽签.java
挑战程序设计竞赛/src/basic/抽签.java
+45
-0
未找到文件。
ACWing/src/basic/queue/单调队列.java
浏览文件 @
f20c4f81
...
...
@@ -8,6 +8,7 @@ import static java.lang.System.in;
/**
* https://www.acwing.com/problem/content/156/
* 滑动窗口
* 给定一个大小为n≤106
* 的数组。
* 有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。
...
...
ACWing/src/线性dp/背包模型/兑换硬币.java
浏览文件 @
f20c4f81
...
...
@@ -55,4 +55,4 @@ public class 兑换硬币 {
}
return
f
[
n
];
}
}
}
\ No newline at end of file
ACWing/src/线性dp/背包模型/普通二维费用背包.java
浏览文件 @
f20c4f81
...
...
@@ -35,7 +35,7 @@ import java.util.Scanner;
* 属性: max 最大价值
* 状态划分:所有包含第i个物品的选法,所有不包含物品i的选法
* 不选第i个物品:f[i-1,j,k]
* 包含第i个物品:f[i-1,j-v[i],k-m[i]]]+w[i
* 包含第i个物品:f[i-1,j-v[i],k-m[i]]]+w[i
]
* |_______| + 物品i
* |_______| + 物品i
* |_______| + 物品i
...
...
ACWing/src/线性dp/背包模型/混合背包.java
浏览文件 @
f20c4f81
...
...
@@ -40,7 +40,7 @@ public class 混合背包 {
}
else
{
if
(
t
[
i
]
==
-
1
)
t
[
i
]
=
1
;
for
(
int
k
=
1
;
k
<=
t
[
i
];
k
*=
2
)
{
for
(
int
j
=
V
;
j
>=
k
*
v
[
i
];
j
--)
{
for
(
int
j
=
V
;
j
>=
k
*
v
[
i
];
j
--)
{
//把k个物品看成可选可不选的一个物品,01背包
f
[
j
]
=
Math
.
max
(
f
[
j
],
f
[
j
-
k
*
v
[
i
]]
+
w
[
i
]
*
k
);
}
t
[
i
]
-=
k
;
...
...
ACWing/src/线性dp/背包模型/金明的预算方案.java
浏览文件 @
f20c4f81
...
...
@@ -46,6 +46,11 @@ import java.util.Scanner;
* 10表示只买第二个附件。其它过程与分组背包完全一致,只需要注意价格和价值的累加即可。
* 分组背包:把每一个主件与附件的组合看成一个组
* 状态定义:f[i,j]代表前i种主件可选价值不超过j的所有方案
* 二进制枚举所有主件和附件的所有组成方案
* 可以算出价值和体积
* 状态划分:不选第i种组件,f[i-1,j]
* 选第i种主件:f[i-1,j-v]+w 和第一个附件f[i-1,j-v]+w .... 或者不选第一个附件,选第二个附件...
*
*/
public
class
金明的预算方案
{
static
class
node
{
...
...
@@ -76,7 +81,7 @@ public class 金明的预算方案 {
int
t
,
e
;
for
(
int
i
=
1
;
i
<=
n
;
i
++)
{
if
(
zhu
[
i
]
!=
null
)
{
//是主件
for
(
int
j
=
m
;
j
>=
0
;
j
--)
{
for
(
int
j
=
m
;
j
>=
0
;
j
--)
{
//枚举体积
for
(
int
k
=
0
;
k
<
1
<<
fu
[
i
].
size
();
k
++)
{
//有哪些附件,二进制枚举所有选和不选的情况
t
=
zhu
[
i
].
v
;
e
=
zhu
[
i
].
m
;
...
...
挑战程序设计竞赛/src/basic/抽签.java
0 → 100644
浏览文件 @
f20c4f81
package
basic
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Scanner
;
/**
* 是否存在取4个数和为m
* n=3
* m=10
* k=1 3 5
* 输出yes 1 1 3 5结果为10
*/
public
class
抽签
{
public
static
void
main
(
String
[]
args
)
{
Scanner
sc
=
new
Scanner
(
System
.
in
);
n
=
sc
.
nextInt
();
m
=
sc
.
nextInt
();
for
(
int
i
=
0
;
i
<
n
;
i
++)
{
k
[
i
]
=
sc
.
nextInt
();
}
for
(
int
i
=
0
;
i
<
n
;
i
++)
{
for
(
int
j
=
i
;
j
<
n
;
j
++)
{
list
.
add
(
k
[
i
]
+
k
[
j
]);
}
}
Collections
.
sort
(
list
);
boolean
f
=
false
;
for
(
int
i
=
0
;
i
<
n
;
i
++)
{
for
(
int
j
=
0
;
j
<
n
;
j
++)
{
if
(
Collections
.
binarySearch
(
list
,
m
-
k
[
i
]-
k
[
j
])>
0
){
f
=
true
;
break
;
}
}
}
if
(
f
)
System
.
out
.
println
(
"yes"
);
else
System
.
out
.
println
(
"no"
);
}
static
ArrayList
<
Integer
>
list
=
new
ArrayList
<
Integer
>();
static
int
[]
k
=
new
int
[
1000
];
static
int
n
,
m
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录