#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
#include<map>
#include<set>
#include<vector>
#include<cstdlib>
#include<string>
#define eps 0.000000001
typedef long long ll;
typedef unsigned long long LL;
using namespace std;
const int maxc=;
const int maxk=;
set<int>value[maxc];
int C,x[maxc],k[maxc];
int y[maxc][maxk];
int a[maxc];
ll exgcd(ll a,ll b,ll &xx,ll &yy){
if(b==){
xx=;yy=;return a;
}
ll r=exgcd(b,a%b,xx,yy);
ll t=yy;
yy=xx-(a/b)*yy;
xx=t;
return r;
}
ll CRT(int a[],int m[],int n){//ÖйúÊ£ÓඨÀí
ll M=;
ll ans=;
for(int i=;i<n;i++)M=M*m[i];
for(int i=;i<n;i++){
ll Mi=M/m[i];
ll xx,yy;
ll r=exgcd(Mi,(ll)m[i],xx,yy);
ans=(ans+xx*a[i]*Mi)%M;
}
if(ans<)ans=(ans+M)%M;
return ans;
}
void solve_enum(int S,int bc){
for(int c=;c<C;c++)
if(c!=bc){
value[c].clear();
for(int i=;i<k[c];i++)value[c].insert(y[c][i]); }
for(int t=;S!=;t++){
for(int i=;i<k[bc];i++)
{
ll n=(ll)x[bc]*t+y[bc][i];
if(n==)continue;
bool ok=true;
for(int c=;c<C;c++)if(c!=bc)
if(!value[c].count(n%x[c])){ok=false;break;}
if(ok){
printf("%lld\n",n);
if(--S==)break;
}
}
}
}
vector<ll>sol;
void dfs(int dep){
if(dep==C)sol.push_back(CRT(a,x,C));
else{
for(int i=;i<k[dep];i++){
a[dep]=y[dep][i];
dfs(dep+);
}
}
}
void solve_china(int S){
sol.clear();
dfs();
sort(sol.begin(),sol.end());
ll M=;
for(int i=;i<C;i++)M=M*x[i];
vector<ll>ans;
for(int i=;S!=;i++){
for(int j=;j<sol.size();j++){
ll n=M*i+sol[j];
if(n>){
printf("%lld\n",n);
if(--S==)break;
}
}
}
}
int main(){
int S;
while(scanf("%d%d",&C,&S)!=EOF){
if(C==&&S==)break;
ll tot=;
int bestc=;
for(int c=;c<C;c++){
scanf("%d%d",&x[c],&k[c]);
tot=tot*k[c];
for(int i=;i<k[c];i++)scanf("%d",&y[c][i]);
sort(y[c],y[c]+k[c]);
if(k[c]*x[bestc]<k[bestc]*x[c])bestc=c;
}
if(tot>)solve_enum(S,bestc);
else{
// cout<<1<<endl;
solve_china(S);
}
cout<<endl;
}
}

Uva 11754(枚举+中国剩余定理)的更多相关文章

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

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

  2. UVA 11754 Code Feat 中国剩余定理+枚举

    Code FeatUVA - 11754 题意:给出c个彼此互质的xi,对于每个xi,给出ki个yj,问前s个ans满足ans%xi的结果在yj中有出现过. 一看便是个中国剩余定理,但是同余方程组就有 ...

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

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

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

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

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

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

  6. UVA 11754 - Code Feat(数论)

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

  7. ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)

    二进制枚举+容斥原理+中国剩余定理 #include<iostream> #include<cstring> #include<cstdio> #include&l ...

  8. Uva 11754 Code Feat

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

  9. POJ 1006 Biorhythms (中国剩余定理)

    在POJ上有译文(原文右上角),选择语言:简体中文 求解同余方程组:x=ai(mod mi) i=1~r, m1,m2,...,mr互质利用中国剩余定理令M=m1*m2*...*mr,Mi=M/mi因 ...

随机推荐

  1. Redis学习笔记(五)- 数据类型之set类型

    Redis 的set是string类型的无序集合.set元素最大可以包含(2的32次方-1)个元素.set的是通过hash table实现的,所以添加,删除,查找的复杂度都是O(1).hash tab ...

  2. 虚拟机+linux+大杂烩

    出于项目需要,需要用到linux系统.这玩意儿平时很少用,要说体验度还是windows更人性化一些. 1.虚拟机的安装,这个没说的,百度VMware直接下最新版安装就好. 2.接着是linux系统的安 ...

  3. 来源页面地址 上一页面url

    Uri uri = Request.UrlReferrer;

  4. HDU_1517_博弈(巧妙规律)

    A Multiplication Game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Ot ...

  5. 很实用的html meta标签实现页面跳转

    就算你是有很多年开发经验的web开发工程师,有着很多web开发经验,对于先进的web开发技术有着很深刻的研究,然而你却忽略了那些最最基础的东西!现在我来问你,你是否对html所有的标签都能熟练的使用呢 ...

  6. RecyclerView 悬浮/粘性头部效果3种方式

    但是以上两种方式onDrawOver()方法实现逻辑对初次查看该段代码要花时间理解.下面代码逻辑(原理一样,同样参考大神代码)相对清晰,易理解 public class StickyDecoratio ...

  7. charles修改下行参数

    1.charles抓包修改下行参数: 想要修改的手机展示展示信息页: 2.charle设置断点,在请求接口上一个上设置断点 菜单proxy->Breadkpoints Settings设置打开断 ...

  8. 【Leetcode】【简单】【14最长公共前缀】【JavaScript】

    题目 14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",& ...

  9. 洛谷P1002 过河卒【dp】

    棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为"马拦过河卒 ...

  10. idea整合eclipse后快捷键