From 7a20684212384739e1284a8bbf37b2d35c7979da Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Fri, 25 Jul 2025 11:54:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A4=9A=E4=B8=AA=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E5=AE=9E=E7=8E=B0=E6=96=87=E4=BB=B6=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=BE=93=E5=85=A5=E8=BE=93=E5=87=BA=E6=80=A7=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E6=9B=B4=E6=96=B0=E7=9B=B8=E5=85=B3=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/7/25/T639136.cpp | 47 ++++++++++++++++++ src/7/25/T639160.cpp | 29 +++++++++++ src/7/25/T639173.cpp | 52 +++++++++++++++++++- src/7/25/T639173d.cpp | 112 ++++++++++++++++++++++++++++++++++++++++++ src/7/25/apple.in | 3 ++ src/7/25/apple.out | 1 + src/7/25/pills40.in | 1 + src/7/25/pills40.out | 1 + src/7/25/pills41.in | 1 + src/7/25/pills41.out | 1 + src/7/25/wupin27.in | 51 +++++++++++++++++++ src/7/25/wupin27.out | 1 + 12 files changed, 298 insertions(+), 2 deletions(-) create mode 100644 src/7/25/T639136.cpp create mode 100644 src/7/25/T639160.cpp create mode 100644 src/7/25/T639173d.cpp create mode 100644 src/7/25/apple.in create mode 100644 src/7/25/apple.out create mode 100644 src/7/25/pills40.in create mode 100644 src/7/25/pills40.out create mode 100644 src/7/25/pills41.in create mode 100644 src/7/25/pills41.out create mode 100644 src/7/25/wupin27.in create mode 100644 src/7/25/wupin27.out diff --git a/src/7/25/T639136.cpp b/src/7/25/T639136.cpp new file mode 100644 index 0000000..b46e588 --- /dev/null +++ b/src/7/25/T639136.cpp @@ -0,0 +1,47 @@ +#include +#include +#include +#include +#include + +using ll = int64_t; + +#define il static inline + +ll n,x,d,ans=0; +std::vector m,p; +std::vector 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< +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< +#include +#include +#include +#include + +using ll = int64_t; + +#define il static inline +ll n,w,b,x,ans=0; +std::vector 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>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< +#include +#include +#include +#include + +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 c(n); + vector cost(n); + for (int i = 0; i < n; i++) { + cin >> c[i]; + } + for (int i = 0; i < n; i++) { + cin >> cost[i]; + } + + vector 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 ndp(maxapple + 1, -1); + deque 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。 + +*/ \ No newline at end of file diff --git a/src/7/25/apple.in b/src/7/25/apple.in new file mode 100644 index 0000000..d0bc088 --- /dev/null +++ b/src/7/25/apple.in @@ -0,0 +1,3 @@ +900 584611643 830198876 951254373 +3 5 0 3 2 5 0 4 7 9 4 0 3 9 3 4 9 6 2 6 3 2 8 3 2 8 9 0 9 2 1 2 7 9 3 5 9 3 5 7 1 4 7 4 4 7 5 5 6 5 0 9 1 4 0 6 6 2 6 2 6 5 1 2 2 2 9 3 5 9 3 7 7 0 7 8 4 2 1 6 3 5 7 8 1 2 9 7 7 3 5 2 2 5 6 2 3 6 0 4 1 7 5 8 1 8 9 5 6 1 7 1 5 7 5 3 8 1 0 5 5 9 1 8 2 7 0 6 0 2 4 3 2 1 3 9 1 8 2 2 5 5 2 4 7 2 1 7 3 1 3 9 0 4 6 7 2 7 0 5 7 6 7 7 9 6 7 3 4 9 0 7 3 7 3 4 9 8 7 6 8 0 1 8 8 3 1 9 4 9 2 8 2 0 0 3 7 8 1 1 0 0 3 5 8 4 1 4 5 6 4 0 9 6 9 3 0 8 6 1 7 9 6 6 7 1 2 4 3 6 1 3 7 5 9 9 1 0 3 4 1 7 8 1 2 5 6 0 6 3 0 0 5 8 1 0 8 2 6 6 0 4 3 4 8 5 6 8 5 0 5 4 4 8 6 1 4 5 4 7 6 6 4 7 9 6 2 3 3 9 8 9 5 3 0 1 4 6 1 5 6 2 4 2 1 5 1 1 1 8 4 0 8 3 3 4 8 3 9 4 2 0 4 9 3 9 4 9 4 2 2 8 3 5 3 6 1 7 8 1 3 4 8 4 1 6 1 5 8 1 1 6 3 8 9 6 0 3 8 4 7 5 2 0 4 9 2 0 4 9 0 9 9 3 6 3 0 2 4 5 8 4 2 2 2 2 9 7 1 0 2 3 8 8 3 0 6 9 3 1 7 3 3 8 8 6 9 5 0 6 0 3 6 9 1 0 7 1 7 5 9 2 4 6 8 9 9 1 4 5 1 5 4 4 6 4 6 3 9 4 0 9 6 8 5 1 2 0 4 1 5 7 0 3 4 2 5 2 0 4 6 5 6 8 1 5 2 4 0 2 4 6 5 2 4 8 3 3 1 8 3 8 8 7 5 0 1 6 5 0 9 1 8 0 0 9 5 9 8 8 1 3 3 0 8 5 3 2 7 6 9 0 7 4 8 8 8 9 1 3 0 3 3 3 7 0 7 4 6 7 3 1 5 5 3 3 2 9 1 3 2 1 6 8 9 3 8 1 3 5 2 5 4 7 3 4 4 6 5 5 1 6 3 0 2 7 3 1 0 2 6 8 1 1 6 2 4 8 4 5 6 9 4 1 2 2 5 0 1 0 6 9 1 4 9 1 7 2 1 5 3 4 6 0 2 7 7 8 8 7 3 7 0 0 2 2 6 9 1 9 0 0 2 2 5 1 9 0 1 8 9 8 6 1 0 6 5 8 6 3 9 7 4 1 1 0 4 1 7 4 4 1 6 2 8 0 5 2 7 9 4 9 2 8 6 2 1 6 8 4 1 4 0 5 2 0 5 2 1 9 6 8 3 2 3 5 5 9 0 2 1 7 2 3 1 5 7 4 6 4 4 0 2 4 9 0 1 4 9 3 5 5 3 4 5 8 1 9 7 7 2 2 1 0 4 2 7 7 5 7 5 4 2 9 9 7 0 2 6 0 8 0 7 4 3 4 0 8 3 2 7 9 5 1 8 1 1 7 2 2 6 5 9 2 4 7 7 9 3 1 5 1 2 7 4 3 5 5 4 9 7 1 3 2 5 3 6 8 8 8 7 2 4 0 1 4 6 7 3 5 1 0 1 0 1 8 0 5 5 6 3 2 5 5 9 1 9 8 8 9 3 1 3 9 5 4 9 2 2 8 4 9 8 0 7 8 0 1 2 5 7 5 8 2 2 9 3 1 2 5 5 9 8 5 6 6 9 0 4 1 0 6 8 7 8 7 0 2 3 7 8 4 6 9 8 5 4 1 0 0 6 2 0 0 8 1 9 7 7 9 8 2 4 6 7 7 1 4 2 9 +291093554 441614212 506577052 415336256 27580420 273608344 565927959 139112928 254267891 135470154 100169614 509480406 612861631 826839783 122531722 746812759 787607445 22106585 823681742 939449232 23469480 107537890 355570103 412710098 46437276 934733871 229292092 919506104 639744694 531430107 361320476 776970063 480770012 468111670 113217307 758724663 920493733 265977543 371095794 507477448 161401230 398626449 713233350 852174474 927942675 906294211 132779753 979756594 657448740 937609365 165595869 30963771 717056623 39919444 349670953 404448879 579545176 222928818 553163758 359551421 754728667 686287087 85381750 284974632 473085792 961423528 771253646 41713608 793919312 878956551 875723522 579801363 233696433 135842715 919351400 187118213 772725261 5343149 755475716 2532679 764546660 134033197 571553432 197157171 846284254 715262897 957537620 885307300 593084684 148173192 413291071 13894477 34714572 125238198 344419726 193906217 42075198 74206432 646987364 999900565 62236758 774612773 663986275 85272691 244998597 965268480 175873922 768487360 793385040 489381635 967750013 80809760 398444925 809843129 282114417 597590 892234051 46871803 233851728 243897064 424651103 22929140 763461745 79735968 885597026 20058625 117861443 355823476 730687884 5267773 488631284 448524060 676275450 678028226 865141978 622428987 771139972 485699759 570507266 1135807 909639073 160795496 748451924 65261120 626983870 808625839 297957857 638816373 316029658 576381553 739008232 613424623 551628092 526438145 213277375 402634782 361809377 403994582 386626438 892511291 56972120 545692856 704658102 609385687 595728866 846288548 787432155 577996271 107769894 398367546 656817923 865864859 34471719 131553699 55324908 571266761 674044968 697539251 428962584 471546309 64157933 58567715 593054257 784270250 768445042 289167836 288326491 180226605 909586543 277923786 288139077 177843154 860136301 243877881 456747491 94021790 823743985 631062264 989222162 831460238 676129037 364748582 56584067 820642095 37204562 379332257 705779103 122696671 578648377 537318623 338339704 731686450 962802428 531127251 713670625 759004458 328041004 587610957 493040324 536815342 469630525 870809528 387661369 752222363 365025052 762753132 54979159 55230612 547960380 160228324 805926708 30819727 236571340 855259361 29009534 670407225 480513344 449259888 951413342 240803432 324090676 766441318 765295498 834851581 485350947 150474923 89273273 472313705 869859201 447901009 942075528 66469765 465843915 860786090 427463369 44043568 151367739 416951325 254757692 423115904 990643311 301412786 78254676 404821077 599647443 133819130 682739501 797667386 802831928 349438373 435939044 760792591 316421277 715871145 88438452 326379040 779290842 38418441 453643787 617159837 52344027 70745097 454388488 248447662 744624044 154591370 909426367 880813048 13097543 525546716 263415701 263890240 442511203 342897838 30833296 671646945 196155983 199186714 597075103 997657337 867525761 238985644 630277396 328342499 566891550 154317689 604637094 35999832 251766548 897587646 830429794 330304483 975196864 538499344 62386150 344981892 697790522 357106987 827820791 430464002 83558518 499664044 985506316 656262279 324112161 334561135 649786677 803313922 860376943 347885750 110808047 482523980 882280788 118621381 804726051 178730351 738870751 95760034 973639835 139316705 738685705 487680628 650717844 273568515 103543378 791799976 973519820 62686825 103459323 965044747 710560685 29850406 125062469 124383226 800269429 231190620 615811495 13080150 233222565 613994180 741259425 794519728 439751450 411390823 141197399 135255058 194061280 353251745 457277907 418788914 281366379 958719737 632816318 404836682 654899256 831083295 576277555 138597493 181286434 749284792 178371714 799204564 868378810 336773236 173862538 529916246 480640991 92634301 126536479 128265532 832698383 803774160 360167490 371582115 298161329 118108052 560118714 139896328 890474878 190717181 131038321 628796381 413748580 320335074 130085689 211822377 718287160 39696911 904526116 333694499 323642376 674314159 926865094 122743167 798580158 111405403 370825193 254453735 756961546 352557372 317347709 106544593 841096600 218686577 120779622 364039117 17507694 839531997 46712789 63292146 185166066 382266759 633830336 60546610 285582748 956273169 315537235 97184202 80289872 250621897 986791112 129497250 497819848 261896624 502566865 381094982 60105698 317625705 838361140 488450591 352079034 74876953 824510507 983600705 840912907 633347042 734780362 68068815 571273501 787324148 910206269 103724080 119848352 744569756 596678023 766384718 814019298 751510096 71834043 14908243 893210558 279155776 312337115 999858537 562893584 887001253 146065344 932385243 203585520 513363547 304819361 350502232 136348081 30124596 290922858 867693834 561799839 831781861 432174435 766034891 583949272 435147714 345811163 750446337 373105706 928330080 974959105 837451125 433235437 418426329 275346156 63068254 717180516 974705448 662183798 855812810 593408642 504989426 501909838 282881850 13942139 835769806 885572993 763619641 586010393 509648587 144512404 15969271 107565469 257563865 341825281 538742042 846444142 255016866 484086028 365817760 846389537 337270631 298150784 733856815 725883562 863406505 726126756 10305838 850001015 905839261 928886044 729111465 427681051 200636226 336703170 143746923 828410564 959865647 564772865 259822315 999393854 342900991 83825767 110393537 105788998 465186826 200004433 662597876 579792237 80315751 247096741 514531267 957841647 700121795 677085230 48593735 464096863 208349115 118209773 915238492 780950161 9305463 778094057 44384347 790894520 787906357 750953275 303278084 9042035 84100464 225237300 342610017 842898112 786432772 606730297 63745723 573005186 181487954 634242716 401482682 325817500 78906297 619196989 138040761 768731367 806464817 484883102 522833527 907488412 521858068 338313106 284653864 731410379 410823003 335264894 592962308 593388476 959038042 687601159 696153384 551994610 37033808 449932004 717270141 333549176 821660940 128546948 705963310 71180073 968074110 85457098 403864821 707722027 565165634 418639957 925329727 87633762 272813248 87651369 775755519 749786896 234320476 886715181 278515465 642553442 493417509 433712696 642762332 856748092 280307687 345152469 624215936 739620757 170714063 946083027 848512401 656507527 944006581 309422831 411611230 698094201 959051224 554645964 855688968 659479795 713812398 201321044 109021061 99378492 97994834 672196367 840356949 672274102 999365447 865464542 955816263 226252681 228249308 780326014 256685069 958791507 484549639 567793249 631292322 206334605 827099977 200644986 483932490 725766819 48790551 477016081 652819116 436930089 237416730 31343562 450731597 64106388 985229478 652918376 750687840 344100755 127927914 453319951 823920548 451072958 358909774 707985773 57482431 325533823 251609183 400237738 876880162 692097020 96161566 718210727 109592549 966959073 672383062 476151098 940413942 850459852 27578132 796680419 40241666 677310235 889790545 426550685 736949109 365482714 657722356 34284761 136834240 965569390 583795929 5395560 488863746 60545600 830134169 656702402 278808481 917800991 106219336 669469495 106975832 291974463 7644824 430516726 822207139 925600375 986942335 376134917 655176898 54961448 319088326 650828523 340771890 807247259 750483914 4662345 489094632 793562955 184631746 139368754 51946757 983762795 417675890 547619765 877962960 356308761 89916869 990286951 754521207 346990514 451467193 542366478 278292809 47857697 185429501 307830088 205161971 91488093 42087799 847517930 122302606 984006019 210574364 863264070 479705358 754341068 614361635 267603247 569994089 759083134 857369958 994591314 83506150 181041559 574132892 807489873 533130118 809096520 411737414 671385042 882298134 203134181 370159915 17566046 27275483 798004548 820041299 677044425 717289169 298847703 916577635 813090092 959708961 871813488 288369335 900305713 61320207 609547067 160558879 66597299 47781362 488424312 57891528 758776161 786020619 122125767 720883084 572234992 121739278 313108333 76817581 228390598 800481975 508483948 252282623 774304161 772111685 784894621 524830204 105900399 397041208 839891627 648563258 923168681 919650570 127322531 809044683 540512955 545407875 209949729 102441860 251434704 762736479 775092188 131579592 343024912 373587436 434831602 327884073 304576709 567217362 335272679 723804803 639947413 791044693 809875252 822005678 687128995 557449046 367942839 409875360 440614522 884656398 390793005 846021087 380161000 395055753 475582725 184724941 558213472 330748739 206377937 200875832 68793918 666156318 49963393 654597330 51580307 119804939 369432534 470354039 146007444 166281365 814676808 64862431 807142297 133871227 996807289 820175976 98539 656144973 293012444 273122315 987173144 753353064 41363936 566454371 396584824 404875258 510267510 956816677 diff --git a/src/7/25/apple.out b/src/7/25/apple.out new file mode 100644 index 0000000..7432773 --- /dev/null +++ b/src/7/25/apple.out @@ -0,0 +1 @@ +2638 diff --git a/src/7/25/pills40.in b/src/7/25/pills40.in new file mode 100644 index 0000000..254d6c3 --- /dev/null +++ b/src/7/25/pills40.in @@ -0,0 +1 @@ +4052 6785 831888 diff --git a/src/7/25/pills40.out b/src/7/25/pills40.out new file mode 100644 index 0000000..27a69f6 --- /dev/null +++ b/src/7/25/pills40.out @@ -0,0 +1 @@ +327 diff --git a/src/7/25/pills41.in b/src/7/25/pills41.in new file mode 100644 index 0000000..baa712c --- /dev/null +++ b/src/7/25/pills41.in @@ -0,0 +1 @@ +9 2 91067 diff --git a/src/7/25/pills41.out b/src/7/25/pills41.out new file mode 100644 index 0000000..cc9f6f4 --- /dev/null +++ b/src/7/25/pills41.out @@ -0,0 +1 @@ +56916 diff --git a/src/7/25/wupin27.in b/src/7/25/wupin27.in new file mode 100644 index 0000000..d058637 --- /dev/null +++ b/src/7/25/wupin27.in @@ -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 diff --git a/src/7/25/wupin27.out b/src/7/25/wupin27.out new file mode 100644 index 0000000..527416e --- /dev/null +++ b/src/7/25/wupin27.out @@ -0,0 +1 @@ +183958 \ No newline at end of file