Code FeatUVA - 11754

题意:给出c个彼此互质的xi,对于每个xi,给出ki个yj,问前s个ans满足ans%xi的结果在yj中有出现过。

一看便是个中国剩余定理,但是同余方程组就有ki的乘积种组合,而ki的乘积最大是1e18,直接中国剩余定理肯定不是的,只能对ki的乘积稍微小的时候才能使用。

而当ki的乘积很大时,便说明对于每个xi它的yj都很多,那么我们挑选其中一组xi,设ans=temp*xi+yj,temp不需要枚举到很大便能满足其他的%xi=yj,

至于那组xi的选择,因为我们是要枚举得更快,所有便是yj尽可能的多,xi尽可能的大,也就是ki/xi最小。

最后注意输出格式上,空行的输出。

 #include<cstdio>
#include<set>
using namespace std;
typedef long long ll;
const int N=;
int n,m;
ll bb[N],cc[N],cp;
set<ll> ss[N];
ll exgcd(ll a,ll b, ll &x,ll &y){
if(!b){
x=;
y=;
return a;
}
ll g=exgcd(b,a%b,y,x);
y-=a/b*x;
return g;
}
ll inv(ll a,ll c){
ll g,x,y;
g=exgcd(a,c,x,y);
return g== ? (x%c+c)%c : -;
}
ll crt(){
ll ans=,temp;
for(int i=;i<n;i++){
temp=cp/cc[i];
ans+=bb[i]*temp*inv(temp,cc[i]);
if(ans>=cp) ans%=cp;
}
ans=(ans+cp)%cp;
if(!ans) ans+=cp;
return ans;
}
void dfs(int x){
if(x==n){
ss[n].insert(crt());
return ;
}
for(set<ll>::iterator it=ss[x].begin();it!=ss[x].end();it++){
bb[x]=*it;
dfs(x+);
}
}
void solve1(){
cp=;
for(int i=;i<n;i++) cp*=cc[i];
ss[n].clear();
dfs();
ll temp=,ans;
while(m){
for(set<ll>::iterator it=ss[n].begin();it!=ss[n].end();it++){
ans=(*it)+temp*cp;
printf("%lld\n",ans);
m--;
if(!m) break;
}
temp++;
}
}
void solve2(int p){
ll temp=,ans;
while(m){
for(set<ll>::iterator it=ss[p].begin();it!=ss[p].end();it++){
ans=temp*cc[p]+(*it);
if(!ans) continue;
bool flag=true;
for(int i=;i<n;i++){
if(i==p) continue;
if(ss[i].find(ans%cc[i])==ss[i].end()){
flag=false;
break;
}
}
if(flag){
printf("%lld\n",ans);
m--;
}
if(!m) break;
}
temp++;
}
}
int main(){
int k,p;
ll ji,x;
int t=;
while(~scanf("%d%d",&n,&m)){
if(t) printf("\n");
t=;
p=-;ji=;
for(int i=;i<n;i++){
ss[i].clear();
scanf("%lld",&cc[i]);
scanf("%d",&k);
ji*=k;
if(p==-||k*cc[p]<(int)ss[p].size()*cc[i]) p=i;
while(k--){
scanf("%lld",&x);
ss[i].insert(x);
}
}
if(ji<=) solve1();
else solve2(p);
}
return ;
}

巧妙的分类解决

UVA 11754 Code Feat 中国剩余定理+枚举的更多相关文章

  1. UVA 11754 Code Feat 中国剩余定理+暴力

    lrj白书例题,真好 #include <stdio.h> #include <iostream> #include <vector> #include <m ...

  2. UVA 11754 - Code Feat(数论)

    UVA 11754 - Code Feat 题目链接 题意:给定一个c个x, y1,y2,y3..yk形式,前s小的答案满足s % x在集合y1, y2, y3 ... yk中 思路:LRJ大白例题, ...

  3. UVA 11754 Code Feat (枚举,中国剩余定理)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud C Code Feat   The government hackers at C ...

  4. uva 11754 Code Feat (中国剩余定理)

    UVA 11754 一道中国剩余定理加上搜索的题目.分两种情况来考虑,当组合总数比较大的时候,就选择枚举的方式,组合总数的时候比较小时就选择搜索然后用中国剩余定理求出得数. 代码如下: #includ ...

  5. Uva 11754 Code Feat

    题意概述: 有一个正整数$N$满足$C$个条件,每个条件都形如“它除以$X$的余数在集合$\{Y_1, Y_2, ..., Y_k\}$中”,所有条件中的$X$两两互质, 你的任务是找出最小的S个解. ...

  6. UVA - 11754 Code Feat (分块+中国剩余定理)

    对于一个正整数N,给出C组限制条件,每组限制条件为N%X[i]∈{Y1,Y2,Y3,...,Yk[i]},求满足条件的前S小的N. 这道题很容易想到用中国剩余定理,然后用求第k小集合的方法输出答案.但 ...

  7. UVa 11754 (中国剩余定理 枚举) Code Feat

    如果直接枚举的话,枚举量为k1 * k2 *...* kc 根据枚举量的不同,有两种解法. 枚举量不是太大的话,比如不超过1e4,可以枚举每个集合中的余数Yi,然后用中国剩余定理求解.解的个数不够S个 ...

  8. UVA 11754 (暴力+中国剩余定理)

    题目链接: http://www.bnuoj.com/v3/problem_show.php?pid=20172 题目大意:有C个模方程,每个方程可能有k余数,求最小的S个解. 解题思路: 看见模方程 ...

  9. UVA11754 - Code Feat

    Hooray!  Agent Bauer has shot the terrorists, blown upthe bad guy base, saved the hostages, exposed ...

随机推荐

  1. RabbitMq的环境安装

    1.如图第一个是erlang语言的安装包,第二个是rabbitmq的安装包. 2.配置erlang语言环境,因为rabbitmq由erlang语言编写的,所以需要配置erlng语言环境. erlang ...

  2. JavaScript_day01

    1.变量声明 怎么声明变量? JavaScript中变量声明用的关键字是 var 变量名称. 变量名称命名有什么限制? 变量名称命名需规范,准则:不能以数字开头,不能含有特殊字符(css的属性),可以 ...

  3. 7.Redis的发布订阅

    Redis消息的订阅/发布 a)是什么 进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. b)命令 SUBSCRIBE订阅 PUBLISH发布 c)案例 先订阅后发布后才 ...

  4. Pose Estimation

    Human Pose Estimation for Real-World Crowded Scenarios https://arxiv.org/pdf/1907.06922.pdf CrowdPos ...

  5. Dell T30解决报Alert! Cover was previously removed.

    DELL T30自检中卡在F1/F2/F5选项,需要F1手动启动时报:Alert! Cover was previously removed是指向机器盖问题 [解决方法]: 1.检查机箱盖是否有盖紧 ...

  6. Python3+Appium学习笔记06-noReset参数

    百度很多文章说noReset这个参数是用来防止重复安装app的.可能这是以前的用法.目前最新版本appium默认是清除session信息,并且不会删除应用的. ​ noReset这个参数,根据appi ...

  7. css实现背景全透明样式

    background-color:transparent; filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFF ...

  8. linux上构建ftp服务器

    linux上构建ftp服务器 服务器搭建 https://help.aliyun.com/knowledge_detail/60152.html,可以参考这篇博文. 配置文件详解 进入/etc/vsf ...

  9. JAVA遇见HTML——JSP篇(JSP内置对象上)

    action:表单交给哪个动作去处理 MIME类型: 浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理文档:因此服务器设置正确以将正确的MIME类型附加到响应对象的头部是非常重要的. 语法 ...

  10. windows下mysql5.6.x的日志正确配置方法(my.ini) (网上的都是5.6之前的版本)

    https://blog.csdn.net/databatman/article/details/49951853 感谢楼主,找了好久,试了一下楼主的,果然是对的,网上的日志配置都是5.6之前的版本: ...