2016陕西省省赛 ACM Rui and her functions B 二分

Rui and her functions

发布时间: 2017年3月27日 15:45   最后更新: 2017年3月28日 12:43   时间限制: 10000ms   内存限制: 256M

Rui is magnificently gifted. Why does she not play with me tonight? Oh, she is obsessing

about n functions with n quartette of positive coefficients, denoted by ai,bi,ci,di(1in)

respectively.

The i-th function fi is defined as fi(x)=(ai×bxi+ci)moddi. She asked Doc to find the

smallest xi in [1,m] for each function such that fi(xi) achieves the minimum of fi in [1,m].

That is say: fi(xi)=min{x[1,m]|fi(x)=mint[1,m]{fi(t)}}.

However n is large and Doc told her that possible xi for each function is unique (and Rui

is unique as well), and x1x2x3xn (and that is as amazing as Rui).

Now she needs to find xi by herself.

There are several test cases (no more than 64) and please process till EOF.
The first line in each case contains two integers n and m1n,m100000. Each of the
following n lines contains four integers ai,bi,ci,di respectively, where 0<ai,bi,cidi109.

For each test case, print first the identifier of the test case, then n lines follow. The i-th
line contains the number xi for i-th function fi.

 复制
3 5
373911025 1525760443 652804587 1767005941
120055457 159868670 59429374 196292251
1200581 955324 141748 2705431
Case #1
1
2
4
总感觉这道题目描述的不好,或者是我一直没有理解好。这个题目说的是每个f函数,x在[1,m]区间上的取值,f(x)都是不同的

然后让你求出每个f(x)取得最小值情况下的x,这个题有点特殊,数据保证了x1<=x2<=...<=xn我觉得这个数据不是随机出的,而是故意满足了这个条件。

由于x的单调性,我们可以这样考虑,如果我们先求出了下标n/2对应的函数对应的x,那么对于所有下标小于n/2的f函数,就只需要考虑[1,x[n/2]]之内的数就可以了,因为这些函数

的最小值对应的x不可能大于x[n/2]了,这样的话,再判断左右两边的f函数对应的x时,要检索的范围就缩小了一半。

因此,上来就用二分

void solve(int lp,int rp,int l,int r)//左闭右开 
表示的是要求区间[lp,rp)内的函数对应的最小值,这些最小值的取值再[l,r)里面

那么我们先求pos = (lp+rp)/2位置的函数,假设求得了x的下标为under

那么下一次分治的时候,

左边的区间变成了[lp,pos) 定义域变成了[l,under+1)因为x之间可以相等

右边的函数下标区间变成了[pos+1,rp),定义域变成了[under,r)


注意!!!!!

快速幂不能一直使用,否则会TTTTTTT,555555555我在这地方T了20次!!!归根到底还是菜啊

解决方案是,在定义域内检索最小值的时候,先用快速幂求出第一项,然后递归得到以后的

#include <iostream>
#include <algorithm> 
#include <cstdio>
using namespace std;
typedef long long LL;
const int MAX = 100009;
const LL INF = 1e18;
LL a[MAX],b[MAX],c[MAX],d[MAX],ans[MAX];
int n,m;
LL mod_pow(LL x,LL n,LL mod)
{LL res = 1;while(n > 0){if(n&1) res = res*x%mod;x = x*x%mod;n >>= 1;}return res;
}
/* 
LL calc(int x,int i)
{LL mod = d[i];return ((a[i]%mod*mod_pow(b[i],x,mod))%mod + c[i]%mod) % mod;
}
*/
void solve(int lp,int rp,int l,int r)//左闭右开 
{//返回中间位置if(lp >= rp) return ;int pos = (lp + rp) / 2;LL sm = INF;int under;int lb = l;int up = r;LL tmp = mod_pow(b[pos],lb,d[pos]);for(int i = lb;i < up;i++){if(i != lb) tmp = tmp*b[pos]%d[pos];LL cc = ((a[pos]%d[pos]*tmp)%d[pos] + c[pos]%d[pos]) % d[pos];if(sm > cc)sm = cc,under = i;}ans[pos] = under;solve(lp,pos,l,under+1);solve(pos+1,rp,under,r);
}
main()
{int cas = 0;while(~scanf("%d%d",&n,&m)){for(int i = 0;i < n;i++)scanf("%lld%lld%lld%lld",a+i,b+i,c+i,d+i);LL sm = INF;printf("Case #%d\n",++cas);solve(0,n,1,m+1);for(int i = 0;i < n;i++) printf("%lld\n",ans[i]);} return 0;} /*
1 1
373911025 1525760443 652804587 1767005941*/



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用.NET Core快速开发一个较正规的命令行应用程序

一般命令行程序包含什么&#xff1f;使用方式帮助信息子命令参数选项帮助信息帮助信息如上&#xff0c;介绍了命令的作用和参数、选项作用。这个是必不可少的。子命令一个应用程序打包了多个功能&#xff0c;这时候就可以使用子命令&#xff0c;比如 dotnet ef migrations&…

牛客-乃爱与城市拥挤程度【树形dp】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1100/B 题目大意 nnn个点的一棵树&#xff0c;对于每个点求 距离该点不超过kkk的点数每个点的权值是以该点为起点长度所有不超过kkk的路径覆盖该点的次数&#xff0c;求所有点的乘积 解题思路 对于第一问我们先考虑在子树…

SpringBoot2.1.9 MongoDB的聚合连接

LookupOperation lookupOperation LookupOperation.newLookup().from(AdminRepository.instance().getTableName()). //关联从表名localField(User.Fields.name). //主表关联字段foreignField(Admin.Fields.name).//从表关联的字段as("adminInfo"); //查询结果…

节操大师 北方大学生程序设计竞赛 南开大学

Description MK和他的小伙伴们&#xff08;共n人&#xff0c;且保证n为2的正整数幂&#xff09;想要比试一下谁更有节操&#xff0c;于是他们组织了一场节操淘汰赛。他们的比赛规则简单而暴力&#xff1a;两人的节操正面相撞&#xff0c;碎的一方出局&#xff0c;而没碎的一方晋…

牛客-仓鼠的石子游戏【博弈论】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1100/A 题目大意 nnn个环&#xff0c;第iii个环有aia_iai​个珠子。要求涂色时没有相邻的同色。 两个人轮流涂色&#xff0c;直到一个人无法涂色为止。 解题思路 其实先手后手的胜利与他们的操作没有任何关系。 考虑一个…

Window7 docker安装

一、下载docker toolbox docker-toolbox-windows-docker-toolbox安装包下载_开源镜像站-阿里云 -ce后缀的是免费的版本&#xff0c;其他是收费版本 二、安装 安装完成即可 三、启动docker 双击 Docker Quickstart Terminal启动 其他问题&#xff1a; 启动拉boot2docker镜像失…

aspnetcore.webapi实践k8s健康探测机制 - kubernetes

1、浅析k8s两种健康检查机制Liveness k8s通过liveness来探测微服务的存活性&#xff0c;判断什么时候该重启容器实现自愈。比如访问 Web 服务器时显示 500 内部错误&#xff0c;可能是系统超载&#xff0c;也可能是资源死锁&#xff0c;此时 httpd 进程并没有异常退出&#xff…

dp 树状数组 逆序元组

wmq的队伍 发布时间: 2017年4月9日 17:06 最后更新: 2017年4月9日 17:07 时间限制: 2000ms 内存限制: 512M 描述 交大上课需要打卡&#xff0c;于是在上课前的几分钟打卡机前往往会排起长队。 平时早睡早起早早打卡的wmq昨晚失眠&#xff0c;今天起晚了&#xff0c;于是他…

牛客-服务器需求【线段树】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1101/A 题目大意 nnn天第iii天需要aia_iai​台机器&#xff0c;每台机器可以工作mmm天。qqq次修改&#xff0c;每次修改一个aia_iai​&#xff0c;求每次修改后至少需要雇佣多少台机器。 解题思路 很容易想到答案就是max{…

快速搭建CentOS+ASP.NET Core环境支持WebSocket

以前用python&#xff0c;go尝试在linux下做web服务&#xff0c;python没有强类型支持与高性能&#xff0c;go又没有很好的集成开发环境&#xff08;还有强迫症的语法&#xff09;&#xff0c;回头看了几次.net&#xff0c;都没有时间尝试&#xff0c;现终于实现了这些想法&…

博客文章列表(一)——JAVA

一、成长系列 面试 详情列表 编程难题 详情列表 java总结 详情列表 java技能 详情列表 java面…

Cube Or 北方大学生训练赛

Cube Or Time Limit: 2000/2000 MS(Java/Others) Memory Limit: 262144/262144 K(Java/Others) Problem Description : Given you N Integers ai (1≤i≤N) , you can do thefollowing operation: pick out …

牛客-沙漠点列【tarjan】

正题 题目链接:https://ac.nowcoder.com/acm/contest/1101#question 题目大意 nnn个点mmm条边的沙漠(所有联通子图都是仙人掌)&#xff0c;删除kkk个点使得剩下的连通块最多。 解题思路 对于图上的每条割边&#xff0c;删去之后就可以多出一个联通块&#xff0c;所以我们就可…

来自后端的突袭? --开包即食的教程带你浅尝最新开源的C# Web引擎 Blazor

在今年年初, 恰逢新春佳节临近的时候. 微软给全球的C#开发者们, 着实的送上了一分惊喜. 微软正式开源Blazor &#xff0c;将.NET带回到浏览器.这个小惊喜, 迅速的在dotnet开发者中间传开了. 而就在昨天(2018年3月22日) Blazor发布了它的第一次Release. Blazor到底是个什么样的东…

博客文章列表(二)——算法、数据结构、数据库、ABCD

七、编程基础 数据结构 详情列表 算法 详情列表 算法.排序 详情列表 算法.加密 详情列…

A*B NTT快速数论变换

wmq的AB Problem 发布时间: 2017年4月9日 17:06 最后更新: 2017年4月9日 17:07 时间限制: 3000ms 内存限制: 512M 描述 这是一个非常简单的问题。 wmq如今开始学习乘法了&#xff01;他为了训练自己的乘法计算能力&#xff0c;写出了n个整数&#xff0c;并且对每两个数a,…

51nod-猴猴吃苹果【线段树】

正题 题目链接:https://www.51nod.com/Contest/ProblemList.html#contestId188&randomCode291765 题目大意 nnn个点的一棵树&#xff0c;从kkk节点出发&#xff0c;每次走到最远的一个节点(路上点最多,如果有多个就编号最小的)并将路上的点权变为0&#xff0c;求会依次到达…

北方大学 ACM 多校训练赛 第十五场 蜘蛛牌A

题目描述 XCX最近迷上了玩蜘蛛牌。蜘蛛牌是windowsxp操作系统自带的一款纸牌游戏&#xff0c;游戏规则是这样的&#xff1a;只能将牌拖到比它大一的牌上面&#xff08;A最小&#xff0c;K最大&#xff09;&#xff0c;如果拖动的牌上有按顺序排好的牌时&#xff0c;那么这些牌也…

dotnet watch+vs code提升asp.net core开发效率

在园子中&#xff0c;已经又前辈介绍过dotnet watch的用法&#xff0c;但是是基于asp.net core 1.0的较老版本来讲解的&#xff0c;在asp.net core 2.0的今天&#xff0c;部分用法已经不太一样&#xff0c;所以就再写一篇文章来介绍dotnet watch vs code来提升asp.net core开发…

51nod-猴猴吃香蕉【dp】

正题 题目链接:https://www.51nod.com/Contest/Problem.html#contestProblemId1149 题目大意 nnn个数&#xff0c;求有多少种选择方案使选择的数乘机为kkk。 解题思路 显然kkk的质因数最多只有999个&#xff0c;我们将质因数进行dpdpdp。若选择的数的质因数刚好是kkk的质因数…