<队内胡策> 2017.10.10 (贪心+二分答案+DP)

【机器学习概率统计】11 贝叶斯统计推断:最大后验 这一节,我们来介绍另外一种统计推断方法:贝叶斯统计推断方法。 1.回顾贝叶斯定理 首先,我们先来复习一下贝叶斯定理: p(Θ∣X)=p(X∣Θ)p(Θ)p(X)p(\Theta|X)=\frac{p(X|\Theta)p(\Theta)}{p(X)}p(Θ∣X)=p(X)p(X∣Θ)p(Θ)​ 在这个简简单单的式子当中,蕴含了我们要掌握的很多重要内容: 贝叶斯定理当中的四个概率表达式,他们都非常重要,在这一节的内容中将反复出现,我们来一一解析一下: p(Θ)p(\Theta)p(Θ):先验分布。 反映的是在 阅读详情

*56学长们出的题,做的时候觉得好难QAQ,讲完题后自己又打了一遍,开始怀疑起自己的智商T^T。。。好吧就这样吧 _ψ(‥ )


这里写图片描述

注:题目的数据范围以数据范围及提示里的为准。

这里写图片描述


t1:

刚开始做时感觉好像不是很难,因此下决心一定要把这道题做出来!
对于除灰色颜料外的其他颜料,考虑统计一个max,计算一下至少需要多少颜料套装,再对剩余的颜料看看还至少还要多少个颜料套装可以把所需的灰色颜料配出来。
问题的关键就是怎么配。
要知道不同的配法可以决定最后配出灰色颜料的多少。

例如我有4个套装,每个套装有四种颜色,我可以:

这里写图片描述
最后共凑出灰色颜料 200ml 剩余 200 ml;

我也可以:

这里写图片描述
最后共凑出灰色颜料 250ml 剩余50ml;

经过一系列的举例子(?),我们发现如果用来配的单位颜料越少,颜料就越不容易浪费,答案就会更优。(PS:我考试时当然没想到,莫名打了个二分加判断水了40)

既然单位颜料越少越优,反正数据范围小,干脆1ml1ml地配吧!
开一个优先队列,把剩余的颜料统统丢进堆里。每次弹出最多的三种颜料,每种-1,灰色颜料数+1,再丢进去,这样可以保证用的套装更少,答案更优。如果当前弹出的<=0,就把ans++,同时每种颜料数+50ml。

这样还是有些麻烦,不如倒过来想。
每次都把所需的1ml灰色颜料转为当前最少的三种颜料,尽量使每种颜料所需的数量相近,减少浪费。
最后算出所需的颜料套装数。
正解( • ̀ω•́ )✧!

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;

int N,maxn,cnt,ans;
int a[110];
priority_queue<int,vector<int>,greater<int> > q;

int ask()
{
    int b=q.top();
    q.pop();
    return b;
}
int main()
{
    freopen("painter.in","r",stdin);
    freopen("painter.out","w",stdout);
    scanf("%d",&N);
    while(N!=0)
    {
        maxn=0,cnt=0;
        for(int i=1;i<=N;++i)
        {
           scanf("%d",&a[i]);
           q.push(a[i]);
        }
        scanf("%d",&a[N+1]);
        while(a[N+1])
        {
           int x=ask(),y=ask(),z=ask();
           ++x,++y,++z;
           --a[N+1];
           q.push(x),q.push(y),q.push(z);   
        }
        while(!q.empty())
        {
            a[++cnt]=q.top();
            q.pop();
            maxn=max(maxn,a[cnt]);
        }
        ans=maxn/50;
        if(maxn%50!=0) ++ans;
        printf("%d\n",ans);
        scanf("%d",&N);
    }
    return 0;
}

这里写图片描述

t2:

一看到最小距离最大化第一反应二分。因为是在矩阵中求到目标点的距离,所以选择bfs。另外注意矩阵中,两点间的曼哈顿距离就是从一个点到另一点的路径长度。

正解:二分最小距离,bfs判断能否走到目标点,true就调整二分下界,把距离往大处二分,不然就调整上界。因为二分要多次bfs时判断曼哈顿距离,而两点间的距离其实是固定不变的。所以我们先对每个敌人跑一遍bfs,处理出每个点到距离最近的敌人的距离。(并不会TLE)

考试时我是直接暴力判断那个点走或不走,下来又调了调,可以得70分。

ac代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

int N,X,Y,X1,Y1,x2,y2,ans;
int enemy[1010][1010];
int x[4]={0,1,0,-1},
    y[4]={1,0,-1,0};
bool used[1010][1010];
struct maple{
    int x,y,d;
}e[1010],h[1000010];

bool bfs(int n)
{
    memset(used,0,sizeof(used));
    int head=0,tail=1;
    h[tail].x=X1,h[tail].y=Y1;
    h[tail].d=0;
    used[X1][Y1]=1;
    if(enemy[X1][Y1]<n) return false;
    if(enemy[x2][y2]<n) return false;
    while(head<tail)
    {
        ++head;
        for(int i=0;i<=3;++i)
        {
            int xx=h[head].x+x[i],yy=h[head].y+y[i];
            if(xx>=0&&xx<X&&yy>=0&&yy<Y&&!used[xx][yy]&&enemy[xx][yy]>=n)
            {
                used[xx][yy]=1;
                h[++tail]=(maple){xx,yy,h[head].d+1};
                if(xx==x2&&yy==y2) 
                {
                   ans=h[head].d+1;
                   return true;
                }
            }
        }
    }
    return false;
}
void Bfs(int sx,int sy)
{
     int head=0,tail=1;
     memset(used,0,sizeof(used));
     h[tail]=(maple){sx,sy,0};
     used[sx][sy]=1;
     while(head<tail)
     {
        ++head;
        for(int i=0;i<=3;++i)
        {
            int xx=h[head].x+x[i],yy=h[head].y+y[i];
            if(xx>=0&&xx<X&&yy>=0&&yy<Y&&!used[xx][yy])
              if(enemy[xx][yy]>h[head].d+1)
              {
                  enemy[xx][yy]=min(enemy[xx][yy],h[head].d+1);
                  used[xx][yy]=1;
                  h[++tail]=(maple){xx,yy,enemy[xx][yy]};
              }
         }
     }  
}
int main()
{
    freopen("escape.in","r",stdin);
    freopen("escape.out","w",stdout);
    scanf("%d%d%d",&N,&X,&Y);
    scanf("%d%d%d%d",&X1,&Y1,&x2,&y2);
    memset(enemy,63,sizeof(enemy));
    for(int i=1;i<=N;++i)
    {
       scanf("%d%d",&e[i].x,&e[i].y);
       enemy[e[i].x][e[i].y]=-1;
    }
    for(int i=1;i<=N;++i)
       Bfs(e[i].x,e[i].y);      
    int l=0,r=2010;
    while(l+1<r)
    {
        int mid=(l+r)>>1;
        if(bfs(mid)) l=mid;
        else r=mid; 
    }
    printf("%d %d",l,ans);
    return 0;
}

这里写图片描述

t3:
本来以为是数学题,讲了题以后发现竟然是一个类似背包的dp。。。
因为有负数,所以设天平的初始平衡度为7500(20个重25的砝码挂在一个距离天平中央的距离为15的钩子上, 20* 25 * 15)。
令 dp[i][j]为当前挂上了第i个砝码后天平的平衡度为j时的方案数。
则 dp[i][j]=∑dp[i-1][j-c[k]*w[i]].
最后输出dp[g][7500].

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;

int C,G,maxn1,maxn2;
int c[25],w[25];
int dp[25][15010];

int main()
{
    freopen("balance.in","r",stdin);
    freopen("balance.out","w",stdout);
    scanf("%d%d",&C,&G);
    for(int i=1;i<=C;++i)
        scanf("%d",&c[i]);
    for(int i=1;i<=G;++i)
        scanf("%d",&w[i]);
    dp[0][7500]=1;
    for(int i=1;i<=G;++i)
      for(int k=1;k<=C;++k)
        for(int j=w[i]*c[k];j<=15000;++j)
              dp[i][j]+=dp[i-1][j-w[i]*c[k]];
    printf("%d",dp[G][7500]);
    return 0;
}

ヾノ≧∀≦)o

海洋浮游生物识海洋浮游生物识别系统:基于YOLOv10的显微图像自动检测与UI别系统:基于海洋浮游生物识别系统:基于YOLOv10的显微图像自动检测与UI展示YOLOv10的显微图像自动检测与UI展示 本文介绍了如何利用YOLOv10模型进行海洋浮游生物的自动识别,旨在提高传统显微镜观测的效率与准确性。研究背景强调了浮游生物在海洋生态系统中的重要性,并指出传统方法的局限性。数据集选用WHOI-Plankton,包含70多种浮游生物的20000多张带标签图像。文章详细描述了YOLOv10模型的安装、数据集配置、训练与测试步骤,并提供了基于PyQt5的图形化检测界面代码。结果显示,模型在精度、召回率和mAP@0.5等指标上表现优异,推理速度达到约30 FPS。最后,文章提出了部署建议和未来优化方向,如集成摄像 阅读详情

相关推荐

Springboot信息泄露以及heapdump的利用

努力是为了不平庸~安全有些时候是枯燥的,这一次,让我们先人一步,趣学渗透!

LiBai'S BLOG 3万+

【二分答案 && dp】 Bare Minimum Difference

进一步分析我们发现这道题我们只需要关注最小值和最大值,所以每个区间的和只要介于最小值和最大值之间就可以。如果从分割区间的方式出发,这道题很难进行维护,因为分割的方式多样,每一次不同的分割都会产生不同的结果。同时注意到分割区间至少分分割出两个区间,所以我们只需要把一个区间的可能性判掉就行了。但是我们并不需要求出具体的分割方式,我们只需要去检验当前分割方式是否可行即可。枚举所有可能得最小值,而后二分我们的答案,得出我们的最大值。我们注意到对于整个序列来说,子区间的个数最多只有。这样我们就得到了合法区间的范围。

鹭天 361

【UE5】三步搞定Pixel Streaming:从零搭建Windows像素流服务

本文详细介绍了如何在Windows平台上快速搭建UE5 Pixel Streaming像素流服务,从插件安装、项目打包到服务启动的全流程操作。通过实战案例和优化配置,帮助开发者实现零客户端配置、跨设备兼容的高性能3D应用流式传输,特别适合建筑可视化和实时协作场景。

weixin_29000991的博客 318

【技能升级——贪心+二分】

这里很容易发现,局部最优就是全局最优:每次找当前最大的升级,就是整体最好的方案。(这里主要是因为,值是递减的,后面不存在更大的可能,因此不用顾及未来,只看当下)。那么题目就是求最大的第M大的数,将所有大于M的值都网罗进来,以及(可能是部分)等于M的值。因此算法主体是二分。

Kent的博客 302

金蝶EAS uploadlogo漏洞实战:如何快速检测你的系统是否受影响

本文详细解析了金蝶EAS uploadlogo任意文件上传漏洞的检测与防护方法,帮助企业安全团队快速识别系统风险。通过资产发现、漏洞验证和应急响应方案,有效防范财务数据泄露和系统入侵风险,提升企业整体安全防护能力。

weixin_29322553的博客 386

DiffusionDrive实战:如何用截断扩散模型3个月搞定自动驾驶轨迹规划(附代码)

本文详细介绍了如何利用DiffusionDrive截断扩散模型,在三个月内快速构建端到端的自动驾驶轨迹预测系统。内容涵盖从环境搭建、数据处理、模型架构解析到训练调参和推理优化的完整实战流程,并提供了关键代码示例,旨在帮助开发者高效实现高质量的自动驾驶轨迹规划。

weixin_35578748的博客 145

6.二分+贪心

6.二分+贪心二分查找贪心算法练习进击的奶牛 (二分)洛谷P1824A - Trailing Zeroes (III)(判断n!末尾0的个数⭐⭐)(二分)B - Strange fuction(二分)C - Pie(二分)⭐⭐D - Best Cow Line(贪心)E - The Frog's Games(二分)F - 湫湫系列故事——消灭兔子(贪心+运算符重载)⭐⭐G - pairs 二分查找 二分查找的基本思想: 将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x

qq_52008247的博客 5673

19、CATIA V5:参数化建模与零件目录创建全解析

本文详细解析了在CATIA V5中通过设计表实现参数化建模及零件目录创建的完整流程。以支撑块和钩形夹为例,介绍了参数识别、设计表创建与关联、配置管理以及零件目录的构建方法。同时,提供了实际操作建议和注意事项,帮助设计师高效创建和管理零件族,提升设计效率和质量。

raspberrypi5的博客 447

二分+贪心思路的一些例题(学习笔记)

题目描述:(火车站) 输入 2 2 4 106 输出 34

TGA麻辣香锅的博客 428

【2026年阿里巴巴集团暑期实习- 4月25日-算法岗-第二题- 矩阵计数】(题目+思路+Java&C++&Python解析+在线测试)

摘要: 给定两个非负整数序列a和b,构造n×m矩阵C,其中C[i][j]=a[i]×b[j]。统计矩阵中元素≥k的数量。解法是先对数组b排序,然后对于每个a[i],若k=0则直接累加m;若a[i]=0且k>0则跳过;否则计算需要的最小b[j]值,在排序后的b中使用二分查找确定满足条件的元素数量。时间复杂度为O((n+m)log m),空间复杂度O(1)。代码实现了排序和二分查找的高效组合。

m0_73659489的博客 65

LabVIEW实现TCP通信

在本节中,我们将简要探讨TCP通信的基础知识,并以工业物联网平台TLINK中的云端设备数据发布设计为例,详细阐述在互联网环境下TCP客户端应用程序设计的基本方法。

不脱发的程序猿 1960

[C++][算法基础]最长上升子序列(动态规划 / 贪心 + 二分)

1. 数据量较小情况下:动态规划给定一个长度为 𝑁 的数列,求数值严格单调递增的子序列的长度最长是多少。

Caveira271_的博客 514

YOLOv5入门实践(2)——手把手教你利用labelimg标注数据集

YOLOv5入门实践第2步,手把手教你使用labelimg标注数据集

路人贾的博客 1万+

2017.10.16队内互测——胡策

出题人:Byike,RC,lxt ,Q 本套题死宅气息浓厚… Problem 1 :埃罗芒阿老师 题目来源:http://codevs.cn/problem/2913/ 题目描述 埃罗芒阿老师是著名的插画家, 她的工作是为 电击文库出版的的书画插画。快要到截稿日了,埃罗芒阿老师还在水>_ 于是埃罗芒阿老师把每个任务所需的时间和现在(0 时刻)距离每个任务截稿的时间记录了下来,想要计算出

东隅已逝,桑榆非晚~Loi_MurasameKatana 420

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【队内胡策 10.24 T3】洛圣都

题目来源:Codeforce867E(865D) Buy Low Sell High 去题面的传送门 第一反应是一个之前做过的DP,条件稍微改了一下,但是打了半天发现不对。好吧最后还是没有打出水分的DP 正解是贪心 很神奇的做法 首先来说一下做法,维护一个小根堆,从第一天到第n天for一遍,如果这一天的价格小于堆顶元素,直接加入堆。如果大于,ans+=该天的价格与堆顶元素的差,在堆里放入两

Loi_LXTT 437

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

<队内胡策>2017.10.18 (DP+tarjan、SPFA+字符串+脑洞、数学)

*这可是我们组自己从网上找题出的一套考试题,虽然有些水,但是个人认为还是很不错啦(〃’▽’〃)!!尤其是我的题面(≖ᴗ≖๑) 多图预警!!

Loi_Mapleleaf的小池 499

10.16 Loi队内胡策 贪心+毒瘤输入+DP+数论

Problem 1 埃罗芒阿老师 题目来源 题目描述 题解 代码 Problem 2 名侦探柯南 题目来源 题目描述 题解 代码 Problem 3 中二病 题目来源 题目描述 题解 代码 Problem 4 银魂 题目来源 题目描述 题解 代码内存 128M 时间 每点1sProblem 1 埃罗芒阿老师题目来源http://codevs.cn/problem/2913/题目描述埃罗芒阿老师是著

Mercury的博客 991

【队内胡策】2017.10.20

T1 均分纸牌胸有成竹 闭着眼敲上 弄反更新顺序 ggT2 繁忙的都市最小生成树板子T3香甜的黄油spfa可以过。Floyd在codevs上也能A。。 要先算出每个牧场的奶牛数量,加答案的时候乘起来。 总之不要放弃任何一点优化的机会。T4能量项链划分型DP

LOI_Sherlock 384

2017.10.18 队内胡策 D5

昨天考的题,今天早晨才把T2调完,竟然卡了精度原题链接: T1:gjh自己出的(灵感来源:codevs 1742 爬楼梯 链接) T2:luogu 2656 采蘑菇 链接 T3:codevs 1456 隐藏口令 链接 T4:luogu 1984 烧水问题 链接T1 第一问DP,第二问随便打打贪心 结果我第二问贪心在模拟的过程中就打次了(第一次贪心模拟输给了DP)不多说 很简单 代码:

Loi_LXTT 424

[队内测试Day10.10]贪心+模拟+BFS

10.10考试

LOI_pingxing的博客 395

2017.10.16 队内互测 D4

题目来源: T1:codevs 2913 建筑抢修 T2:codevs 1089 侦探推理 T3:luogu 2246 T4:luogu 3927ps:T2没有重新做,太恶心了T1: —考试的时候脑子w了,瞪它了一个小时死活思考不下去,做完后面回来看这道题的时候,直接看不下去了。。最后随便贪心了一下结果就过了一个点。。。 其实这道题本身就是贪心。 优先选择结束时间早的,占用时间短的放在前

Loi_LXTT 487

OI队内测试——石门一

T1:   题目大意:       给你一个立方体,每个面上有些数字,给你一个数字K,你可以玩K轮游戏,       每轮你会将每个面上的数均分为4份,分给相邻的面,求K轮游戏后,上面的数字是       依次给你前、后、上、下、左、右的起始数字大小!   题解:因为轮数最大只有45,所以直接暴力模拟即可,但是可能是数据水,在通分的时候不会爆炸,也可能是我太垃圾不会算最坏情况!    ...

weixin_30825581的博客 104

LOI队内题单qwq

这是LOI队内试题单,emmm......虽然做了没三分之一_(:з」∠)_

Loi_Chairmanの博客 857

2021-11-10NOIP模拟赛总结

2021-11-10NOIP模拟赛总结1.时间安排审题:7:50---8:23T1:8:23---10:23T2:10:23---10:56T3:10:56---11:30T4...2.总结3.对比 1.时间安排 审题:7:50—8:23   T1像是线段树,T2应该是kmp,T3是个DP,T4可能是基环树类型的树上问题 T1:8:23—10:23   又写炸了…一个小时都在写线段树,结果处理全局修改的时候发现改不了,不然找不到了,后来一想修改是全局操作可以用一个桶,就把线段树删了想着拿暴力set做,码完了

wmzyql2114323547的博客 603

codevs 2913 [JSOI2007] 建筑抢修 贪心

GG!

Loi_cgold 342

【蓝桥杯国赛备赛题单笔记1】 DFS+二分

X 星球的机器人表演拉拉队有两种服装,A 和 B。他们这次表演的是搭机器人塔。队内的组塔规则是:A 只能站在 AA 或 BB 的肩上。B 只能站在 AB 或 BA 的肩上。你的任务是帮助拉拉队计算一下,在给定 A 与 B 的人数时,可以组成多少种花样的塔。

hxdxiaoming的博客 628

周六日常训练,背包dp,树形dp,简单dp以及很多数学?

队内周六日常训练,我迟到了半个小时,然后两个dalao开始疯狂过题,这比赛是很多场现场赛组合来的,大概都是铜牌、铁牌,少部分银牌题。 比较适合我们队伍的情况。A 似乎是二分图匹配? 简单的? 熊神交了几发就过了。 B 题意很简单:给a , b 求x,y 满足 x+y = a 且 lcm(x,y) = b 高中数学题 哼! 不是常说 模拟只会猜题意,贪心只能过样例。图论只会套模板,数论只

qq_24664053的博客 2127
上一篇: codevs 3290 华容道
下一篇: <学习笔记>manacher算法
Loi_Mapleleaf
博客等级 码龄10年 17粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值