弱校弱队,A了四题AEFG,混了省铜(很满意了)(人生第一块XCPC牌子),大佬轻喷
赛前:
实习和准备考研等各种杂七杂八的事情,赛前两三个月基本没看题,最多敲了几道水题。
9.29热身赛,三个小时,总共四道题,学校里其它四只队伍都A了2-3道,我们队热身赛只A了1道题,而且还是在最后五分钟我的两个队友极限想出来的结论,我为队伍贡献了好几发WA...然后大部分上机时间还都被我占用了...能做的两道题被我时间全浪费了啥也没做...靠着队友推出来的思维题才勉强A了一题。总而言之,真的打完热身赛心里很不好受,感觉自己在拖整个队伍后腿。然后第二天yml把我们整个队伍拉出来加训了一整天,重新磨合了一下讨论了一下方案,又找了2021年新疆省赛的CCPC练习了一遍,虽然没做出来几道题吧,但是大概让我找回了一些基本的思维。(很感谢新疆赛的A题,练习的时候没做出来回来晚上找题解又敲了一遍,才把河南赛的E题给写了,不然估计我有思路也敲不出来了)
10.3正式赛
开始的时候差点没进去...OMS的更新卡住了..好不容易更新完,第一次PTA默认第一机位摄像头没开启..重启之后又更新半天..还好赛前最后五分钟进去了,那个时候都做好了换备用机的准备..
A题真的很佩服前面的队伍,一分钟两分钟写出来直接A,老年人手速真的慢,五分钟才AC(写了十个if哈哈哈哈后来看代码别人队伍写的都是for哈哈哈哈活该我写的慢)
A题刚写完,yml把E题的题意跟我讲了下 找s的子串里面有没有满足 5 7 5的,随意删,思考了几分钟,大概把我的思路和yml讲了下,遍历一次然后对每个字母计数,先满足5 再满足7 最后满足5,每次满足完之后清零接着往下遍历。和yml对了一下我的思路没毛病我就开始写了。然后WA了一次,发现清零只清零了先到达5的数组。又让yml测试了几个数据,就交上去AC了。
u1s1,前面的队伍做的真的很快,我们队伍完全就是看哪道题交的人多,通过的多我们就去开哪道题。我们写完E之后发现F和G两题都有人写,通过率也还可以,我让yml和ztf开F去了,我去看了G,一看题目巴拉巴拉区间、与运算、期望、取模,我就觉得这个应该是个线段树+与运算的题目,就想换题目了,但是通过的人真的不少,我对F题目也没什么思路,就强迫自己往下看,读了十多分钟,把题目读懂了,然后yml在那边没有思路,我就把他叫过来跟我讨论讨论,用例子讲完题目之后,他提出了质疑,也就是在这里,我们发现这个东西就是个诈骗题T_T直接统计所有的串与运算之后的1的个数就行..写了之后本地测了没问题..丢上去来了个段错误,弱队刷的题少,真没见过这个提示..看代码我们也没看出来是哪里有问题,(我们队伍都是半路出家,yml和我之前写的都是java,ztf用的python,但是赛前电脑重启了没有python的环境,加上他沉迷于F题)我们换了java写,开始想着赶紧写赶紧交,就用了Scanner..意料之中的TLE....还好本子上还有java的快速输入输出..赶紧换..WA了两次终于A掉了。
接下来就是坐牢时间...队友俩在讨论F题,我去看了看有没有其它题目能写的,发现这个时候H水管交的人很多但是通过率很低,我也去看了两眼,先是想到暴力DFS,但是1e5个case加上1e5的m的大小,我感觉时间会爆,又没有更好的思路,我就暂时放掉了...
还有J题目,看了两遍没看懂.....我好弱...
我感觉没其他题目可以开了就回去和队友一起看F了,队伍都坚信这是个规律结论题,就是找不到哈哈,中间辛酸过程就不提了(因为我这题没咋思考哈哈哈基本全靠队友),他俩好像找规律就写了七八张纸,最后ztf找出来了等差数列啥啥的规律(记不清了..)特判了1,2,4三个数字。
A出来F题之后差不多大概还有一个小时多一点的时间,排名大概在170+。最后只能自己找感觉能做的题目了,我发现I题基本上交的都过了.....我就跟队友说开这题,虽然题干像老奶奶的裹脚布又臭又长(出题团队很好,没有不敬的意思)。读了二十分钟看懂了是个模拟题,弄明白了各个变量的意思,ztf报着他的思路我在那里疯狂码...写了半个小时发现思路全乱了哈哈哈哈,就剩最后十分钟写不出来了,就开始研究排名表了哈哈哈(山东好强)
总结:出题团队很好,弱队也有参与感,真没想到能拿到铜(弱校去年一年没牌子),今年咱学校还有(种子队)拿了个银,感谢yml和ztf
自己写的代码晚点贴。
A
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
if(n==1){
cout<<"1";
}else if(n==2){
cout<<"10";}else if(n==3){
cout<<"102";
}else if(n==4){
cout<<"1023";
}else if(n==5){
cout<<"10234";
}else if(n==6){
cout<<"102345";
} else if(n==7){
cout<<"1023456";
} else if(n==8){
cout<<"10234567";
} else if(n==9){
cout<<"102345678";
}else if(n==10){
cout<<"1023456789";
}else{
cout<<"-1";
}
return 0;
}
E
#include <bits/stdc++.h>
using namespace std;
string s;
int dp[26];
int main(){
int n;cin>>n;
cin>>s;
bool sign1=false;bool sign2=false;bool sign3=false;
string s1,s2,s3;
char ss1[6]={'0'},ss2[8]={'0'},ss3[6]={'0'};
int now=0;
if(s.length()<17){
cout<<"none";
}else{
for(;now<s.length();now++){
dp[s[now]-'a']++;
if(dp[s[now]-'a']==5){
for(int i=0;i<26;i++){
dp[i]=0;
}
sign1=true;
for(int i=0;i<5;i++){
ss1[i]=s[now];
}
break;
}
}
now++;
for(;now<s.length();now++){
dp[s[now]-'a']++;
if(dp[s[now]-'a']==7){
for(int i=0;i<26;i++){
dp[i]=0;
}
sign2=true;
for(int i=0;i<7;i++){
ss2[i]=s[now];
}
break;
}
}
now++;
for(;now<s.length();now++){
dp[s[now]-'a']++;
if(dp[s[now]-'a']==5){
for(int i=0;i<26;i++){
dp[i]=0;
}
sign3=true;
for(int i=0;i<5;i++){
ss3[i]=s[now];
}
break;
}
}
s1=ss1;s2=ss2;s3=ss3;
if(sign1 && sign2 &&sign3){
cout<<s1<<s2<<s3;
}else{
cout<<"none";
}
}
return 0;
}
F
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
if(n==1){
cout<<"1"<<endl;
cout<<"1"<<endl;
}else if(n==2 || n==4){
cout<<"-1";
}else{
int length=(n+1)/2;
cout<<length<<endl;
for(int i=1;i<length;i++){
cout<<i<<" ";
}
if(n%2==1){
cout<<length;
}else{
cout<<length+1;
}
}
return 0;
}
G//下面代码好像是段错误,然后我换java写了一遍过了 逻辑差不多,代码不知道哪里有问题吧
#include <bits/stdc++.h>
using namespace std;
const int maxm=1010;
string s[maxm];
int main(){
int n,m,q,a,b,l,r,p;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>s[i];
}
cin>>q;
for(int i=1;i<=q;i++){
cin>>a>>b>>l>>r>>p;
}
for(int j=0;j<m;j++){
s[n+1][j]='1';
}
for(int i=1;i<=n;i++){
for(int j=0;j<m;j++){
s[i+1][j]= s[i][j] & s[i+1][j];
}
}
int count=0;
for(int j=0;j<m;j++){
if(s[n+1][j]=='1'){
count++;
}
}
cout<<count;
return 0;
}