ABC373 E/F

news/2024/10/3 20:16:07

ABC373 E/F

E - How to Win the Election

二分答案比较好想,可是细节有点多,复杂度 $ O(n\log^2 n) $ 。一开始忘了一个特判,狂WA不止,然后调完再交,直接破防,WA一个点。接着尝试去卡,不知道怎么想的,粘错代码了。还剩半个小时,非常忙碌地调代码,但是不知道在忙什么。

赛后找到正确代码,调过hack( $ N = M $ 的情况 )。

代码不贴了,太丑。

F - Knapsack with Diminishing Values

正解做法

按照 $ w_i $ 分组,计算对于每个 $ w_i $ ,选择 $ j $ 个物品能达到的最大价值。具体来说,就是用堆维护该物品选择第 $ k $ 个产生的价值,贪心策略显然正确。然后就是普通的背包,复杂度最劣是一个调和级数, $ O(NW\log W) $ 。

暴力

#include<bits/stdc++.h>
const int N=1e5;
int w[N],v[N];
long long f[N];
int main(){int n,c;scanf("%d%d",&n,&c);for(int i=1;i<=n;i++){scanf("%d%d",&w[i],&v[i]);}for(int i=1;i<=n;i++){bool con=1;for(int k=1;con;k++){con=0;for(int j=c-w[i];j>=0;j--){if(f[j]+v[i]-2*k+1>f[j+w[i]])con=1,f[j+w[i]]=f[j]+v[i]-2*k+1;}}}printf("%lld",f[c]);
}

xrlong 翻最短解的时候找的这个,逆天暴力哥,而且跑飞快,可以被hack。

优化

发现hack暴力的方法不难想,只要然他前面的决策不够优秀,后面就会跑很多次。而我们伟大的 wang54321 发明了两种优化。

第一,随机化,复杂度不知道是什么,不考虑。

第二,排序,按照 $ v_i $ 降序排列,也不知道什么复杂度,但是跑得很快。(欢迎hack)

#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
int w[N],v[N];
long long f[N];
struct node{int x,y;
}e[N];
bool cmp(node a,node b){return a.y>b.y;
}
long long cnt;
int main(){int n,c;scanf("%d%d",&n,&c);for(int i=1;i<=n;i++){scanf("%d%d",&w[i],&v[i]);e[i].x=w[i];e[i].y=v[i];}sort(e+1,e+n+1,cmp);for(int i=1;i<=n;i++){bool con=1;for(int k=1;con;k++){con=0;for(int j=c-e[i].x;j>=0;j--){if(f[j]+e[i].y-2*k+1>f[j+e[i].x])con=1,f[j+e[i].x]=f[j]+e[i].y-2*k+1;cnt++;}}}cerr<<cnt<<endl;printf("%lld",f[c]);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/67456.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

VulnHub2018_DeRPnStiNK靶机渗透练习

据说该靶机有四个flag 扫描 扫描附近主机arp-scan -l扫主目录扫端口 nmap -sS -sV -n -T4 -p- 192.168.xx.xx 结果如下 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-30 19:25 CST Nmap scan report for 192.168.93.131 Host is up (0.0024s latency). Not shown: 6…

昨天放洛谷的图

因为刷不出来以及有人问所以放这了

python多进程debug

代码调试 问题阐述 最近遇到一个python debug多进程的问题 有一个进程A,这个进程会fork出8个进程B,fork join结束后,又会fork出8个进程A。 假设按时间有序,我就只想断fork出的第一个B和第一个进程A,怎么做?(breakpoint just break only once)类似于java多线程调试的意思…

一些数学知识题

欧几里得算法费马小定理 当a,p都是是质数时,a^(p-1)=1(mod p) 证明: 举个例子 a=2,p=5; 1,2,3,4 集合(1) {1,2,3,4...,(p-1)} 2,4,6,8 => %5 => 2,4,1,3 集合(2) {1a%p,2a%p,3a%p,4a%p...,(p-1)a%p} 我们发现{1,2,3,4}和{2,4,1,3}只是…

题解:洛谷P2339 [USACO04OPEN] Turning in Homework G

题目链接:洛谷P2339 [USACO04OPEN] Turning in Homework G 首先我们考虑如何处理到达给定时间后才能交作业这一限制。其实在生活中,我们一般只会考虑什么时候交作业截止 (除了某些卷王),这样我们只用考虑如何在最大结束时间之前交作业,而不是在所有作业都没开始交之前考虑…

独立站如何批量查收录,教你独立站如何批量查收录的简单方法

独立站批量查收录是提升网站SEO效果的重要步骤。以下提供几种简单且实用的方法,帮助你高效地批量查询独立站的收录情况: 一、使用搜索引擎的Site指令结合自动化脚本 了解Site指令: 在搜索引擎(如谷歌)的搜索框中输入“site:域名”(替换为你的实际域名),执行搜索后,可以…

谷歌收录查询工具,告诉你谷歌收录查询工具使用指南

谷歌收录查询工具是网站管理员和SEO专家用于监控和管理网站在谷歌搜索结果中表现的重要工具。以下是一份详细的谷歌收录查询工具使用指南,旨在帮助你更好地了解和使用这些工具。 一、Google Search Console(谷歌搜索控制台) Google Search Console是谷歌官方提供的免费工具,…

『模拟赛』多校A层冲刺NOIP2024模拟赛01

『模拟赛记录』多校A层冲刺NOIP2024模拟赛01Rank 打得还可以总A. 构造字符串 签,但是挂了 40pts。 发现判条件只有相等和不相等,于是想到并查集维护连通块,将强制相同的两个位置的连通块合并,强制不同的先记下,最后统一判断。 重点在细节处理,合并连通块时要将位置靠后的…