.
保龄,不放出来丢人了。
A. 大众点评
手贱 -100pts。
看到交互被吓了一跳,看完题面还是很懵,直到看了附件里给的样例代码。
相当于只写一部分代码,有些函数给你封好了能直接用。
思路还是很容易的,用两个随便什么容器存一下可能的最大值和最小值,我用的 set,最后一个一个查就出答案了,在 \(n\le 400\) 的情况下,最多调用 \(200+399\) 次,不会报错。
但是样例程序里没有头文件,只有一个 #include "ramen.h"
,开始还没注意到,后来注意到了,把万能头删了,mac 上也试运行不了,所以就交了,然后 100pts -> 0pts。
还有为啥我赛后过了不显示啊。
点击查看代码
#include<bits/stdc++.h>
#include"ramen.h"using namespace std;
void Ramen(int N)
{set<int>mx,mn;for(int i=0;i+1<=N-1;i+=2){if(Compare(i,i+1)==1) mx.insert(i),mn.insert(i+1);else mx.insert(i+1),mn.insert(i);}if(N&1) mx.insert(N-1),mn.insert(N-1);while(mx.size()>1){set<int>::iterator a,b;a=mx.begin();mx.erase(a);b=mx.begin();mx.erase(b);if(Compare(*a,*b)==1) mx.insert(*a);else mx.insert(*b);}while(mn.size()>1){set<int>::iterator a,b;a=mn.begin();mn.erase(a);b=mn.begin();mn.erase(b);if(Compare(*a,*b)==1) mn.insert(*b);else mn.insert(*a);}set<int>::iterator a,b;a=mx.begin(),b=mn.begin();Answer(*b,*a);
}
B. 录取查询
赛时想到线段树但没多想,因为确实还没见过这种存储查询字符有关的题。
于是打 20pts 暴力,(没想到成了这场为一的 20pts思路是存一下每个字母总共出现的次数,然后找区间的时候判断字符更改到没到该字符出现的总数即可。
正解是线段树维护区间是否递增,两端字母和字母数量。
C. 精准打击
确实精准打击到我了不是吗?再次手贱 -100pts。
正解赛时通过找二叉树的性质找到了。先预处理出来深度为 \(\left[0,d\right]\) 的满 \(k\) 叉树的节点总数,然后从小到大枚举,按贪心的思路从大往小减,找到这个最小值即可,复杂度应该是 \(\mathcal{O(d^2)}\) 的。
关于为什么又挂了
这个新题库不是可以自测🐴,开始在上面测的时候发现 CE 了,直接就在上面改完就交了。
后来再看本地的代码时发现了唐错,然后就在本地的代码上改了,没测,直接交了。
点击查看代码
#include<bits/stdc++.h>
#define fo(x,y,z) for(register int (x)=(y);(x)<=(z);(x)++)
#define fu(x,y,z) for(register int (x)=(y);(x)>=(z);(x)--)
using namespace std;
typedef long long ll;
#define lx ll
inline lx qr()
{char ch=getchar();lx x=0,f=1;for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;for(;ch>='0'&&ch<='9';ch=getchar())x=(x<<3)+(x<<1)+(ch^48);return x*f;
}
#undef lx
#define qr qr()
const int Ratio=0;
const int N=2e5+5;
ll d,k,x;
ll pf[N];
namespace Wisadel
{void Wwork2(){pf[0]=1;ll ans=1e18;fo(i,1,d) pf[i]=1ll*pf[i-1]*k+1;// 深i层总共fo(i,0,d){if(pf[i]>=x){ll sheng=pf[i]-x,anss=0;if(i!=d) anss=1;int j=i-1;while(sheng){// cout<<cha<<' '<<j<<endl;anss+=sheng/pf[j];sheng%=pf[j],j--;}ans=min(ans,anss);}}printf("%lld\n",ans);}short main(){// freopen(".in","r",stdin),freopen(".out","w",stdout);int T=qr;while(T--){d=qr,k=qr,x=qr;Wwork2();}return Ratio;}
}
int main(){return Wisadel::main();}
D. 你画我猜
提交答案题。再再次手贱 -16pts。
其实一开始做完 T1 先看了看后三道题,发现这是个提交答案题,突然想到牛老师在游记里写的要给这种题准备点时间多跑会,果断开始想暴力。
结果发现暴力还不好想,每种情况都对应着好几种情况,就好像让一个不懂的人学多元拉反,然后发现要先看普通拉反,然后发现要先看 Laurent 级数,然后发现要先看生成函数。。
于是打了四个测试点就写上去摆了。
关于这又是怎么挂分的
感觉自己有点强迫症,就是有的题只用把一部分信息读进去之后就知道答案了,但是就是想都读进去再输出。
这个 b 题题面里给了个 s 作下界,还要输入一个字符串,那么直接定义了两个 s,本地 vscode 没报错还,上传的时候因为样例的 id 都是 0 觉得没啥好测的就直接交了,再次 -16pts。
末
这次真成挂分大王了,挂的分都够我上 Rank6 了。
好像每次这种长假的模拟赛都得大寄一场才行,寒假的 inline qr()
还历历在目。。
这次上了两种新题型,也算是学到了点,起码下次知道交互题也得打头文件了。
感觉有部分原因是昨天打好了今天浮躁导致的,下次不玩原了。
完结撒花~