Day -7
2020.11.28(周六)
洛谷11月月赛II正好在考前一周举行。于是,我果断地报名参加了Div.2的比赛。
第一题我用getchar搞了半天,突然记起入门书籍里讲过scanf/printf有个%X的格式控制符,一查,正是十六进制……
#include<cstdio>
int main(){
int c;
scanf("#%X",&c);
printf("#%02X%02X%02X",255-c/256/256,255-c/256%256,255-c%256);
return 0;
}
第二题我刚做完时洛谷日爆了,kkksc03叫我们不要提交……
我下载了额外测试样例,顺便写了个测试脚本。
@echo off
title EasyTextX
set /p exe=程序可执行文件:
:start
cls
echo 当前测试:%exe%
set /p in=输入文件:
set /p ans=答案文件:
type %in%|%exe%>%tmp%\程序输出
fc /c /w %ans% %tmp%\程序输出>%tmp%\etx.txt
if %errorlevel% == 1 (
goto a
) else goto b
:a
echo 测试失败
type %tmp%\etx.txt
pause
goto start
:b
echo 测试成功
pause
goto start
我的代码,30pts
#include<iostream>
using namespace std;
int main(){
int n,m,p;
long long k;
cin>>n>>m>>k>>p;
int a=(k/p)>m?m:(k/p),b=m-a,c=k-p*a;
if((n-p)*(a-1)>=c){
cout<<"yes"<<endl;
for(int i=0;i<p;i++)
cout<<a<<' '<<b<<endl;
for(int i=p;i<n;i++)
if(c>a-1){
cout<<(a-1)<<' '<<(b+1)<<endl;
c-=(a-1);
}else if(c){
cout<<c<<' '<<(m-c)<<endl;
c=0;
}else
cout<<"0 "<<m<<endl;
}
else cout<<"no"<<endl;
return 0;
}
第三题不知道为什么后来提交TLE了。反正我只做了三个Subtask,就是不TLE也拿不了什么分。
#include<iostream>
using namespace std;
const int mod=1e9+7;
int main(){
int t,a,b,h;
cin>>t;
while(t--){
cin>>a>>b>>h;
if(h==0){
cout<<a;
}else if(a==b){
long long ans=1;
for(int i=0;i<=h;i++)
ans=(ans*b)%mod;
cout<<ans;
}else if(b==1){
long long ans=(a-1)*h%mod;
cout<<ans;
}
}
return 0;
}
后面的题目因为评测机故障我也懒得做了。
Day -6
2020.11.29(周日)
周末作业没做完的我表示很慌……不急不急,还有一个晚上~
我到App Store下载CSDN客户端时,意外发现了一个叫“算法动画图解”的APP。总感觉logo看着有点眼熟,便下载下来了。
我转了一番,发现……这东西真好用!!于是果断地解锁了所有算法,并且顺利地搞懂了堆排和快排。
Day -5
2020.11.30(周一)
NOI官网炸了,看不了成绩了……
Day -4
2020.12.1(周二)
今天学习了堆排序和priority_queue
。
还是不会手打堆!!!
Day -3
2020.12.2(周三)
今天打算学bfs dfs vector map set stack queue
不知道能学会几个。
明天专攻dp!!!
希望noip不要出四道julian。。。
Day -2
2020.12.3(周四)
昨天作业太多,一个也没学。
今天学了位运算和STL,还要去洛谷刷题。。。
Day -1
2020.12.4(周五)
试机来早了,我们天真地按通知上写的最早时间到达考场,结果被拦在了外面……
Day 1
2020.12.5(周六)
比赛了!!!!
第一题,考场上一秒看出要手打分数~~(废话)~~ ,没留意数据范围……
听说什么 6 0 11 60^{11} 6011 以后,我整个人都懵了……
我的考场代码:
#include<iostream>
#include<fstream>
#include<cstdio>
using namespace std;
int gcd(int a,int b){
return b?gcd(b,a%b):a;}
struct fs{
int p,q,y;
fs(){
p=0,q=1,y=0;}
fs(int ip,int iq){
p=ip,q=iq,y=0;}
void tq(int t){
p*=t,q*=t;}
void hj(){
int g=gcd(p,q);p/=g,q/=g;}
void operator+=(fs js){
if(!js.q)return;
int l=js.q,g=gcd(q,js.q);
js.tq(q/g);tq(l/g);
p+=js.p;
}
}jd[100001];
int main(){
ifstream fin("water.in");
ofstream fout("water.out");
int n,m,d,t,i,j,p,q;
fin>>n>>m;
for(i=1;i<=n;i++){
fin>>d;
d||(jd[i].y=1);
if(i<=m)p=1,q=d;
else p=jd[i].p,q=d*jd[i].q;
fs l(p,q);
while(d--){
fin>>t;jd[t]+=l;}
}
for(i=1;i<=n;i++)jd[i].y&&(jd[i].hj(),fout<<jd[i].p<<' '<<jd[i].q<<endl);
return 0;
}
第二、三题,直接懵。敲样例OwO
第四题,做了个一维。代码:
#include<iostream>
#include<fstream>
#include<cstdio>
using namespace std;
int main(){
ifstream fin("walk.in");
ofstream fout("walk.out");
int n,k,w,sum=0,a[100000],b[100000],step=0,now=0;
fin>>n>>k;
if(k!=1){
fout<<-1<<endl;
return 0;
}
fin>>w;
for(int i=0;i<n;i++){
fin>>k>>a[i];
sum+=a[i];
}
if(!sum){
fout<<-1<<endl;
return 0;
}
for(int i=0;i<w;now=++i)
for(int j=0;now>=0&&now<w;++j,j%=n,++step)
now+=a[j];
fout<<step<<endl;
return 0;
}
分数
CSP-J:100+85+30+20=235(一等)
CSP-S:30+40+0+0=70(二等)
NOIP:60+0+0+10=70(三等)