【题解】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的正方形草皮),他已经把草皮放在了一个奶牛贝茜已经知 ...
随机推荐
- Windows进程间通讯(IPC)----套接字
Windows套接字 Windows套接字即socket,通过socket可以实现在不同的进程间通信,甚至这两个进程可以不在同一个计算机中. Winsock使用步骤 服务端 socket初始化 创建套 ...
- C++ primer plus读书笔记——第13章 类继承
第13章 类继承 1. 如果购买厂商的C库,除非厂商提供库函数的源代码,否则您将无法根据自己的需求,对函数进行扩展或修改.但如果是类库,只要其提供了类方法的头文件和编译后的代码,仍可以使用库中的类派生 ...
- MongoDB·Windows下管理员密码重置解决方案
阅文时长 | 1.07分钟 字数统计 | 1730.4字符 主要内容 | 1.问题切入 2.详细步骤 3.声明与参考资料 『MongoDB·Windows下管理员密码重置解决方案』 编写人 | SCs ...
- 建站第二步:简单配置Nginx反代理工具
简单配置Nginx反代理工具 你要用你的域名能和服务器绑定就要用一些反代理工具 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,极其优异的服务器软件,底层为C 来自某些 ...
- [bug]MySQL [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause
参考 http://www.10qianwan.com/articledetail/220315.html
- RHEL高级磁盘管理—Stratis
2. Stratis 本地存储管理工具,通过Stratis可以便捷的使用Thin Provisioning.Snapshots.Pool-based的管理和监控等高级存储功能. Stratis 基于x ...
- Ansible_主机变量和主机组变量的演示
一.主机变量和主机组变量的演示 1.主机变量和主机组变量的基本语法和规则 请访问:https://www.cnblogs.com/itwangqiang/p/13592362.html 2.首先在/e ...
- Linux进阶之RAID磁盘阵列、系统启动及dd命令
本节内容 1. 磁盘阵列 RAID0: 条带卷 2+ 100% 读写速度快,不容错 RAID1: 镜像卷 2 50% 读写速度慢,容错 RAID5: 奇偶校验条带卷 3 读写速度快,容错 ...
- Centos7挂载windows共享目录
将windows的共享目录挂载到Centos7 查看是否有mount.cifs命令,如果没有,在线安装 [root@dropbox-bak01 ~]# yum install cifs-utils - ...
- CefSharp如何进行页面的缩放(即Ctrl+滚轮)
问题:CefSharp如何进行页面的缩放 摘要:由于CefSharp并没有提供鼠标滚轮事件.只有一个KeyboardHandler事件,因此只能接收到键盘事件. 环境:CefShap.Wpf 了解Ce ...