乱扯

爆炸的过程是这样的

写了\(2.5h\)的\(T1\)过不去大样例,自闭了

决定调\(T2\)然后过了样例但事实上写的完全是假的

这个时候突然\(T1\)灵光一闪就没再看\(T2\)了

然后就一直调\(T1\)到结束前半小时

然后怀着爆零的觉悟和破碎的心态十来分钟调了一个假的\(T3\)

然后\(T4\)看都没看甚至连白给的\(20pts\)都不带拿的

然后就并不知道自己四个小时做了什么地交程序了

然后就做好了爆零的心理准备

然后发现最后是\(40+10+5=55\)

~有一说一当时发现有分还高兴了一会来着~

然后就被各种吊打各种半年白学了

实际上如果先调\(T2\)是可以拿\(90pts\)的

\(T3\)就算想不出拓扑排序啥的纯暴力也有\(30pts\)啊

\(T1\)拿个\(40pts\)又怎样呢

这不就\(40+90+30+20=180\)了吗

虽然其实也并不算高吧……但是至少能拿的分拿到了,后面心态好点可能也能多往优化的方面想想吧

\(T1\)出的确实挺令人不知道怎么评价的,但是这次碰到也算是个教训吧

至少联赛的时候要先读完四个题然后把暴力都打了再去求正解

毕竟对于现在这个水平的我……能拿的分有时也就是暴力给的吧

笔记

T1 儒略日

模拟

考试时确实想到了400年跳这个操作,大样例一直差1,是因为有个细节没考虑到

1582这个年份,跳完了400开始跳100的时候,第一个一百年是包含被400整除的那个闰年的,忽略这个会差出一天

同时如果写了跳4,也要注意跳到被100整除不被400整除那年的情况

码力不行,调试不行

T2 动物园

可以枚举每一位的情况算出总共可以承载的动物,处理出2的次方减去\(n\)就行了

一位可以用有两种情况,一种是没有与他相关的要求,另一种是有要求,但当前动物已经占上了

两个bool数组就可以处理

需要特判两种情况:一是答案为\(2^{64}\),\(ull\)存不下。另一种是答案为\(2^{64}\)减一个数,可以用\(ull\)下0的按位取反得到\(2^{64}-1\),再减\(n-1\)

T3 函数调用

题里的“树”是一个提示,这题不需要高级数据结构

可以用调用关系建出一个有向无环图

考虑如果只有1操作,拓扑排序后可以记录每个操作实际被调用次数

如果只有2操作,就是拓扑排序处理出每个操作实际使全体乘的数

混合起来思路也类似,需要注意加法操作会因在其之后进行的乘法操作而重复多次

所以倒序处理所有操作,然后按拓扑序将每个点被调用的次数下传到他调用的所有操作,注意这时也要关注之后的乘法操作对之前的加法操作次数产生的影响

T4 贪吃蛇

思路&\(70pts\)做法:

对于当前最大的蛇,如果他吃完后没有变成最小的,他就一定再也不会被吃了,因为由单调不降的性质,他的下一条蛇或者放弃决斗,或者吃了以后变得比他小,这个时候他可以放心吃

如果他吃完后变成了最小的,这个时候需要考虑他的下一条蛇是否“有勇气”吃掉他

这种情况下,当有三条蛇时,最大的蛇不敢吃

那么当有四条蛇是最大的蛇敢吃,五条时不敢吃,以此类推

我们需要考虑当前最大值,最小值和次小值,这个可以用\(set\)来求

用dfs来搜索答案即可

\(70pts\):

//I didn't mean to show off my English skills, but I can't fix my ShuRuFa.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define N 1000005
#define sll set<node> ll T;
ll n,a[N];
ll k,t1,t2; inline ll read()
{
ll f=0,s=0; char c=getchar();
while(c>'9'||c<'0')f=(c=='-'),c=getchar();
while(c>='0'&&c<='9')s=(s<<3)+(s<<1)+(c^'0'),c=getchar();
return f?-s:s;
} ll ans; struct node
{
ll no,v;
node(){no=v=0;}
node(ll _no,ll _v){no=_no,v=_v;}
bool operator<(const node &b)const{return v!=b.v?v<b.v:no<b.no;}
}; sll S; //k 1-been taking risks 0-x
//return 1-neat 0-eat
bool dfs(bool k)
{
sll::iterator it1,it2,it3;
if(S.size()<=2)return 1;
while(S.size()>2)
{
it1=S.begin(),it2=it1,it3=S.end(),it2++,it3--;
node mx=*it3,mi=*it1,cm=*it2,de=node(mx.no,mx.v-mi.v);
ll tt=S.size();
S.erase(it1),S.erase(it3),S.insert(de);//eat
if(de<cm)
{
if(!dfs(1))//dare to take the risk
{
ans=tt-1;//eat it
return 1;//the previous snake dare not to
}
else//dare not to take the risk --- same as the expectation, and the previous snake dare to;
{
ans=tt;
return 0;
}
}
if(k)return 1;
}
ans=1;
return 1;
} int main()
{
//freopen("snakes.in","r",stdin);
//freopen("snakes.out","w",stdout);
T=read();
for(int i=1;i<=T;i++)
{
S.clear();
if(i==1)
{
n=read();
for(int j=1;j<=n;j++)a[j]=read(),S.insert(node(j,a[j]));
}
else
{
k=read();
for(int j=1;j<=k;j++)t1=read(),t2=read(),a[t1]=t2;
for(int j=1;j<=n;j++)S.insert(node(j,a[j]));
}
ans=n;
dfs(0);//there's no snake been taking risks at first
printf("%lld\n",ans);
}
return 0;
}

后记

出分,\(40+40+20+0=100\),数据真的水。

就应该让我爆零一次才好。

「考试」CSP-S 2020的更多相关文章

  1. AC日记——「HNOI2017」礼物 LiBreOJ 2020

    #2020. 「HNOI2017」礼物 思路: A题进程: 一眼出式子->各种超时过不去->看题解明白还有fft这个东西->百度文库学习fft->学习dft->学习fft ...

  2. 「考试」noip模拟9,11,13

    9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...

  3. 「考试」$5T$

    啊因为最近题实在是好啊,只能四五篇四五篇写了. T1. 括号序列的确简单. 当我们维护左右$cnt$后. 到一个左括号的地方的话. 答案就是:$$\sum\limits_{i=1}^{min(lc,r ...

  4. 「考试」小P的生成树

    考场上想到一半正解,没想到随机化,不然也许能够$A$掉. 题目所说的其实就是向量加法,求模长最长的向量生成树. 我们考虑对于两个向量,必然在平行边形对角线方向上,他们的投影和是最大的,长度就是对角线长 ...

  5. 「考试」num (破800纪念)

    是第800题啦. 怎么说,$rvalue$学长写的已经挺好的了,我在这里做一点补充,写一点理解. 但是这道题真的值得写一下题解,毕竟一百行也算是数论工程题了. 定义函数 $Fp(k,n)$为$n$中$ ...

  6. 「考试」 Or

    不得不说是一道多项式神题了. 虽然说颓代码颓的很厉害不过最终A掉了. 好好讲一讲这道题. 涉及的知识点是:高阶导数,NTT,指数型母函数,泰勒公式,以及意志力和数学推导能力. 那就开始了. 一个测试点 ...

  7. 「考试」weight

    正解是树剖. 首先Kru求最小生成树. 然后分别考虑树边和非树边的答案. 首先是非树边,非树边链接的两个点在MST上能够构成一条链. 这条链上最大的那条边-1就是这条边的答案. 为什么. 模拟Kru的 ...

  8. 「考试」联赛模拟36-39,noip晚间小测2-3

    36.1 party(CF623D) 很是鸡贼的一道题 首先要明确一点,抓人是有策略,而不是随机的,可以认为等同于按一个给定的顺序猜人,那么这时猜中的概率就只是抓住这个人的概率了 对于每一次猜测,因为 ...

  9. 「NOWCODER」CSP-S模拟赛第3场

    「NOWCODER」CSP模拟赛第3场 T1 货物收集 题目 考场思路即正解 T2 货物分组 题目 考场思路 题解 60pts 算法:一维 DP 100pts 算法:一维 DP ?线段树 + 单调栈 ...

随机推荐

  1. ant-design-vue中tree增删改

    ant-design-vue中tree增删改 1. 使用背景 新项目中使用了ant-design-vue组件库.该组件库完全根基数据双向绑定的模式实现.只有表单组件提供少量的方法.所以,在使用ant- ...

  2. [Luogu P4124] [CQOI2016]手机号码 (数位DP)

    题面 传送门:洛咕 Solution 感谢神仙@lizbaka的教学 这题是数位DP的非常非常模板的题目,只是状态有点多 . 这题我使用记忆化搜索实现的 中国有句古话说的好,有多少个要求就设多少个状态 ...

  3. js某时间与当前时间差

    function minuteFormat(min){ if(!min){ return '-'; } var result=''; if(min%(60*24*30*12)!=min){ resul ...

  4. CF1413C Perform Easily 题解

    毒瘤C题,考场卡我1个小时 首先,这道题难点在哪里?它的最大值与最小值都是浮动的. 怎么办?把最小/最大值固定! 以把最小值固定为例,我们枚举每个音符,并枚举它使用哪条琴弦,将它此时的位置强制其作为最 ...

  5. SpringBoot的外部化配置最全解析!

    目录 SpringBoot中的配置解析[Externalized Configuration] 本篇要点 一.SpringBoot官方文档对于外部化配置的介绍及作用顺序 二.各种外部化配置举例 1.随 ...

  6. leetcode25word-ladder

    题目描述 给定两个单词(初始单词和目标单词)和一个单词字典,请找出所有的从初始单词到目标单词的最短转换序列的长度: 每一次转换只能改变一个单词 每一个中间词都必须存在单词字典当中 例如: 给定的初始单 ...

  7. python风格代码荟萃

    今天总结一下在python中常用的一些风格代码,这些可能大家都会用,但有时可能也会忘记,在这里总结,工大家参考~~~ 先点赞在看,养成习惯~~~ 标题遍历一个范围内的数字 for i in xrang ...

  8. Best Time to Buy and Sell Stock I II III IV

    一.Best Time to Buy and Sell Stock I Say you have an array for which the ith element is the price of ...

  9. 一篇文章了解_unittest

    1. 基本概念 2018年10月7日 星期日 11:39 unittest是python自带的单元测试框架,有时候又被称为"PyUnit",是python版本的JUint实现. 该 ...

  10. python-网络安全编程第六天(threading多线程模块&Queue模块&subprocess模块)

    前言 昨天晚上9点多就睡了 2点起来没睡意... 那就学习吧emmmm ,拿起闲置几天的python课程学习.学习到现在5.58了 总结下 继续开始学习新的内容 多多线程? 线程(英语:thread) ...