[ 头皮发麻 A1 ] 队内赛3 2020 Ateneo de Manila University DISCS PrO HS Division

都是英语阅读题
但是本菜鸡就过了一题,直接自闭😭mmp明天开始起床一版题
传送门

  • B.Riana and the Blind Date
    0是闰年?惊了 后来才知道整除被除数可以为0
    闰年的计算方法 \((x/4 - x/100 + x/400)\) 除号都下取整。
    \(A=0\)特殊处理
    取余的时候式子含有减法要提出来特殊处理 最好减号左右两个数+mod再取余
    闰年是+229 ,不是1。。。总之就是思维各种漏洞百出
ll modd = 104206969;
ll y11 = 180758;

int main() {
   ll A, B;
   scanf("%lld%lld", &A, &B);
    
   ll k;
   if (A > 0)
   	k = (((B / 4 - (A - 1) / 4) - (B/100-(A-1)/100) )%modd + (B/400-(A-1)/400)%modd)%modd;
   else
   {
   	k = (((B / 4)- (B / 100))%modd+ (B / 400)%modd+1)%modd;
   }

   if (A == 0 && B == 0) {
   	printf("180758\n");
   	return 0;
   }

   printf("%lld\n", (((((B-A+1)%modd)*y11)%modd)+((k*229)%modd))%modd);
}
  • C.Riana and Commute
    深搜开头没判断vis一直WA 后来发现不是
    终点是车站的时候居然是符合条件的 我一上来就把这个否了
    加了个符合条件直接退出dfs的东西,应该就能过了,不知道为什么(递归层数过大?但报的是WA,不是RE啊)
    迷惑。
int n, a, b;
int beg[105],toend[105], vis[105];
int flag = 0;
void dfs(int x) {
	if (vis[x] == 1) return;
	vis[x] = 1;
	if (x == a) {
		flag = 1;
		return;
	}
	if (beg[x] == 1) {
		dfs(toend[x]);
		return;
	}
	for (int i = x-1; i >0; i--) {
		if (i == a) {
			flag = 1;
			return;
		}
		if (flag == 1) {
			return;
		}
		if (vis[i] == 1) break;
		if (beg[i] == 1) {
			vis[i] = 1;

			dfs(toend[i]);
			break;
		}
		vis[i] = 1;
	}
	for (int i = x+1; i <= n; i++) {
		if (i == a) {
			flag = 1;
			return;
		}
		if (flag == 1) {
			return;
		}
		if (vis[i] == 1) break;
		if (beg[i] == 1) {
			vis[i] = 1;

			dfs(toend[i]);
			break;
		}
		vis[i] = 1;
	}
	
}
int main() {
	scanf("%d%d%d", &n, &a, &b);
	for (int i = 1; i <= b; i++) {
		int x, y;
		scanf("%d%d", &x, &y);
		beg[x] = 1; 
		//tend[y] = 1;
		toend[x] = y; 
		//tobeg[y] = x;
	}

	/*if (beg[a] == 1) {
		printf("NO"); return 0 ;
	}*/
	dfs(1);
	if (flag == 1) {
		printf("YES");
	}
	else {
		printf("NO");
	}
}

觉不睡了也要补题 这就是菜鸡的末路

  • D.Riana and Distribution of Pie
    万万没想到啊,一句话题
    雨露均沾:既然分蛋糕最大比例和最小比例差要最小 ,那就直接都一样好了。
    1号取100%
    2号取50%,得到50%
    3号取33.3333%,一号和二号加一块是100%,要从一号和二号那里得到33.3333%,那直接都抢33.3333%就好了。
    4号取25%。123号加一块100%,4号从大家那里都抢25%,则大家都是25%了。 这tm我是真没想到
    以此类推。
    代码不放了,短的吓人。注意利用round和乘除法来保留确定位数小数。

  • E. Riana's Excruciating Enhancement Enigma
    听说又是一句话题?
    这tm什么破题???????给一段六级阅读然后输入什么原样输出就行了????nt???exm???

  • F.Riana and Fiber Chatroom
    注意228和一月份。每年都要有 fastyear

int n;
const int N = 1e5 + 5;
int y[100005],yy[100005],yy1[100005];
int main() {
	scanf("%d", &n);
	int miny = 200000, maxy = 0;
	string s;
	cin >> s;
	int f1 = s.find('-');
	string tmp1 = s.substr(0,f1);
	//cout << tmp << endl;
	int f2 = s.find('-', f1 + 1);
	string tmp2 = s.substr(f1+1, f2-f1-1);
	//cout << tmp << endl;
	int f3 = s.find('-', f2+1);
	string tmp3 = s.substr(f2+1, f3-f2-1);
	//cout << tmp << endl;
	int yt = atoi(tmp1.c_str());
	int mt = atoi(tmp2.c_str());
	int dt = atoi(tmp3.c_str());
	y[yt] = 1;
	if (mt == 2 && dt <= 29) {
		y[yt - 1] = 1;
	}
	miny = min(yt, miny); maxy = max(maxy, yt);
	for (int i = 1; i <= n; i++) {
		cin >> s;
		f1 = s.find('-');
		tmp1 = s.substr(0, f1);
		f2 = s.find('-', f1 + 1);
		tmp2 = s.substr(f1 + 1, f2 - f1 - 1);
		f3 = s.find('-', f2 + 1);
		tmp3 = s.substr(f2 + 1, f3 - f2 - 1);
		yt = atoi(tmp1.c_str());
		mt = atoi(tmp2.c_str());
		dt = atoi(tmp3.c_str());
		if (mt == 2 && dt <= 28) {
			yy[yt - 1] = 1;
		}
		if (mt == 1) {
			yy[yt - 1] = 1;
		}
		miny = min(yt, miny); maxy = max(maxy, yt);
	}
	int cnt = 0;
	for (int i = miny; i <= maxy-1; i++) {
		if (yy[i] == 0) {
			cnt++; yy1[i] = 1;
		}
	}
	if (cnt > 100000) {
		printf("-1\n");
		return 0;
	}
	else if(cnt>0)
		printf("%d\n", cnt);
	else if (cnt == 0) {
		printf("0\n");
		return 0;
	}
	
	for (int i = miny; i <= maxy-1; i++) {
		if (yy1[i] == 1) {
			printf("%d-02-01\n", i + 1);
			/*y[i] = 1; y[i + 1] = 1; yy[i] =1;*/
		}
	}
	
}
  • G. Riana and Gallant Guards
    推式子 一句话题 略过

  • F

posted @ 2020-06-09 22:21  Cha2a_zzZ  阅读(338)  评论(0)    收藏  举报