添加多个算法实现文件,优化输入输出性能,并更新相关测试用例

This commit is contained in:
Zengtudor 2025-07-25 11:54:29 +08:00
parent 3d8c15bd7f
commit 7a20684212
12 changed files with 298 additions and 2 deletions

47
src/7/25/T639136.cpp Normal file
View File

@ -0,0 +1,47 @@
#include <algorithm>
#include <cstdint>
#include <iostream>
#include <istream>
#include <vector>
using ll = int64_t;
#define il static inline
ll n,x,d,ans=0;
std::vector<ll> m,p;
std::vector<ll> c;
il void dfs(ll nn,ll nx,ll nans){
if(nn>n){
ans=std::max(ans,nans);
return;
}
if(nn==1)[[unlikely]]{
for(ll i=0;i*m[nn]<=nx;i++){
c[nn]=i;
dfs(nn+1,nx-i*m[nn],nans+i);
}
return;
}
for(ll i=c[p[nn]];(i<=c[p[nn]]+d && i*m[nn]<=nx);i++){
c[nn]=i;
dfs(nn+1,nx-i*m[nn],nans+i);
}
}
int main(){
std::iostream::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
std::cin>>n>>x>>d;
m.resize(n+1);
p.resize(n+1);
c.resize(n+1);
std::cin>>m[1];
for(ll i=2;i<=n;i++){
std::cin>>m[i]>>p[i];
}
dfs(1,x,0);
std::cout<<ans<<'\n';
}

29
src/7/25/T639160.cpp Normal file
View File

@ -0,0 +1,29 @@
#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int x,y,n;
cin>>x>>y>>n;
int lastA = -x;
int lastB = -y;
int res=0;
for(int i=1;i<=n;i++){
bool needA = (i - lastA > x -1);
bool needB = (i - lastB > y -1);
if(needA && needB){
lastA = i;
res++;
}
else if(needA){
lastA = i;
res++;
}
else if(needB){
lastB = i;
res++;
}
}
cout<<res<<'\n';
}

View File

@ -1,3 +1,51 @@
int main(){
/*
2 10 7 11
2 10
6 1
n=2, W=10, B=7, X=11
c[1]=2,c[2]=10
cost[1]=6,cost[2]=1
*/
#include <algorithm>
#include <cstdint>
#include <iostream>
#include <istream>
#include <vector>
using ll = int64_t;
#define il static inline
ll n,w,b,x,ans=0;
std::vector<ll> c,cost;
il void dfs(ll nn,ll nw,ll nb,ll nc){
if(nn>n){
ans=std::max(ans,nc);
return;
}
for(ll i=0;i<=c[nn];i++){
if(nw<cost[nn]*i)return;
dfs(nn+1, std::min(nw-cost[nn]*i+x,nb+b*i), nb+b*i, nc+i);
}
}
int main(){
std::iostream::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
std::cin>>n>>w>>b>>x;
c.resize(n+1);
cost.resize(n+1);
for(ll i=1;i<=n;i++){
std::cin>>c[i];
}
for(ll i=1;i<=n;i++){
std::cin>>cost[i];
}
dfs(1, w, b, 0);
std::cout<<ans<<'\n';
}

112
src/7/25/T639173d.cpp Normal file
View File

@ -0,0 +1,112 @@
#include <algorithm>
#include <deque>
#include <iostream>
#include <istream>
#include <vector>
using namespace std;
using ll = long long;
const int maxapple = 10000;
int main() {
iostream::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
ll n, W, B, X;
cin >> n >> W >> B >> X;
vector<ll> c(n);
vector<ll> cost(n);
for (int i = 0; i < n; i++) {
cin >> c[i];
}
for (int i = 0; i < n; i++) {
cin >> cost[i];
}
vector<ll> dp(maxapple + 1, -1);
dp[0] = W;
int tot = 0;
for (int i = 0; i < n; i++) {
int ntot = min(tot + (int)c[i], maxapple);
vector<ll> ndp(maxapple + 1, -1);
deque<int> q;
for (int j = 0; j <= ntot; j++) {
ll L = (ll)j - c[i];
while (!q.empty() && q.front() < L) {
q.pop_front();
}
if (j <= tot && dp[j] != -1) {
ll ce = dp[j] + X;
ll me = W + B * (ll)j;
ll gval = min(ce, me) + (ll)j * cost[i];
while (!q.empty()) {
int idx = q.back();
ll cei = dp[idx] + X;
ll mei = W + B * (ll)idx;
ll gidx = min(cei, mei) + (ll)idx * cost[i];
if (gidx <= gval) {
q.pop_back();
} else {
break;
}
}
q.push_back(j);
}
if (!q.empty()) {
int idx = q.front();
ll cei = dp[idx] + X;
ll mei = W + B * (ll)idx;
ll g = min(cei, mei) + (ll)idx * cost[i];
ndp[j] = g - (ll)j * cost[i];
if (ndp[j] < 0) {
ndp[j] = -1;
}
} else {
ndp[j] = -1;
}
}
dp = ndp;
tot = ntot;
}
int ans = 0;
for (int j = tot; j >= 0; j--) {
if (dp[j] >= 0) {
ans = j;
break;
}
}
cout << ans << endl;
return 0;
}
/*
使dp[j]j个苹果后的剩余能量i棵树上摘取k个苹果
使O(n
* tot_apples)tot_apples是苹果总数上限10000
dp[0] = W
ndp[j]
使[j - c_i, j]ndp[j]
dp为ndp
dp数组j使得dp[j] >= 0
*/

3
src/7/25/apple.in Normal file

File diff suppressed because one or more lines are too long

1
src/7/25/apple.out Normal file
View File

@ -0,0 +1 @@
2638

1
src/7/25/pills40.in Normal file
View File

@ -0,0 +1 @@
4052 6785 831888

1
src/7/25/pills40.out Normal file
View File

@ -0,0 +1 @@
327

1
src/7/25/pills41.in Normal file
View File

@ -0,0 +1 @@
9 2 91067

1
src/7/25/pills41.out Normal file
View File

@ -0,0 +1 @@
56916

51
src/7/25/wupin27.in Normal file
View File

@ -0,0 +1,51 @@
50 1000000000 122070
52753
70137 1
46540 1
94083 3
7964 1
76656 5
1302 4
4384 1
51599 7
90597 6
92846 8
16975 4
93612 10
66589 9
55116 8
7868 6
18781 7
81315 4
22170 5
84443 4
43630 18
47725 1
42568 20
12638 21
61342 18
63155 9
19194 26
51343 23
79334 5
60793 24
78736 18
45787 21
98565 24
83835 2
35093 31
34591 21
77312 33
26529 27
83116 12
78667 7
8736 20
24156 20
34451 3
4203 15
30166 17
39756 6
45261 14
90161 15
92457 17
71692 18

1
src/7/25/wupin27.out Normal file
View File

@ -0,0 +1 @@
183958