5月9日贪心考试总结

5月9日贪心考试总结

自制考试链接:https://www.luogu.org/contestnew/show/16837

这次考试没有经过任何复习,我就想知道考出来是啥样子。


游记部分


考前inf小时:

我:“你是复习贪心还是背地生?”

GSC大佬:“当然是复习贪心了啊!”说罢,拿出了生物书。

JMR大佬:“肯定是背地生了啊!我明天肯定会爆(A)零(K)。”

文化课大佬QHY:“JMR你肯定爆(A)零(K)”

CXY大佬:“那你呢?”说罢,拿出了生物书。

果然是神仙啊%%%。

考前0.1小时:

我:“这次绝对不会考加工生产调度问题。”

YYQ大佬:“???”

我:“这次肯定要考种树(区间选点)。”

YYQ大佬:“???”

我:“这次可能要考喷水装置。”

YYQ大佬:“???”

果然是神仙啊%%%。

考试时:

经过我某条以脚趾为神经中枢的反射弧做出的反应,我要按顺序开题。

看到T1(diet):我的天哪!不是说好考贪心的吗???这是 ······ 什么毒瘤东西???

境泽曰:“甚香!”

于是我去看了T2(fruit)。这不是我做过的原题吗?使用STL几分钟切掉

然后我又回去看了T1。

境泽曰:“甚香!”

这不是道红题吗?真是尴尬。两分钟切了。

于是我去看了T3。

这是 ······ 喷水???完了。然后就去看了T4。

woc不是说好贪心的吗???这是 ······ 注明了的暴搜???这题我之前好像是打表过的啊?

于是我就打了个暴搜。

数据范围:n≤200,2≤k≤6。

于是我输入了200 6

2.7e-4 小时过去了......

没有输出!!!

心态崩了,要爆零了!!!

这时,CXY说过的一句话在我脑海中闪现——

"记搜不就是有技巧的搜索吗?"

于是我剪了个枝,好像没有超时。于是我又去刚T3(仿佛不叫刚)

"这次肯定要考种树(区间选点)"。

还真考到了。这不就是个种雷达吗?于是我就切了它。

这时,GSC大佬:“我觉得T3比T4难。”

%%%果然是大佬

剩下半小时,没有查错,没有对拍,而是——

和YYQ大佬颓太空弹珠???

考后:

于是 ...... 我就这样AK了。


题解部分


T1:

这是道签到题(至少写完后的我是这么认为的)。只需要把所有食物按脂肪从大到小排序,取最多脂肪的食物,然后把当前种类的可选个数的限制减一,当然,如果可选的个数为0,那就直接continue;。这样就可以获得最优解了。证明略。第一题真没什么好说的。

代码:

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

const int MaxN=505;
int n,m,k;
int num[MaxN];
struct food {
    int col,fat;
}a[MaxN];

void init()
{
    freopen("diet.in","r",stdin);
    freopen("diet.out","w",stdout);
}

bool cmp(food a,food b)
{
    return a.fat>b.fat;
}

int main()
{
    init();
    scanf("%d%d%d",&n,&m,&k);
    for(int i=1;i<=k;i++) scanf("%d",&num[i]);
    for(int i=1;i<=n;i++) scanf("%d%d",&a[i].fat,&a[i].col);
    sort(a+1,a+1+n,cmp);
    int cnt=0,ans=0;
    for(register int i=1;i<=n;i++) {
        int col=a[i].col,fat=a[i].fat;
        if(num[col]>0) {
            ans+=fat;
            num[col]--;
            cnt++;
        }
        if(cnt==m) break;
    }
    printf("%d",ans);
}

T2:

要求用优先队列,那我们就用。这道题的策略肯定是每次选出最小的两堆果子,合并后再排序。当然快排很浪费,是会超时的。我们使用小根堆来实现。这种水题也没什么好说的。

我的代码:

#include<iostream>
#include<cstdio>
#include<queue>
#include<fstream>
using namespace std;

priority_queue<int,vector<int>,greater<int> >q;
int n;

inline void init()
{
    freopen("fruit.in","r",stdin);
    freopen("fruit.out","w",stdout);
}

int main()
{
    init();
    scanf("%d",&n);
    for(int i=1;i<=n;i++) {
        int x;
        scanf("%d",&x);
        q.push(x);
    }
    int ans=0;
    while(q.size()>1) {
        int x=q.top();q.pop();
        int y=q.top();q.pop();
        ans+=x+y;
        q.push(x+y);
    }
    printf("%d",ans);
}

T3:

这题引入了平面直角坐标系,看起来比较复杂,但实际上就是板子。我们先预处理出每个岛可被观察的区间,也就是说每个区间内要求有一个雷达。这就是区间选点的板子了。板子就没什么好说的了。

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

const int MaxN=1005;
struct segment {
    double l,r;
}a[MaxN];
int n;
double d;
int num[MaxN];

inline double calc(double y)
{
    return sqrt(d*d-y*y);
}

inline void init()
{
    scanf("%d%lf",&n,&d);
    for(register int i=1;i<=n;i++) {
        double x,y;
        scanf("%lf%lf",&x,&y);
        if(y>d) {
            printf("-1");
            exit(0);
        }
        double len=calc(y);
        a[i].l=x-len;
        a[i].r=x+len;
        num[i]=1;
    }
}

bool cmp(segment x,segment y)
{
    return x.r<y.r;
}

inline void work()
{
    int ans=0;
    sort(a+1,a+1+n,cmp);
    int now=0;
    for(int i=1;i<=n;i++) {
        double nowr=a[i].r;
        if(num[i]<=0) continue;
        num[i]--;
        for(register int j=i+1;j<=n;j++) {
            if(a[j].l<=nowr) {
                num[j]--;
            }
        }
        ans++;
    }
    printf("%d",ans);
}

int main()
{
    init();
    work();
}

T4:

这道是老师故意出的超纲题。肯定不带脑子暴搜是会 T 掉的(如果傻到一种境界还会WA)。首先需要判重。在暴搜剪枝中,记last是一种常见的策略。所以我们就记一个last,每次下一个数必定大于last,这样我们搜出的组合就是单调不降的,就不会重了。然后考虑T的问题。我们发现,当下一个数过大时,就没有保持序列单调不降的可能了。所以我们再加一个可行性剪枝,枚举量就会大大减少了。

代码:

#include<iostream>
#include<cstdio>
#include<fstream>
using namespace std;

int n,k;
int ans=0;
int sum=0;

inline void init()
{
    freopen("divide.in","r",stdin);
    freopen("divide.out","w",stdout);
}

inline void dfs(int l,int a)
{
    sum++;
    if(sum==k+1) {
        if(a==0)
        ans++;
    }
    else {
        for(register int i=l;i<=a-i*(k-sum);i++) {
            dfs(i,a-i);
        }
    }
    sum--;
}

int main()
{
    init();
    scanf("%d%d",&n,&k);
    dfs(1,n);
    printf("%d",ans);
}

总结部分



虽然这次AK了,但仍有很多不足:

1、眼瞎。看错了多少题意?红题都能看成毒瘤?幸好我心态不差,不然就爆零了。

2、颓废。写完就颓,万一文件错了怎么办?幸好脸好,不然就爆零了。

3、急躁。写题的时候手忙脚乱的。这样容易写炸。幸好我脸好,没有炸。

1: 焦鸣睿还真爆零了
2: YYQ怎么回事?我不是说了要考种树吗?
3: GSC和CXY把T3弄成了大模拟海星

原文地址:https://www.cnblogs.com/SocialZhao/p/10850231.html

时间: 2024-11-08 23:04:15

5月9日贪心考试总结的相关文章

7月29日心得————考试总结

五个数比大小 #include<iostream> //#include<cstdio> using namespace std;int main (){ freopen("fivesort.in","r",stdin); freopen("fivesort.out","w",stdout); int a,b,c,d,e,t; cin>>a>>b>>c>>

项目管理者联盟PMP认证与培训班针对2015年3月考试(3月22日开课)

美国项目管理学会全球教育合作伙伴(Global REP) 国家外专局培训中心授权机构 (全面针对PMBOK第五版考试) 面向对象 各类科技与研发.IT软件与通信.工程与设计等项目导向型企业的各级管理人员与项目管理人员.项目经理与技术经理,有志于成长为项目经理的优秀工程师与技术骨干. 课程优势 十余年美国项目管理学会全球教育合作伙伴(Global R.E.P. No. 3254),2003年开始PMP培训,课程质量业界认可,服务专业.专注. 国内最强大的PMP专家团队.主讲老师具备世界500强外资

项目管理者联盟PMP认证与培训班针对2015年3月考试(5月9日开课)

美国项目管理学会全球教育合作伙伴(Global REP) 国家外专局培训中心授权机构 (全面针对PMBOK第五版考试) 面向对象 各类科技与研发.IT软件与通信.工程与设计等项目导向型企业的各级管理人员与项目管理人员.项目经理与技术经理,有志于成长为项目经理的优秀工程师与技术骨干. 课程优势   十余年美国项目管理学会全球教育合作伙伴(Global R.E.P. No. 3254),2003年开始PMP培训,课程质量业界认可,服务专业.专注. 国内最强大的PMP专家团队.主讲老师具备世界500强

项目管理者联盟PMP认证与培训班针对2015年3月考试(1月24日开课)

美国项目管理学会全球教育合作伙伴(Global REP) 国家外专局培训中心授权机构 (全面针对PMBOK第五版考试) 面向对象 各类科技与研发.IT软件与通信.工程与设计等项目导向型企业的各级管理人员与项目管理人员.项目经理与技术经理,有志于成长为项目经理的优秀工程师与技术骨干. 课程优势  十余年美国项目管理学会全球教育合作伙伴(Global R.E.P. No. 3254),2003年开始PMP培训,课程质量业界认可,服务专业.专注. 国内最强大的PMP专家团队.主讲老师具备世界500强外

6月9日开始期中考试的视频

这周一(6月9日)正式开始学习第10课后面的"期中考试",先是看完2个版本的"架构作业介绍",前天晚上完成视频"02-Linux系统环境配置与优化w". 目前在第10课,还有1个"课前[apache+rsync上机实战]考试及讲解"的视频目录里,有4个视频(包括题目讲解的视频)没有看.经过9日上午的分析,这部分视频讲解其实就是第9课的课前上机考试题.当时,因为那个目录里没有上机实战题的讲解视频,我便认为"上机实战题&

西北政法大学8月28日至29日网上报名,1011日至12日参加考试

2014年西北政法大学8月28日至29日网上报名,10月11日至12日参加考试 新疆2015年成人高考报名时间.入口专题 新疆2015年成人高考报名 登录新疆成人高考报名网站

◆CFA考试二级胜在根本-9月27日上海交大解密讲座◆

跨越CFA考试"分水岭"·攻克2015年6月CFA二级考试 与你一起"鸟瞰"CFA二级考试,赢在起点,胜在根本 金程教育2015年6月CFA二级真题大解密及备考策略说明会(上海专场) ◆2014年9月27日(周六)14:30-16:30 上海交大徐汇校区 ◆编辑短信内容"姓名+考试级别"发送至"◆13162963778◆"预约,收到回执短信,即为预约成功. 作为CFA考试中的"分水岭",CFA二级考试成为广

10月8日至11月底考试安排

具体事项: 自考 2016年10月16日上午 思想道德修养与法律基础 2016年10月16日下午 办公室管理 2016年10月23日下午 企业管理概论 2016年11月19.20日考试 软考 2016年11月12日 CCF比赛 2016年11月12日截止 中止小说,德州扑克行为,全力解决以上问题

10月2日考试题解(待更新)

10月2日考试题解 $ T1 $ : 题意简述: 给一棵 $ n $ 个节点的树,点有非负权值,你需要找出两条点不相交的路径,使它们长度和最大. $ n\le 10^5 $ $ solution: $ 有直径的性质可知,最终两条路径只有两种情况: 两条路径其中一条为直径 两条路径都有一个端点为直径端点 于是我们两遍 $ DFS $ 找到一条直径,并记录这条直径.将这条直径标记(删掉),从直径的每个点开始向直径两边树型 $ DP $ ,找到从直径上每个点出发的最长链,以及不与直径相交的最长链(这个