Gym - 100851G:Generators(人尽皆知但是WA题)
题意:现在有函数,每一项Xi=(A*X(i-1)+B)%C。现在给定N个函数以及K:X0,A,B,C。然你再每个函数选择一个数,使得其和最大,而且不被K整除。
X0,A,B,C<=1e3 ;K<=1e9
思路:因为C比较小,我们可以找到循环节(不一定是从0开始就循环了,所以用vis判定是否出现过)。然后保存每个函数的最大值,以及不同余的第二大值。
如果所有数的最大值不被K整除,那么最多有一个数被第二大替代
(一个简单题我居然wa了几发,所以还是写一下。
#include<bits/stdc++.h>
#define pii pair<int,int>
#define F first
#define S second
#define mp make_pair
using namespace std;
const int maxn=;
pii Mx[maxn][]; int pos[maxn];
int a[maxn],vis[maxn];
int main()
{
freopen("generators.in","r",stdin);
freopen("generators.out","w",stdout);
int N,K,i,j,x,A,B,C,ans=,tmp,L;
scanf("%d%d",&N,&K);
for(i=;i<=N;i++){
scanf("%d",&a[]); Mx[i][]=mp(a[],);
scanf("%d%d%d",&A,&B,&C);
vis[a[]]=; L=;
for(j=;;j++){
a[j]=(a[j-]*A+B)%C;
if(vis[a[j]]) break;
if(a[j]>Mx[i][].F) Mx[i][]=mp(a[j],j);
vis[a[j]]=; L++;
}
Mx[i][]=mp(-,-);
for(j=;j<=L;j++)
if(a[j]%K!=Mx[i][].F%K&&a[j]>Mx[i][].F) Mx[i][]=mp(a[j],j);
for(j=;j<=L;j++) vis[a[j]]=;
}
for(i=;i<=N;i++) ans+=Mx[i][].F;
for(i=;i<=N;i++) pos[i]=Mx[i][].S;
if(ans%K!=) printf("%d\n",ans);
else {
int change=,sum=-;
for(i=;i<=N;i++){
if(Mx[i][].F!=-){
if(ans-Mx[i][].F+Mx[i][].F>sum) sum=ans-Mx[i][].F+Mx[i][].F,change=i;
}
}
if(sum==-||sum%K==) { puts("-1"); return ; }
printf("%d\n",sum);
pos[change]=Mx[change][].S;
}
for(i=;i<=N;i++) printf("%d ",pos[i]);
return ;
}
Gym - 100851G:Generators(人尽皆知但是WA题)的更多相关文章
- Gym 100851G Generators (vector+鸽笼原理)
Problem G. Generators Input file: generators.in Output file: generators.outLittle Roman is studying li ...
- (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题)
layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题) author: " ...
- ACM: Gym 101047B Renzo and the palindromic decoration - 手速题
Gym 101047B Renzo and the palindromic decoration Time Limit:2000MS Memory Limit:65536KB 64 ...
- 常让人误解的一道js小题
一道小题引发的深思 今天无意中看到一个js笔试题,不由得想起初学js那会被各种题目狂虐的心酸,虽说现在也会被笔试题所虐,但毕竟比之前好了很多,下面就是我的个人理解,欢迎拍砖.指正: var x = 1 ...
- 牛客练习赛38 E 出题人的数组 2018ccpc桂林A题 贪心
https://ac.nowcoder.com/acm/contest/358/E 题意: 出题人有两个数组,A,B,请你把两个数组归并起来使得cost=∑i∗ci 最小,归并要求原数组的数的顺序在新 ...
- Gym 100548A Built with Qinghuai and Ari Factor (水题)
题意:给定 n 个数,问是不是全是3的倍数. 析:略. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") ...
- Gym - 101670H Go Northwest!(CTU Open Contest 2017 思维题+map)
题目: Go Northwest! is a game usually played in the park main hall when occasional rainy weather disco ...
- K-query SPOJ - KQUERY 离线 线段树/树状数组 区间大于K的个数
题意: 给一个数列,一些询问,问你区间$[l.r]$大于$K$的个数 题解: 又一个"人尽皆知傻逼题"? 我们用一个01序列表示当前询问时,该位置的数字是否对答案有贡献, 显然,对 ...
- HDU 3333 Turing Tree 离线 线段树/树状数组 区间求和单点修改
题意: 给一个数列,一些询问,问你$[l,r]$之间不同的数字之和 题解: 11年多校的题,现在属于"人尽皆知傻逼题" 核心思想在于: 对于一个询问$[x,R]$ 无论$x$是什么 ...
随机推荐
- python 基础 9.4 游标
一. 游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果. 用户可以用SQL 语句逐一从游标中获取记录,并赋值给主变量,交由python 进一步处理,一组主变量一次只能存放一条 ...
- JS 创建对象(常见的几种方法)
贴个代码先: function O(user,pwd){ //use constructor this.user=user; this.pwd=pwd; this.get=get; return th ...
- 快捷标签和ajax、json返回数据
<if 判断条件>标签</if><import>标签可以链接外部的样式表,和js<import file="js.util.Array" ...
- debian切换sh shell到bash shell
1 安装dpkg-reconfigure命令 切换到root账户即可. 2 dpkg-reconfigure dash 选择no
- 8.Django模型类例子
这里定义4个模型 作者:一个作者有姓名 作者详情:包括性别,email,出生日期, 出版商:名称,地址,城市,省,国家,网站 书籍:名称,日期 分析: 作者详情和作者一对一的关系 一本书可以有多个作者 ...
- 如何在ubuntun中安装intellij idea 2018并破解
相比eclipse软件,intellij idea的操作更方便.功能更多,几乎集成了所有的java框架. 安装步骤如下: 1 在https://www.jetbrains.com/idea/网站上下载 ...
- 如何禁止eclipse对js文件的校验(building validate)
在项目(project)上点击右键,依次选择1.Select Properties -> JavaScript -> Include Path2.Select Source tab. ( ...
- HTML 5 本地存储
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- Data Structure Binary Tree: Lowest Common Ancestor in a Binary Tree
http://www.geeksforgeeks.org/lowest-common-ancestor-binary-tree-set-1/ #include <iostream> #in ...
- 0522 HTML表单 CSS基础
一.列表标签 列表标签分为三种. 1.无序列表<ul>,无序列表中的每一项是<li> 英文单词解释如下: ul:unordered list,“无序列表”的意思. li:lis ...