CSP-J/S2020游记

初赛

校内复习一个月,感觉很没把握……
然后就去考试了(
初赛就在我们学校考的,主场优势/xyx
然后……就没有然后了
TG踩着点交的卷,感觉凉了,然后PJ感觉很简单,1h30min左右就干完了
但是听同校巨佬说,PJ难,TG简单(
然后感觉要退役了,但对了下答案,大概估了下分,TG65,没希望了,PJ94,好像也不难
然后,真实成绩是TG67.5,PJ90.5
TG进了,PJ也进了
但!是!
我们学校老师说,TG的要给PJ的让名额(
然后我的名额就这么被让出去了!就这么被让出去了!
垃圾老师毁我青春
于是就去准备CSP-S了。。。


复赛

经历

首先读完第一题,发现是个大模拟(又想起了猪国杀)
但我猪国杀还没AC呢
然后试着打代码,打了半小时开始怀疑人生
又想了半小时,想到思路了,可以分开做(本来就是嘛)
但可以逐步缩小精度:先400年,再100年,再一年年推,最后一月一月推,剩下日。
然后做了半天,做完发现时间过半(
没看懂T2,先去搞T3,然后打了个暴力,直接顺序模拟就去看T4。
T4看了看,不会做,决定先回去搞T2。
想打个60分的暴力,用二分查找优化,最后再结束前1分钟打完(
自我感觉:100+60+20+0=180(稳稳地二等)
最后发一下代码:

T1:
#include <bits/stdc++.h>
using namespace std;
long long q;
long long thisyear(long long x){
   
	if (x%400==0) return 366;
	else if (x%100==0) return 365;
	else if (x%4==0) return 366;
	else return 365;
}
void calc(long long x){
   
	long long month[13]={
   0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
	long long nowyear;
	long long yearpast=(long long)(x/1461)*4;
	if (x<=1721423){
   
		nowyear=yearpast-4713;
		x%=1461;
		bool f=true;
		if (x>=366){
   
			f=false, x-=366, nowyear++;
			for (long long i=1; i<=2; i++)
				if (x>=365) f=false, x-=365, nowyear++;
		}
		if (f) month[2]++;
		long long i;
		for (i=1; x>=month[i]; i++) x-=month[i];
		cout << x+1 << ' ' << i << ' ' << -nowyear << ' ' << "BC" << endl;
	}
	else{
   
		if (x>=2299161){
   
			x-=2299161;
			nowyear=(long long)(x/146097)*400;
			nowyear+=1582;
			x%=146097;
			if (x<=78){
   
				long long mt[3]={
   17,30,31};
				long long i;
				for (i=0; x>=mt[i
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值