1.20学习总结

洛谷的打卡系统与其他网站的打卡系统一样,连续”打卡天数越多,每次打卡获得的奖励也就越多,同时连续天数加上一天。然而,于其他网站只要一天不打卡,连续天数就要清零。与其他网站不同的是,洛谷的打卡更具有人性化,如果多天不打卡,连续天数仅仅只是减少,当遗漏天数越少,减少的天数也就越少。规则是减少 2n−12n−1 天,nn 为连续遗漏天数。连续天数在下一次打卡时清算,打卡连续天数不会小于 00。也就是说,如果每隔一天打卡,那么连续天数就不会变了。

当连续天数达到以下天数时,给予不同的活跃值奖励:

11 天:奖励 11(千里之行,始于足下)

33 天:奖励 22(坚持 33 天了,加油!)

77 天:奖励 33(曜日轮回)

3030 天:奖励 44(月圆月缺,习惯养成)

120120 天:奖励 55(坚持四个月了!)

365365 天:奖励 66(一年四季都坚持下来了!真不容易!)

小 a NN 天前在洛谷注册了一个账号,虽然当时立志每天都要打卡,但发现这不太容易做到。现在知道他 NN 天的的打卡记录,小 a 希望得知他通过打卡,在 NN 天能获得多少活跃值?

#include<stdio.h>
#include<math.h>
int p(int t)
{
	if (t == 1 || t == 2)
		return 1;
	else if (t < 7)
		return 2;
	else if (t < 30)
		return 3;
	else if (t < 120)
		return 4;
	else if (t < 365)
		return 5;
	else
		return 6;
}
int sum = 0, days = 0, noday = 0;
int main()
{
	int n;
	scanf("%d", &n);
	while (n--)
	{

		int t;
		scanf("%d", &t);
		if (t)
		{
			if(noday)
			{
				days -= pow(2, noday - 1);
				if (days < 0)
					days = 0;
				noday = 0;
			}
			days++;
			sum += p(days);
		}
		else
		{
			noday++;
		}
	}
	printf("%d", sum);
	return 0;
}

 

给定一个正整数 nn,对 nn 分解质因数。

设 n=p1×p2×p3×⋯×pxn=p1​×p2​×p3​×⋯×px​,其中 pipi​ 均为质数。

如果 pipi​ 均为奇数,则称 nn 为『只因数』。 

现在,给出若干个 nn,请你判断 nn 是不是『只因数』。

#include<stdio.h>

int main()
{
	int n;
	scanf("%d", &n);
	while (n--)
	{
		long long t;
		scanf("%lld", &t);
		if (t % 2 == 0)
			printf("No\n");
		else
			printf("Yes\n");
	}
	return 0;
}

 

值得说明的是,本次比赛就是采用团队私有题目+邀请比赛的机制。

洛谷的运营组决定,如果一名 OIer 向他的教练推荐洛谷,并能够成功的使用(成功使用的定义是:该团队有 2020 个或以上的成员,上传 1010 道以上的私有题目,布置过一次作业并成功举办过一次公开比赛),那么他可以浪费掉 kkksc03 的一些时间的同时消耗掉 kkksc03 的一些金钱以满足自己的一个愿望。

kkksc03 的时间和金钱是有限的,所以他很难满足所有同学的愿望。所以他想知道在自己的能力范围内,最多可以完成多少同学的愿望?

#include<stdio.h>
int main()
{
	int n, M, T;
	scanf("%d %d %d", &n, &M, &T);
	int m[201], t[201], f[300][300];
	for (int i = 1; i <= n; i++)
		scanf("%d %d", &m[i], &t[i]);
	for(int k=1;k<=n;k++)
		for (int i = M; i >= m[k]; i--)
			for (int j = T; j >= t[k]; j--)
				f[i][j] = f[i][j] > f[i - m[k]][j - t[k]] + 1 ? f[i][j]:  f[i - m[k]][j - t[k]]+1;
	printf("%d", f[M][T]);
	return 0;
}

 

第一行有两个整数 nn,pp,代表学生数与增加分数的次数。

第二行有 nn 个数,a1∼ana1​∼an​,代表各个学生的初始成绩。

接下来 pp 行,每行有三个数,xx,yy,zz,代表给第 xx 个到第 yy 个学生每人增加 zz 分

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int a[5000001] = { 0 };
int b[5000001] = { 0 };
int n, p, x, y, z;
int min = 100;
int main() 
{
	scanf("%d %d", &n, &p);
	for (int i = 1; i <= n; i++) 
	{
		scanf("%d", &b[i]);
		a[i] = b[i] - b[i - 1];
	}
	for (int i = 1; i <= p; i++) 
	{
		scanf("%d %d %d", &x, &y, &z);
		a[x] += z;
		if (y + 1 <= n) 
		{
			a[y + 1] -= z;
		}
	}
	for (int i = 1; i <= n; i++)
	{
		a[i] += a[i - 1];
		if (a[i] <= min)
		{
			min = a[i];
		}
	}
	printf("%d\n", min);
	return 0;
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值