2019山东省省赛

A - Calandar题意:给定一个日期以及日期的星期,问另一个日期的星期,每周5天,一月30天,一年12月思路;每周的天数一样,所以只要看日的差别即可#include <bits/stdc++.h>using namespace std;#define ll long longconst int N = 5e4+10;string ww[10] = {"0","Monday","Tuesday","Wednesday","Thursday","Friday"};int m
摘要由CSDN通过智能技术生成

A - Calandar

  • 题意:给定一个日期以及日期的星期,问另一个日期的星期,每周5天,一月30天,一年12月
  • 思路:每周的天数一样,所以只要看日的差别即可
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 5e4+10;
string ww[10] = {
   "0","Monday","Tuesday","Wednesday","Thursday","Friday"};
int main()
{
   
	int t; cin >> t;
	while(t--) {
   
		ll y1, m1, d1, y2, m2, d2;
		string w;
		cin >> y1 >> m1 >> d1 >> w;
		cin >> y2 >> m2 >> d2;
		ll po;
		for(int i = 1; i <= 5; i++) {
   
			if(ww[i]==w) {
   
				po = i;
				break;
			}
		}
		d1 %= 5;
		d2 %= 5;
		if(d1==0) d1 = 5;
		if(d2==0) d2 = 5;
		if(d1==d2) {
   
			cout << w << endl;
		}else if(d1>d2) {
   
			ll n = d1-d2;
			while(n--) {
   
				po--;
				po = (po+5)%5;
				if(po==0) po = 5;
			}
			cout << ww[po] << endl;
		}else {
   
			ll n = d2-d1;
			while(n--) {
   
				po++;
				po = po%5;
				if(po==0) po = 5; 
			}
			cout << ww[po] << endl;
		}
	}
	return 0;
}

B - Flipping Game

  • 题意:给n个长度的东西状态,有k次操作,每次改变m个东西的状态,问由a到b有多少种操作
  • 思路:dp。由于只有0和1两种状态,所以每次只要统计选择的相同的状态和不相同的状态的个数,然后乘上组合数。
#include <bits/stdc++.h>
using namespace std;
#define ll long long

const int N = 100010;
const int Mod = 998244353;
ll c[110][110];
void init() 	// 计算组合数
{
   
	memset(c,0,sizeof(c));
	c[0][0] = 1;
	for(int i = 1; i <= 100; i++) {
   
		c[i][0] = 1;
		for(int j = 1; j < i; j++) c[i][j] = (c[i-1][j-1]+c[i-1][j])%Mod;
		c[i][i] = 1;
	}
}
ll dp[110][110];
char a[110], b[110];
int main()
{
   		
	init();
	int t; scanf("%d", &t);
	while(t--) {
   
		memset(dp,0,sizeof(dp));
		ll n, k, m;
		scanf("%lld %lld %lld", &n, &k, &m);
		scanf("%s %s", a, b);
		int cnt = 0;	// 原始状态不相同的个数
		for(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值