「考试」CSP-S 2020
乱扯
爆炸的过程是这样的
写了\(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的更多相关文章
- AC日记——「HNOI2017」礼物 LiBreOJ 2020
#2020. 「HNOI2017」礼物 思路: A题进程: 一眼出式子->各种超时过不去->看题解明白还有fft这个东西->百度文库学习fft->学习dft->学习fft ...
- 「考试」noip模拟9,11,13
9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...
- 「考试」$5T$
啊因为最近题实在是好啊,只能四五篇四五篇写了. T1. 括号序列的确简单. 当我们维护左右$cnt$后. 到一个左括号的地方的话. 答案就是:$$\sum\limits_{i=1}^{min(lc,r ...
- 「考试」小P的生成树
考场上想到一半正解,没想到随机化,不然也许能够$A$掉. 题目所说的其实就是向量加法,求模长最长的向量生成树. 我们考虑对于两个向量,必然在平行边形对角线方向上,他们的投影和是最大的,长度就是对角线长 ...
- 「考试」num (破800纪念)
是第800题啦. 怎么说,$rvalue$学长写的已经挺好的了,我在这里做一点补充,写一点理解. 但是这道题真的值得写一下题解,毕竟一百行也算是数论工程题了. 定义函数 $Fp(k,n)$为$n$中$ ...
- 「考试」 Or
不得不说是一道多项式神题了. 虽然说颓代码颓的很厉害不过最终A掉了. 好好讲一讲这道题. 涉及的知识点是:高阶导数,NTT,指数型母函数,泰勒公式,以及意志力和数学推导能力. 那就开始了. 一个测试点 ...
- 「考试」weight
正解是树剖. 首先Kru求最小生成树. 然后分别考虑树边和非树边的答案. 首先是非树边,非树边链接的两个点在MST上能够构成一条链. 这条链上最大的那条边-1就是这条边的答案. 为什么. 模拟Kru的 ...
- 「考试」联赛模拟36-39,noip晚间小测2-3
36.1 party(CF623D) 很是鸡贼的一道题 首先要明确一点,抓人是有策略,而不是随机的,可以认为等同于按一个给定的顺序猜人,那么这时猜中的概率就只是抓住这个人的概率了 对于每一次猜测,因为 ...
- 「NOWCODER」CSP-S模拟赛第3场
「NOWCODER」CSP模拟赛第3场 T1 货物收集 题目 考场思路即正解 T2 货物分组 题目 考场思路 题解 60pts 算法:一维 DP 100pts 算法:一维 DP ?线段树 + 单调栈 ...
随机推荐
- [Luogu P4215] 踩气球 (线段树)
题面 传送门:https://www.luogu.org/problemnew/show/P4215 Solution 这题十分有意思. 首先,我们可以先想想离线做法,因为在线做法可以从离线做法推出. ...
- 关于maven下,lombok的安装
1.首先下载lombok的jar包,可至https://mvnrepository.com/下载 2.双击即会自动扫描eclipse.exe,如图: 选择eclipse.exe,点击install/u ...
- Raft算法原理剖析
一.复制状态机(replicated state machine) Raft协议可以使得一个集群的服务器组成复制状态机,在详细了解Raft算法之前,我们先来了解一下什么是复制状态机.一个分布式的复制状 ...
- IDEA(社区版)连接MySQL
版本说明: MySQL 版本:8.0.20 IDEA 版本:2020.1.1(Community Edition) IDEA中安装插件: 首先在IDEA中下载DB Browser插件,安装好插件重 ...
- Arduino IDE搭建ESP8266开发环境,文件下载过慢解决方法 | ESP-01制作WiFi开关教程,改造宿舍灯
1. Arduino IDE配置ESP8266环境 参考:https://www.jianshu.com/p/cb0274d612b5 首先从 Arduino 官网 下载最新版本的 Arduino I ...
- C++实现RTMP协议发送H.264编码及AAC编码的直播软件开发音视频
RTMP(Real Time Messaging Protocol)是专门用来传输音视频数据的流媒体协议,最初由Macromedia 公司创建,后来归Adobe公司所有,是一种私有协议,主要用来联系F ...
- ubuntu 17.10 安装QQ
折腾一大堆 看报错信息 正在选中未选择的软件包 wine-qqintl:i386.(正在读取数据库 ... 系统当前共安装有 185429 个文件和目录.)正准备解包 wine-qqintl_0.1. ...
- 常用简单电脑bai快捷键大全
Ctrl+C 复制.duCtrl+X 剪切.Ctrl+V粘贴.Ctrl+Z撤销.Ctrl+A全选所有文件.zhiDelete删除.daoShift+Delete避开回收站直接永久删除(不可找回).F3 ...
- 09线程隔离的g对象
1,g是global的意思. g对象再一次请求中的所有的代码的地方,都是可以使用的. 同一次请求,那么在这个项目的所有地方都可以用了. from flask import Flask,request, ...
- python类继承中构造子的调用
python面向对象中的继承关系中,子类对父类的构造方法的调用有两种方法: 父类名.__init__(self,参数) #注意名字是父类 super(本子类名,self)__init__(其他参数) ...