【题解】Luogu P3123 [USACO15OPEN]贝茜说哞Bessie Goes Moo
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的更多相关文章
- 【题解】Luogu P2214 [USACO14MAR]哞哞哞Mooo Moo
P2214 [USACO14MAR]哞哞哞Mooo Moo 题目描述 Farmer John has completely forgotten how many cows he owns! He is ...
- BZOJ1613: [Usaco2007 Jan]Running贝茜的晨练计划
1613: [Usaco2007 Jan]Running贝茜的晨练计划 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1138 Solved: 554[ ...
- BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划
题目 1613: [Usaco2007 Jan]Running贝茜的晨练计划 Time Limit: 5 Sec Memory Limit: 64 MB Description 奶牛们打算通过锻炼来 ...
- 3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题
3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: ...
- 1613: [Usaco2007 Jan]Running贝茜的晨练计划
1613: [Usaco2007 Jan]Running贝茜的晨练计划 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1252 Solved: 609 ...
- 1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪
1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 2 ...
- 【u025】贝茜的晨练计划
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的运动方式是每天进行N(1 <= ...
- BZOJ_1613_ [Usaco2007_Jan]_Running_贝茜的晨练计划_(动态规划)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1613 n分钟,疲劳值上限是m,开始时疲劳值为0.第i分钟可以跑d[i]米.在某一时刻,如果疲劳 ...
- bzoj1643 [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪
Description 农夫约翰已经从他的牧场中取得了数不清块数的正方形草皮,草皮的边长总是整数(有时农夫约翰割草皮的刀法不合适,甚至切出了边长为0的正方形草皮),他已经把草皮放在了一个奶牛贝茜已经知 ...
随机推荐
- spring源码解析之属性编辑器propertyEditor
异常信息造成此异常的原因bean配置文件调用代码特别说明:异常解决注册springt自带的属性编辑器 CustomDateEditor控制台输出属性编辑器是何时并如何被注册到spring容器中的?查看 ...
- 2-9-9-12分页机制(xp)
10-10-12分页限制 10-10-12分页因为页表PEB只有四个字节所以只能访问2^32 = 4GB物理地址空间,现在的物理内存都大于4GB为了能访问到更多的物理内存2-9-9-12将PEB的大小 ...
- Windows反调试技术(上)
写在前面 在逆向工程中为了防止破解者调试软件,通常都会在软件中采用一些反调试技术来防破解.下面就是一些在逆向工程中常见的反调试技巧与示例. BeingDebuged 利用调试器加载程序时调试器会通过C ...
- Python数模笔记-(1)NetworkX 图的操作
1.NetworkX 图论与网络工具包 NetworkX 是基于 Python 语言的图论与复杂网络工具包,用于创建.操作和研究复杂网络的结构.动力学和功能. NetworkX 可以以标准和非标准的数 ...
- [源码分析] 定时任务调度框架 Quartz 之 故障切换
[源码分析] 定时任务调度框架 Quartz 之 故障切换 目录 [源码分析] 定时任务调度框架 Quartz 之 故障切换 0x00 摘要 0x01 基础概念 1.1 分布式 1.1.1 功能方面 ...
- WPF 使用附加属性声明 ICommand
一.ListBox中为什么选择同一项不能每次都触发SelectionChanged事件呢? 当我需要每次点击ListBox的选中项,都触发事件.找到最符合的事件为SelectionChanged事 ...
- [bug] kafka启动报错 could not be established. Broker may not be available.
原因 配置文件和命令行中的主机名不一致,建议都用ip地址 参考 https://blog.csdn.net/getyouwant/article/details/79000524
- [bug] Maven项目缺少Maven Dependencies
参考 https://blog.csdn.net/whitemiao/article/details/90177135
- mysql链接jmeter
1.需要下载mysql-connector-java.zip工具包,然后将解压后的jar包放到%jmeter_home%\lib下 2.在测试计划上导入jar包 3.创建jdbc连接池并完成 4.创建 ...
- Centos7 rsync同步备份文件
Centos7 rsync同步备份文件 一.rsync主服务端 1,安装rsync 查看是否安装rsync [root@localhost /]# rpm -qa | grep rsync 在线安装r ...