~~~~~我~是~真的~忍不了~这个~取模~的~锅~了~~~~~

T2695 桶哥的问题——吃桶

前传

1.T2686 桶哥的问题——买桶

这题真的hin简单,真的

2.T2691 桶哥的问题——送桶

前言

这是一道看上去不是毒瘤但实际上有那么一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 , b是确定的

也就是说对于每一个 z 都可以得到以下这个式子

∑( x·bx ) +  z·∑bx  -  b∑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 桶哥的问题——吃桶的更多相关文章

  1. 【桶哥的问题——吃桶-简化版】【洛谷p2671】求和

    求和=>[链接] 题目相较起_rqy出的要简单很多,来自noip普及组2015 化简这个式子:x+z=2y,故x与z mod 2同余,因此和桶哥的问题——吃桶一样的思路就可以做出来啦qwq: # ...

  2. 校内题目T2695 桶哥的问题——吃桶

    同T2一样外校蒟蒻可能没看过: 题目描述: 题目背景 @桶哥 桶哥的桶没有送完. 题目描述 桶哥的桶没有送完,他还有n个桶.他决定把这些桶吃掉.他的每一个桶两个属性:种类aia_iai​和美味值bib ...

  3. 【洛谷T2695 桶哥的问题——吃桶】

    这是我们团队的一个题目(就是一个_rqy说很好写的题QwQ) 题目背景 @桶哥 这个题目的思路很玄学(性感_rqy在线讲解) 60 Pts 对于前面的六十分,好像很好拿,单纯的打一个模拟 唯一需要注意 ...

  4. T2695 桶哥的问题——吃桶 题解

    校内测试 ------T3 对于这个题,首先想到的应该就是暴力枚举了吧,看看数据范围,60就是白送的啦!(但是我也不知道怎么才20分qwq) 思路分析: 这个题要你求所有套餐的总价值,先看一眼产生套餐 ...

  5. 校内题目T2691 桶哥的问题——送桶

    这是一道校内题目,但迷路的蒟蒻们同样被欢迎来此学习QWQ 题目描述: 题目背景 @桶哥本校——皎月pks大佬OrzOrz 买完了桶,桶哥要去送桶. 题目描述 桶哥买了nn个桶, 他要将这些桶送去nn个 ...

  6. T2695 桶哥的问题——送桶 题解

    校内测试 ------T2 看完这个题,就觉得和贪心那一块的任务调度很像,于是思路就是贪心啦! 蒟蒻的我,也就只能想到用贪心了,但是不知道怎么用qwq 这是我考试当时的思路,数据水骗了80分qwq: ...

  7. T2691 桶哥的问题——送桶

    这个题其实不难,就是按照结束时候的顺序从大到小走一遍,能送的就送,如果区间不重合就更新一下 代码: #include<iostream> #include<cstdio> #i ...

  8. 洛谷 T2691 桶哥的问题——送桶

    嗯... 题目链接:https://www.luogu.org/problem/T2691 这道题有一点贪心的思想吧...并且思路与题目是倒着来的(貌似这种思路已经很常见的... 先举个栗子: 引出思 ...

  9. 【校内test】桶哥的问题

    (以上题目出自_rqy两年前) #A:桶哥的问题——买桶[链接] [题目描述] 桶哥要买一些全家桶.他有a元钱,而每个桶要花b元钱.他能不能买到c个桶? [输入格式] 一行三个整数a, b, c [输 ...

随机推荐

  1. QT 托盘 hover事件捕捉

    1. QSystemTrayIcon hover事件 参考:https://stackoverflow.com/questions/21795919/how-to-catch-the-mousehov ...

  2. deep_learning_Function_tf.identity()

    这两天看batch normalization的代码时,学到滑动平均窗口函数ExponentialMovingAverage时,碰到一个函数tf.identity()函数,特此记录. tf.ident ...

  3. The Linux Kernel 4.15.0官方文档内核语言风格解读(留)

    https://www.kernel.org/doc/html/v4.15/translations/zh_CN/coding-style.html 1.缩进 制表符是 8 个字符,所以缩进也是 8 ...

  4. SQLAlchemy中Model.query和session.query(Model)的区别

    我们使用Flask 0.11.1,Flask-SQLAlchemy 2.1使用PostgreSQL作为DBMS. 示例使用以下代码更新数据库中的数据: entry = Entry.query.get( ...

  5. linux下redis 安装

    --获取redis [redis@localhost ~]$ wget http://download.redis.io/releases/redis-2.8.7.tar.gz --2017-05-2 ...

  6. PMBOK :美国的项目管理知识体系

    PMBOK 是Project Management Body Of Knowledge的缩写, 指项目管理知识体系的意思,具体是美国项目管理协会(PMI)对项目管理所需的知识.技能和工具进行的概括性描 ...

  7. Springboot项目全局异常统一处理

    转自https://blog.csdn.net/hao_kkkkk/article/details/80538955 最近在做项目时需要对异常进行全局统一处理,主要是一些分类入库以及记录日志等,因为项 ...

  8. 红帽Linux故障定位技术详解与实例(1)

    红帽Linux故障定位技术详解与实例(1) 2011-09-28 14:26 圈儿 BEAREYES.COM 我要评论(0) 字号:T | T 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍 ...

  9. Python CGI编程Ⅵ

    GET和POST方法 浏览器客户端通过两种方法向服务器传递信息,这两种方法就是 GET 方法和 POST 方法. 使用GET方法传输数据 GET方法发送编码后的用户信息到服务端,数据信息包含在请求页面 ...

  10. js 创建节点 以及 节点属性 删除节点

    case 'copy': var B1 = document.getElementById("B1"); //获得B1下的html文本 var copy_dom = documen ...