7.3 学校noip模拟赛解题报告

微若萤火,可亮一方天地

题目

60 + 60 + 10 = 130(大佬们莫批qaq)


T1

比赛过程中看到题后想了15分钟没有想出正解,然后就开始打朴素算法 ,因为给的时间很充裕,2s的时间限制可以搞很多事情,所以我就直接n^2暴力,还专门写了一个函数来进行数字间的寻找(只是为了代码美观,没有卵用qaq)

后来比赛结束后我上洛谷搜了一下,没想到竟然搜到了原题,看了看题解后才知道,正解是维护了一个单调栈,正常输入输出, 然后进行判断, 若栈不空且栈顶元素的h小于h[i],则i点可将栈顶元素的v值接收,即ans[i] += v[s.top()], 若大于,则反之,即ans[s.top()] += v[i];,最后再将i点push入栈就可以了

核心代码:

for (int i = 1; i <= n; i++) {
		while (!s.empty() && h[s.top()] < h[i]) {
			ans[i] += v[s.top()];
			s.pop();
		}
		if (!s.empty()) ans[s.top()] += v[i];
		s.push(i);
	}

T2

一道混合背包问题,主要难在甲类物品的选取,除此之外甚至都没有用大数据卡多重背包,直接拆分就可以轻松AC本题,比赛过程中我没有管甲类,遇见甲类直接跳过,只计算乙类和丙类,结果拿了60分

然后依旧是在洛谷上找到了原题,翻了翻题解,发现题解给出了一条证明:

可以证明一定存在一种最优解,其中取的甲类物品总数<=1

证明过程:

如果取了两个或以上甲类物品,那么取其中任意两个(设属性分别为(a1,b1),(a2,b2),各取了x1,x2的体积),将它们替换为一个体积是它们之和,属性为它们之一的物品,一定不会更劣

a1(x1+x2)^2 -b1(x1+x2)>=a1*{x1}^2 -b1* x1+a2*{x2}^2-b2*x2**

有了这条证明就简单很多了,只需要在计算甲类时枚举取与不取两种情况即可

甲类代码:

for(i=0;i<dd.size();i++)
    {
        for(j=0;j<=m;j++)
        {
            an2=max(an2,ans[m-j]+dd[i].fi*j*j-dd[i].se*j);
        }
    }

T3

得分最低的一道题,也是得分率最低的一道题,也是本场测试中最难的一道qaq

看到这道题后我就直接崩溃了,啊啊啊啊,我图论是真的差啊,本来就没有怎么好好学,还隔了这么久(大约有两三个月了呜呜呜呜),现在连最短路都差点忘了,还好我还有点印象,用了好一会把板子打出来了,呼~,总算写完了,就笑着对旁边的wwx大佬说第三题好简单啊,不就是一个最短路的板子吗,然后大佬将视线从显示屏前转移到我身上,可这是第三题啊,我现在还没有想出来怎么搞定同一局域网内的电脑

。。。嗯?什么鬼???

于是我又回去读了一遍题

另外,如果存在A到B的连接的同时也存在B到A的连接的话,那么A和B实际上处于同一局域网内,可以通过本地传输,这样花费的传输时间为0。

瞬间崩溃,于是又开始了苦逼的改代码生活,可是我是真的真的真的不会强连通分量啊啊啊!!!

于是乎就打了暴力搜索,结果只拿了10分,在不甘心的情况下继续改代码,重新提交,结果0分。。。

就这样改改交交,大约交了四五次吧,我终于放弃了,代码越改越长,可永远是·0分

所以,,,本题的代码就不粘了,我不想丢脸qaq,回去学tarjan了(呜呜呜…

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值