一个初一蒟蒻的NOIP2020游记

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(三等)

猜你喜欢

转载自blog.csdn.net/tkzlfg/article/details/110393161
今日推荐