Contest Is Over - Codeforces 比赛记录

CF#768(Div.2)

CF只有两个小时的比赛时间,一旦出了点“小”差错 基本就废了
B题后来按照扭曲的题意想了好久一直WA,1h ran out很慌地看了C并A了
后来发现B实在简单很后悔又把B A了,然而比赛还剩18min,我还在rk2800
想着有没有可能把D做了 但看到standings上人均30min才A掉 于是感觉不大可能
比赛前9min有了思路并且显然正确,赶着写,但debug时Contest is over显示在屏幕上 宣告结束
又一次下分 看来这种高强度考场环境还是要多多参加益善!再下几次分看看表现会不会好些吧
附D题纪念比赛结束后6min自认为可以A的code,等可以提交了再提交以下 / upd:交了wa on #2,debug后过了,真是可惜!https://codeforces.com/contest/1631/submission/144269396

复制
(WA code,但无大问题)
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,k,a[N],bu[N];
void sol(){
cin>>n>>k;for(int i=1;i<=n;i++)bu[i]=0;
for(int i=1;i<=n;i++)cin>>a[i],bu[a[i]]++;
int cnt=0,x=0,y=1e9;
for(int i=1,j=1;i<=n;i++){
while(j<=n&&cnt-(n-cnt)<k)cnt+=bu[j],j++;
if(cnt-(n-cnt)>=k){
if(j-i<y-x)x=i,y=j;
}cnt-=bu[i];
}cout<<x<<' '<<y-1<<'\n';
int c=0,las=0;
for(int o=1;o<=n;o++){
c+=(x<=a[o]&&a[o]<=y);
if(c>(o-c)&&k!=1){k--;cout<<las+1<<' '<<o<<'\n';las=o;c=0;}
}cout<<las+1<<' '<<n<<'\n';
}
int main(){int t;cin>>t;while(t--)sol();}

CF#769(Div.2)

这个D啊 拿它没办法 以为自己的策略有问题 但又觉得不可能 万万没想到就是个倍增写错了 调了我那么久 唉!
记录在错题集里了 倍增要先枚举j啊 我也不知道为什么会搞错。。
说一下这场吧 思维难度还行 大概是偏容易了
B题属于结论题 显然必然存在两个MSB不同的两个数需要相邻,因此最小的答案也应该是1<<(MAXMSB-1),这点很好满足,只需要n-1,n-2,...,这个数,0,后面随便放
C题有点连蒙带猜 但既然AC了应该没问题 就是说题目b++是等价于a--的(至少在最优环境下如此),又因为显然 或操作 至多做一次 因此只需要枚举a通过++--到啥地方,该数或一次就能变成b。
D题思维难度略高 首先会有意识地想一下单调性并发现对于一个满足条件的segment,左端点--和右端点++都会让等时左右相离(但左右端点都--或++则不得而知)因此能确定的是一个r对应至多一个l满足条件,显然可以二分,则需要查询的是gcd[区间],通过倍增维护可,便做到找到l。其后,考虑若线段长1,则必须把这个数变了,ans++;否则只需要贪心地让每一次尽量使用以前已经变过的地方,就区间查询一下有没有已经变过的点(通过BIT维护),如果没有,那贪心地将a[r]变,ans++,以备后用,否则就用以前的.https://codeforces.com/contest/1632/submission/144605191

CF#773(Div.2)

18:05由于晚自习自习所以信息竞赛生都打这场18:05的CF。
ABC两题一眼过了。D想了好久没有答案,而排行榜上久久没有人过D。
xzh切了d2F,接下来ztl告诉xzhABC每一题的做法(sth)。然后zzy&xzh开始想D,过了半分钟zzy想出了正解,ztl大呼XX。
机房的同学们纷纷围住黑板,在领悟了解法并想好了代码实现之后开始敲代码。
在整个过程中我捂住耳朵拒绝听取解法。在20分钟后我终于想出了解法,此时还有半个小时比赛结束。写完,debug了好久。可惜的是,直到比赛前最后30s我才基本debug完,赶紧交了,WAonpretest1。赛后发现是多测未清空。又是功归一篑啊!但至少比通过非正当方式通过D的XXX&XXX要强多了:)

D code for memorial
#include <bits/stdc++.h>
using namespace std;
const int N=1e7+5;
int n,a[N];
bool panduan(){
map<int,int>M;
for(int i=1;i<=n;i++)M[a[i]]++;
for(int i=1;i<=n;i++)if(M[a[i]]&1)return 0;
return 1;
}
struct Op {
int p,c;
};
vector<Op>op;
vector<int>t;
void solve(){
op.clear(),t.clear();
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
if(!panduan()){puts("-1");return;}
int pos=1;
for(int i=2;i<=n;i++){
if(a[pos]==a[i]){
t.push_back(2*i-2*pos);
if(i-pos>1){
for(int j=pos+1;j<i;j++){
op.push_back({i+j-pos-1,a[j]});
}
}
int len=i-pos-1;
for(int j=n+len*2;j>=i+1+len*2;j--)a[j]=a[j-len*2];
for(int j=i+1;j<=i+len;j++)a[j]=a[j-len-1];
for(int j=i+len+1;j<=i+len*2;j++)a[j]=a[i+len+1-(j-(i+len+1)+1)];
n+=len*2;
pos=i=i+len+1;
}
}
cout<<op.size()<<endl;
for(int i=0;i<op.size();i++)cout<<op[i].p<<' '<<op[i].c<<'\n';
cout<<t.size()<<endl;
for(int i=0;i<t.size();i++)cout<<t[i]<<' ';puts("");
}
int main(){
int t;
cin>>t;
while(t--)solve();
}

Codeforces Round #807(div.2)

萧瑟秋风今又是……写完ABC(其中C调了一会),还剩1h20min
看D,想了一个感觉实现起来稍微麻烦一点的dp,写了几行,发现卡住了,看了一下排行,发现有人去做E而跳过了D,因此也去瞟了一眼E,发现就是一个线段树板子,然而可能因为想D用了接近半个小时,所以E还是没写完。
垂头丧气去睡觉。次日早花了10min写完+AC了E,感到很无语。
OMG,今天晚上一定还要参加,为什么每次都一点长进没有啊!
把D整理一下

Global Round 23

上次Global Round做得还行的来着(D至少做出来了),今天又打回原形了……无语凝噎

Edu 138

没有打Edu经验的后果:倒 序 开 题

UR#24被卡常,T1 100->65,本来rk9诶!!

T1我的思路挺不错。

posted @   pengyule  阅读(116)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示