"蔚来杯"2022牛客暑期多校训练营5-A Don’t Starve

原题题面:https://ac.nowcoder.com/acm/contest/33190/A

文章目录

  • "蔚来杯"2022牛客暑期多校训练营5-A Don't Starve
    • 题目大意
    • 解题思路
    • 代码实现

题目大意

在二维平面上,有n(1≤n≤2000)n(1\le n\le 2000)n(1≤n≤2000)个位置有食物。从原点出发,每次直线前往其他任意一个有食物的位置收集食物。收集完后再次前往下一个点。每当离开一个有食物的点后,该点的食物就会刷新。并且每次的移动距离必须严格下降。
求最多可以收集到多少食物。

解题思路

如果每次都选符合条件的最长的,可能不是最优。(反例可以自己画)。考虑用dpdpdp。
为了防止最后的最佳答案不是从000出发所得,可以进行反向dpdpdp,输出dp0dp_0dp0​的结果即可
设dpidp_idpi​为从第iii点出发所能得到的最大食品数,则转移方程为:
dpi=1+max(dpj)dp_i=1+max(dp_j) dpi​=1+max(dpj​)
为了保证边的长度由大到小,反向dpdpdp前先由小到大排序。

代码实现

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e3+5;
ll n,dp[N],x[N],y[N],e[N],m;
template<class T>inline void read(T&x){char c,l=' ';while(!isdigit(c=getchar()))l=c;x=c^48;while(isdigit(c=getchar()))x=(x<<3)+(x<<1)+(c^48);if(l=='-')x=-x;
}
struct node{ll x,y,w;node(ll x,ll y,ll w):x(x),y(y),w(w){};
};
vector<node>ve;
ll r(ll i,ll j){return (x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);\\能用整数就用整数
}
int main(){read(n);for(int i=1;i<=n;i++){read(x[i]),read(y[i]);dp[i]=1,ve.push_back(node(0,i,r(0,i)));}for(ll i=2;i<=n;i++)for(ll j=1;j<i;j++){ve.push_back(node(i,j,r(i,j)));}sort(ve.begin(),ve.end(),[](node a,node b)->bool{return a.w<b.w;});//lambda表达式m=ve.size();for(int l=0,r;l<m;l=r){r=l;while(r<m&&ve[l].w==ve[r].w)r++;//防止前后边权相同for(int j=l;j<r;j++)e[ve[j].x]=dp[ve[j].x],e[ve[j].y]=dp[ve[j].y];for(int j=l,u,v;j<r;j++){u=ve[j].x,v=ve[j].y;e[u]=max(e[u],dp[v]+1);if(!u)continue;e[v]=max(e[v],dp[u]+1);}for(int j=l;j<r;j++)dp[ve[j].x]=e[ve[j].x],dp[ve[j].y]=e[ve[j].y];}cout<<dp[0]-1;
}

“蔚来杯“2022牛客暑期多校训练营5-A Don‘t Starve相关推荐

  1. “蔚来杯“2022牛客暑期多校训练营7 L Maximum Range(强连通缩点+网络流输出方案)

    "蔚来杯"2022牛客暑期多校训练营7 L Maximum Range(强连通缩点+网络流输出方案) 题意 找一个环 上面的边权 极差最大 并输出 点 思路 我们先强联通缩点 统计 ...

  2. “蔚来杯“2022牛客暑期多校训练营1

    "蔚来杯"2022牛客暑期多校训练营1 C Grab the Seat! D Mocha and Railgun 题意: 给定一个圆环,中心为(0, 0).给定T个查询,每次给定环 ...

  3. “蔚来杯“2022牛客暑期多校训练营9 补题题解(A、B、G、E)

    "蔚来杯"2022牛客暑期多校训练营9 A Car Show B Two Frogs G Magic Spells E Longest Increasing Subsequence ...

  4. “蔚来杯“2022牛客暑期多校训练营6

    "蔚来杯"2022牛客暑期多校训练营6 [题目链接]("蔚来杯"2022牛客暑期多校训练营6_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛 ...

  5. “蔚来杯“2022牛客暑期多校训练营10,签到题HFIE

    题号 标题 已通过代码 通过率 团队的状态 A Everlasting Transeunt 点击查看 6/42 B Fall Guys-Perfect Match 点击查看 6/115 C Magic ...

  6. “蔚来杯“2022牛客暑期多校训练营8

    Equivalence in Connectivity 前置知识点如下: 1. 并查集哈希 2. 可撤销并查集 3. 线段树分治 #include<bits/stdc++.h> using ...

  7. “蔚来杯“2022牛客暑期多校训练营10补题

    H  Wheel of Fortune 题意 有两个人在打炉石,一方转动了尤格萨隆的命运之轮触发了炎爆选项.双方英雄的血量分别为A和B,双方场面的血量分别为ai和bi,问A获胜的概率. 思路 将代码分 ...

  8. “蔚来杯“2022牛客暑期多校训练营8 D题: Poker Game: Decision

    D题: Poker Game: Decision 原题链接:https://ac.nowcoder.com/acm/contest/33193/D 题目大意 在德州扑克的大小比较规则情况下,发牌顺序与 ...

  9. “蔚来杯“2022牛客暑期多校训练营2 G.[Link with Monotonic Subsequence] 分块构造

    G. Link with Monotonic Subsequence 构造 题目分析 要求构造一个长度为 n n n的序列,使得序列的 max ⁡ ( lis ( p ) , lds ( p ) ) ...

  10. “蔚来杯“2022牛客暑期多校训练营2 个人题解集合

    文章目录 D.[Link with Game Glitch](https://ac.nowcoder.com/acm/contest/33187/D) 题目分析 Code G.[ Link with ...

最新文章

  1. spring boot 引用外部配置文件
  2. TAPI 电话应用程序接口
  3. VB讲课笔记03:对象及其操作
  4. matplotlib设置线条的样式、颜色
  5. 如何轻松了解 Python 必学的 django 框架?
  6. FPGA实现VGA显示(一)——————屏幕驱动及color_bar显示
  7. java获取屏幕上某坐标点的颜色
  8. 190708每日一句 努力VS天赋;假如生活欺骗了你
  9. 图片标注工具LabelImg使用教程
  10. Unity adb环境变量配置
  11. Spyglass之CDC检查(5)
  12. 介绍中国传统节日的网页html,中国传统节日介绍:中秋节
  13. JavaScript获取当前时区 时间转换
  14. 记两个非常不错的技术博客
  15. flowable 中文文档
  16. 摄像头P2P软件提供,完美解决打洞及音视频、用户码传输问题。
  17. 升级JFlash后无法连接JLINK问题处理
  18. 2022年各大高校最新博士薪资汇总~
  19. 今日金融词汇--- 普通股,是什么?
  20. python要安装文本编辑器吗_python安装后推荐的安装两款文本编辑器

热门文章

  1. C语言练习作品 - U盘病毒模拟
  2. 崔希凡-javaWeb-笔记day07-day09(2016年7月26日23:17:27)
  3. 红色警戒2rules.ini数值修改
  4. Fresco的解析和使用
  5. 2022/7/14小记
  6. PDA只需扫描条码能够完成库存盘点
  7. Nacos @RefreshScope 配置不生效问题
  8. u8g2库中文以及图片的显示入门
  9. 大数据自助分析平台系列文章(深入讲解由零开始设计一个大数据自助分析平台)
  10. 从零开始写RISC-V处理器