T2695 桶哥的问题——吃桶
~~~~~我~是~真的~忍不了~这个~取模~的~锅~了~~~~~
T2695 桶哥的问题——吃桶
前传
这题真的hin简单,真的
前言
这是一道看上去不是毒瘤但实际上有那么一seisei毒瘤的题目
在我多次提交代码仍然屡教不改最后痛改前非的惨痛经历下,总结出以下#¥@¥#%:
1.可以用结构体存 a , b QAQ实锤啦是取模的锅
不用结构体的话那就换成两个一维数组 a[ ] b[ ]
2.多取模,越多越好,能往哪里mod就往哪里mod
(一开始mod少了,然后就Wa了)
解析
1. 把这个式子化简一下
z - x = 3 y
也就是说明 z,x 属于同一个mod(3)的剩余类
如果 z 是 15 的话,那么 x 可以是 3 6 9 12 (%3……0)
如果 z 是 16 的话,那么 x 可以是 1 4 7 10 (%3…… 1)
如果 z 是 17 的话,那么 x 可以是 2 5 8 11 (%3…… 2)
所以我们就可以枚举 z ,那么符合条件的 x 就是和它同属一个剩余类并且的啦
2. 我们把这个式子拆一下
( x + z )·( bx - bz )
= x·bx + z·bx - x·bz - z·bz
所以说,对于每一个 z ,它可以有很多个对应的 x ,虽然 x ,bx 不确定,但是 z , bz 是确定的
也就是说对于每一个 z 都可以得到以下这个式子
∑( x·bx ) + z·∑bx - bz·∑x - z·bz·(z的个数)
从前往后枚举 z ,对于每一个 z ,可以满足这个 z 要求的 x 一定也可以满足下一个和这个 z 相类似的 z ,所以说我们就开数组统计一下
S[ ] 到当前为止的满足 z 的 x 的数目
Sx[ ] 到当前为止的满足 z 的 x 的和
Sbx[ ] 到当前为止的满足 z 的 bx 的和
Sxbx[ ] 到当前为止的满足 z 的 x*bx 的和
每次先统计,再更新数组
对于代码当中呢,是枚举三种剩余类,也就是
每次操作之前都要初始化一下
然后开始 for 循环枚举 z ,计算
然后更新数组,按照 a 的种类更新到数组中的不同地方,数组中每一个小格子代表一个种类的桶
注意保证答案不为负数 貌似取模就已经保证了
最后输出答案即可
代码
#include<bits/stdc++.h> using namespace std; const int maxn=;
const int mod=; int n,m;
long long ans;
int S[maxn],Sx[maxn],Sbx[maxn],Sxbx[maxn]; struct RQY
{
int a,b;
}tong[maxn]; void caozuo(int rqy)
{
long long hxbx,hzbx,hxbz,hzbz;
int num=;
memset(S,,sizeof(S));
memset(Sx,,sizeof(Sx));
memset(Sbx,,sizeof(Sbx));
memset(Sxbx,,sizeof(Sxbx)); for(int i=rqy;i<=n;i+=)
{
num=tong[i].a ; hxbx=Sxbx[num]%mod;
hzbx=i%mod*Sbx[num]%mod;
hxbz=tong[i].b%mod *Sx[num]%mod;
hzbz=i%mod*tong[i].b %mod *S[num]%mod; ans=(ans+hxbx+hzbx-hxbz-hzbz)%mod; S[num]++;
Sx[num]=(Sx[num]+i%mod)%mod;
Sbx[num]=(Sbx[num]+tong[i].b%mod)%mod ;
Sxbx[num]=(Sxbx[num]+i%mod*tong[i].b%mod)%mod ; } } int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&tong[i].b );
for(int i=;i<=n;i++)
scanf("%d",&tong[i].a ); caozuo();
caozuo();
caozuo(); while(ans<)
{
ans+=mod;
} printf("%ld",ans%mod); return ;
}
题目链接
P2671 求和
AC的关键 疯狂mod
这个题要注意是枚举2的剩余类啦
~~~~~~QWQ写完之后我发现我要好好组织语言 mod一mod ~~~~~~
T2695 桶哥的问题——吃桶的更多相关文章
- 【桶哥的问题——吃桶-简化版】【洛谷p2671】求和
求和=>[链接] 题目相较起_rqy出的要简单很多,来自noip普及组2015 化简这个式子:x+z=2y,故x与z mod 2同余,因此和桶哥的问题——吃桶一样的思路就可以做出来啦qwq: # ...
- 校内题目T2695 桶哥的问题——吃桶
同T2一样外校蒟蒻可能没看过: 题目描述: 题目背景 @桶哥 桶哥的桶没有送完. 题目描述 桶哥的桶没有送完,他还有n个桶.他决定把这些桶吃掉.他的每一个桶两个属性:种类aia_iai和美味值bib ...
- 【洛谷T2695 桶哥的问题——吃桶】
这是我们团队的一个题目(就是一个_rqy说很好写的题QwQ) 题目背景 @桶哥 这个题目的思路很玄学(性感_rqy在线讲解) 60 Pts 对于前面的六十分,好像很好拿,单纯的打一个模拟 唯一需要注意 ...
- T2695 桶哥的问题——吃桶 题解
校内测试 ------T3 对于这个题,首先想到的应该就是暴力枚举了吧,看看数据范围,60就是白送的啦!(但是我也不知道怎么才20分qwq) 思路分析: 这个题要你求所有套餐的总价值,先看一眼产生套餐 ...
- 校内题目T2691 桶哥的问题——送桶
这是一道校内题目,但迷路的蒟蒻们同样被欢迎来此学习QWQ 题目描述: 题目背景 @桶哥本校——皎月pks大佬OrzOrz 买完了桶,桶哥要去送桶. 题目描述 桶哥买了nn个桶, 他要将这些桶送去nn个 ...
- T2695 桶哥的问题——送桶 题解
校内测试 ------T2 看完这个题,就觉得和贪心那一块的任务调度很像,于是思路就是贪心啦! 蒟蒻的我,也就只能想到用贪心了,但是不知道怎么用qwq 这是我考试当时的思路,数据水骗了80分qwq: ...
- T2691 桶哥的问题——送桶
这个题其实不难,就是按照结束时候的顺序从大到小走一遍,能送的就送,如果区间不重合就更新一下 代码: #include<iostream> #include<cstdio> #i ...
- 洛谷 T2691 桶哥的问题——送桶
嗯... 题目链接:https://www.luogu.org/problem/T2691 这道题有一点贪心的思想吧...并且思路与题目是倒着来的(貌似这种思路已经很常见的... 先举个栗子: 引出思 ...
- 【校内test】桶哥的问题
(以上题目出自_rqy两年前) #A:桶哥的问题——买桶[链接] [题目描述] 桶哥要买一些全家桶.他有a元钱,而每个桶要花b元钱.他能不能买到c个桶? [输入格式] 一行三个整数a, b, c [输 ...
随机推荐
- X-Forwarded-For伪造及防御
使用x-Forward_for插件或者burpsuit可以改包,伪造任意的IP地址,使一些管理员后台绕过对IP地址限制的访问. 防护策略: 1.对于直接使用的 Web 应用,必须使用从TCP连接中得到 ...
- springboot启动端口占用问题,报错org.apache.catalina.LifecycleException: Protocol handler start failed
解决办法,找到被占用的端口
- go语言的学习之路
一.学习前言 (1)go语言的介绍 1.解释型语言:python PHP java scripy (前端) 2.编译型语言:C C++ C#(微软开发) java(sun公司开发 后来被甲 ...
- oracle重置dba用户密码
1.进入sqlplus里面: [oracle@master ~]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Tue ...
- PAT Basic 1093 字符串A+B (20 分)
给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集.要求先输出 A,再输出 B,但重复的字符必须被剔除. 输入格式: 输入在两行中分别给出 A 和 B,均为长度不超过 1的.由可见 ...
- uestc summer training #1
A 一个很好想的dp ll dp[maxn][]; int main() { scanf("%d%d",&n,&k); memset(dp,,sizeof(dp)) ...
- ffmpeg函数01__swr_convert()
swr_convert() 针对每一帧音频的处理.把一帧帧的音频作相应的重采样 int swr_convert(struct SwrContext *s, uint8_t **out, int out ...
- jquery 在将对象作为参数传递的时候要转换成 JSON
不转换成JSON 会报错 Unexpected identifier 方法: JSON.stringify(对象)
- 高性能mysql 第5章 创建高可用的索引
b-tree索引 一定程度上说,mysql只有b-tree索引.他没有bitmap索引.还有一个叫hash索引的,只在Memory存储引擎中才有. b-tree索引跟oracle中的大同小异. mys ...
- solr 基础
solr高亮设置以及摘要 https://www.cnblogs.com/rainbowzc/p/3680343.html java操作solr基本方法 https://blog.csdn.net/z ...