题意:现在有函数,每一项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题)的更多相关文章

  1. Gym 100851G Generators (vector+鸽笼原理)

    Problem G. Generators Input file: generators.in Output file: generators.outLittle Roman is studying li ...

  2. (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题)

    layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题) author: " ...

  3. ACM: Gym 101047B Renzo and the palindromic decoration - 手速题

     Gym 101047B  Renzo and the palindromic decoration Time Limit:2000MS     Memory Limit:65536KB     64 ...

  4. 常让人误解的一道js小题

    一道小题引发的深思 今天无意中看到一个js笔试题,不由得想起初学js那会被各种题目狂虐的心酸,虽说现在也会被笔试题所虐,但毕竟比之前好了很多,下面就是我的个人理解,欢迎拍砖.指正: var x = 1 ...

  5. 牛客练习赛38 E 出题人的数组 2018ccpc桂林A题 贪心

    https://ac.nowcoder.com/acm/contest/358/E 题意: 出题人有两个数组,A,B,请你把两个数组归并起来使得cost=∑i∗ci 最小,归并要求原数组的数的顺序在新 ...

  6. Gym 100548A Built with Qinghuai and Ari Factor (水题)

    题意:给定 n 个数,问是不是全是3的倍数. 析:略. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") ...

  7. 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 ...

  8. K-query SPOJ - KQUERY 离线 线段树/树状数组 区间大于K的个数

    题意: 给一个数列,一些询问,问你区间$[l.r]$大于$K$的个数 题解: 又一个"人尽皆知傻逼题"? 我们用一个01序列表示当前询问时,该位置的数字是否对答案有贡献, 显然,对 ...

  9. HDU 3333 Turing Tree 离线 线段树/树状数组 区间求和单点修改

    题意: 给一个数列,一些询问,问你$[l,r]$之间不同的数字之和 题解: 11年多校的题,现在属于"人尽皆知傻逼题" 核心思想在于: 对于一个询问$[x,R]$ 无论$x$是什么 ...

随机推荐

  1. Ant自己主动编译打包&amp;公布 android项目

    Eclipse用起来尽管方便,可是编译打包android项目还是比較慢,尤其将应用打包公布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自己主动编译打包了 ...

  2. 从零开始写一个Exporter

    前言 上一篇文章中已经给大家整体的介绍了开源监控系统Prometheus,其中Exporter作为整个系统的Agent端,通过HTTP接口暴露需要监控的数据.那么如何将用户指标通过Exporter的形 ...

  3. BestCoder Round #63 (div.2)

    感觉有些无聊的比赛. A 暴力枚举下就行 B 简单的dp,但是wa了一发后就去先把C做了,然后发现如果输入的100个数,是如1,2,3,4,...,100,然后k=50,个数为c(100,50).果断 ...

  4. Leftmost Digit(hdu1060)(数学题)

    Leftmost Digit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  5. iOS与JS开发交互总结

    hybrid.jpg 前言 Web 页面中的 JS 与 iOS Native 如何交互是每个 iOS 猿必须掌握的技能.而说到 Native 与 JS 交互,就不得不提一嘴 Hybrid. Hybri ...

  6. Java注释Override、Deprecated、SuppressWarnings

    在J2SE5.0的java.lang包中预定义了三个注释:Override.Deprecated和SuppressWarnings Override 这个注释的作用是标识某一个方法是否覆盖了它的父类的 ...

  7. 关于matlab曲线拟合的问题

    matlab 曲线拟合工具箱,app->curve fitting 可以使用generate直接产生代码,生成的是函数 该函数直接返回的结果为cfit格式,直接读取不了,网上有网友说可以采用y ...

  8. onActivityResult方法不执行,什么原因?

    原因: public void OnOpenPlayersActivity(View view) {  Intent intent = new Intent();  intent.setClass(g ...

  9. CenterFactory

    <?php /* 实例3 */ /* 抽象工厂 */ //青铜会员的打折商品 class BronzeRebateCommodity { //描述 public $desc = '青铜会员的打折 ...

  10. 数据库抽象层PDO

    通过数据库抽象层PDO可以访问多个数据库 //数据库抽象层PDO //造DSN:驱动名:dbname=数据库名:host=服务器地址 $dsn = "mysql:dbname=mydb;ho ...