Luogu P3123 [USACO15OPEN]贝茜说哞Bessie Goes Moo

题目描述

Farmer John and Bessie the cow love to exchange math puzzles in their free time.

The last puzzle FJ gave Bessie was quite difficult and she failed to solve it.

Now she wants to get even with FJ by giving him a challenging puzzle.

Bessie gives FJ the expression (B+E+S+S+I+E)(G+O+E+S)(M+O+O)(B+E+S+S+I+E)(G+O+E+S)(M+O+O)(B+E+S+S+I+E)(G+O+E+S)(M+O+O) , containing the

seven variables B,E,S,I,G,O,MB,E,S,I,G,O,MB,E,S,I,G,O,M (the “OOO “ is a variable, not a zero). For each

variable, she gives FJ a list of up to 500 integer values the variable can

possibly take. She asks FJ to count the number of different ways he can assign

values to the variables so the entire expression evaluates to a multiple of 7.

Note that the answer to this problem can be too large to fit into a 32-bit

integer, so you probably want to use 64-bit integers (e.g., “long long”s in C or

C++).

  • 七个变量B,E,S,I,G,O,M;使得(B+E+S+S+I+E)(G+O+E+S)(M+O+O)被7整除的方案有多少种.

输入输出格式

输入格式:

The first line of the input contains an integer NNN . The next NNN lines each

contain a variable and a possible value for that variable. Each variable will

appear in this list at least once and at most 500 times. No possible value will

be listed more than once for the same variable. All possible values will be in

the range $-10^{5}$ to $10^{5}$.

输出格式:

Print a single integer, giving the number of ways FJ can assign values to

variables so the expression above evaluates to a multiple of 7.

输入输出样例

输入样例#1: 复制

10
B 2
E 5
S 7
I 10
O 16
M 19
B 3
G 1
I 9
M 2

输出样例#1: 复制

2

说明

The two possible assignments are

(B,E,S,I,G,O,M) = (2, 5, 7, 9, 1, 16, 19) -> 51,765
(B,E,S,I,G,O,M) = (2, 5, 7, 9, 1, 16, 2 ) -> 34,510

思路

  • 用 $f[i][j]$表示: 第i个字母变量所代表的数mod7==j的次数
  • 由于每个字母mod 7只可能有0~6共7种结果,所以直接7^7暴力枚举
  • $b[k]$表示第k个变量mod 7的值 i
  • $c[k]$表示输入中的数mod 7== i 的出现次数
  • 当s1,s2,s3中有一个为0时,就可以累加答案

代码

#include<cmath>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define re register int
using namespace std;
int n,x;
char a[2],s[10];
long long ans,f[10][20],c[10],b[10];
inline int read(){
int x=0,w=1;
char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
if(ch=='-') w=-1,ch=getchar();
while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+ch-48,ch=getchar();
return x*w;
}
void dfs(int k,long long sum) {
if(k>7) {
int s1=(b[1]+b[2]*2+b[3]*2+b[4])%7;
int s2=(b[5]+b[6]+b[2]+b[3])%7;
int s3=(b[7]+2*b[6])%7;
if(s1==0||s2==0||s3==0) ans=ans+sum;
return;
}
for(re i=0;i<=6;i++) {
b[k]=i;
c[k]=f[k][i];
if(c[k]==0) continue;
dfs(k+1,sum*c[k]);
}
}
int main() {
//freopen("p3123.in","r",stdin);
//freopen("p3123.out","w",stdout);
s[1]='B';s[2]='E';s[3]='S';s[4]='I';s[5]='G';s[6]='O';s[7]='M';
n=read();
for(re i=1;i<=n;i++) {
scanf("%s%d",a,&x);
for(re j=1;j<=7;j++)
if(a[0]==s[j]) f[j][(x%7+7)%7]++;
}
dfs(1,1);
printf("%lld\n",ans);
return 0;
}

【题解】Luogu P3123 [USACO15OPEN]贝茜说哞Bessie Goes Moo的更多相关文章

  1. 【题解】Luogu P2214 [USACO14MAR]哞哞哞Mooo Moo

    P2214 [USACO14MAR]哞哞哞Mooo Moo 题目描述 Farmer John has completely forgotten how many cows he owns! He is ...

  2. BZOJ1613: [Usaco2007 Jan]Running贝茜的晨练计划

    1613: [Usaco2007 Jan]Running贝茜的晨练计划 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1138  Solved: 554[ ...

  3. BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划

    题目 1613: [Usaco2007 Jan]Running贝茜的晨练计划 Time Limit: 5 Sec  Memory Limit: 64 MB Description 奶牛们打算通过锻炼来 ...

  4. 3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题

    3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit:  ...

  5. 1613: [Usaco2007 Jan]Running贝茜的晨练计划

    1613: [Usaco2007 Jan]Running贝茜的晨练计划 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1252  Solved: 609 ...

  6. 1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪

    1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 2 ...

  7. 【u025】贝茜的晨练计划

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的运动方式是每天进行N(1 <= ...

  8. BZOJ_1613_ [Usaco2007_Jan]_Running_贝茜的晨练计划_(动态规划)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1613 n分钟,疲劳值上限是m,开始时疲劳值为0.第i分钟可以跑d[i]米.在某一时刻,如果疲劳 ...

  9. bzoj1643 [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪

    Description 农夫约翰已经从他的牧场中取得了数不清块数的正方形草皮,草皮的边长总是整数(有时农夫约翰割草皮的刀法不合适,甚至切出了边长为0的正方形草皮),他已经把草皮放在了一个奶牛贝茜已经知 ...

随机推荐

  1. Linux下查看在线用户及用户进程

    #该服务器下的所有用户运行进程的情况 ps -ax -u #查看java程序下用户的进程情况 ps -ax -u |grep java   或  ps aux|grep java cat /etc/p ...

  2. Jmeter和Postman做接口测试的区别,孰优孰劣?

    区别1:用例组织方式 不同的目录结构与组织方式代表不同工具的测试思想,学习一个测试工具应该首先了解其组织方式. Jmeter的组织方式相对比较扁平,它首先没有WorkSpace(工作空间)的概念,直接 ...

  3. class的大小

    3个问题: sizeof一个空类是多大?为什么?编译器为什么这么做? 在这个类中添加一个virtual函数后再sizeof,这时是多大?为什么? 将这个类再virtual继承一个其它的空类,这是多大? ...

  4. 克鲁斯卡尔(Kruskal)算法

    概览 相比于普里姆算法(Prim算法),克鲁斯卡尔算法直接以边为目标去构建最小生成树.从按权值由小到大排好序的边集合{E}中逐个寻找权值最小的边来构建最小生成树,只要构建时,不会形成环路即可保证当边集 ...

  5. [MySQL数据库之表的详细操作:存储引擎、表介绍、表字段之数据类型]

    [MySQL数据库之表的详细操作:存储引擎.表介绍.表字段之数据类型] 表的详细操作 存储引擎 mysql中建立的库======>文件夹 库中建立的表======>文件 用来存储数据的文件 ...

  6. 虚拟机快速下载安装配置aarch64-linux-gnu-gcc工具链

    方式一:软件仓库安装 此方法不用自己去配置交叉编译工具链 1.查看本地仓库有支持哪些版本哪些 输入命令: apt-cache search aarch64 2.下载安装 gcc-8-aarch64-l ...

  7. ssh无法启动 (code=exited, status=255)

    ssh无法启动 (code=exited, status=255) 2019年1月30日ssh 服务器运行了一些脚本后,突然发现无法ssh了. root@X61T:/home/liang# servi ...

  8. CentOS 7系统中的时间日期设置

    修改 CentOS 7系统中的时间日期设置 timedatectl set-ntp no timedatectl timedatectl set-time 2022-06-04 timedatectl ...

  9. setting>SSH>sessions setting>勾选ssh Keepalive[ MobaXterm】设置保持SSH连接

    [ MobaXterm]设置保持SSH连接 ssh远程连接会在无操作时自动断开连接.为了保持程序运行和连接,需要设置保持连接. 1.MobaXterm如果使用了MobaXterm客户端,那么需要在设置 ...

  10. 058.Python前端Django与Ajax

    一 Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML".即使用Javascript语言与服务 ...