A . 问一组数能否全部被3整除

K. S1 = A, S2 = B, Si = |Si-1  -  Si-2|; 一直循环问, 出现了多少不同的数;

多模拟几组数, 可以发现和辗转相除法有很大关系

#include<bits/stdc++.h>

using namespace std;
#define ll long long ll gcd(ll a, ll b)
{
ll cnt = ; // 一开始写的是 int wa 了很多次, 难受
if(b == )return ;
cnt += a/b;
cnt += gcd(b, a%b);
return cnt; } int main()
{
int T;
cin >> T;
int j = ;
while(j++ < T)
{
ll a,b;
cin >> a >> b;
ll ans ;
if(a==&&b==) {ans = ;printf("Case #%d: %lld\n",j,ans);continue;}
if((a==&&b!=)||(a!=&&b==)) {ans = ;printf("Case #%d: %lld\n",j,ans);continue;}
if(a < b) swap(a, b);
ans = gcd(a,b);
printf("Case #%d: %lld\n",j, ans);
}
}

F. 给你n朵花, m种颜色, 给花染色,要求正好用到K种颜色,并且相邻的花不能是相同的颜色

写的很详细 : https://blog.csdn.net/qingshui23/article/details/51125323

首先从m种颜色种选取k种颜色的方案为C(m,k),对于不超过的k种颜色的方案数很好求,为k*(k - 1)^(n - 1),第一个物品有k种选择,之后的n-1个物品因为不能和前

面的相同,故都只有n-1种可能,但是题目要求的是恰好为k种的方案数,因此要容斥一下,容斥可以这样理解,假设不超过i种的方案数为F[i],那么其中包括了不超

过i-1种的,不超过i-1种的里面又包含了不超过i-2种的,以此类推得到ans = F[k] - (F[k - 1] - (F[k - 2] - (... - (F[3] - F[2])))) = F[k] - F[k - 1] + F[k - 2] - ... + (-1)^(k - i)F[i]

因此最后答案为C(m,k)(Σ(-1)^(k - i)F[i]),其中F[i] = C(k,i)i*(i-1)^(n-1)

#include<bits/stdc++.h>
#define ull unsigned long long
#define ll long long
const int mod =;
using namespace std;
const int maxn=1e6+; int t;
ll n,m,k;
ll exgcd(ll a,ll b,ll &x,ll &y)
{
if(b==)
{
x=,y=;
return a;
}
else
{
ll q=exgcd(b,a%b,y,x);
y=y-x*(a/b);
return q;
}
}
ll niyuan(ll a,ll n)//逆元
{
ll x,y;
ll d=exgcd(a,n,x,y);
if(d==)
return (x%n+n)%n;
else
return -;
}
ll qmod(ll n,ll m,ll mod)//快速幂
{
ll ans=;
while(m)
{
if(m&)ans=(ans*n)%mod;
n=(n*n)%mod;
m>>=;
}
return ans%mod;
}
ll cm[maxn],ck[maxn],inv[maxn];
void get_inv()//打表
{
for(int i=;i<maxn;i++)
inv[i]=niyuan(i,mod);
}
void init()//打表
{
cm[]=,ck[]=;
for(int i=;i<=k;i++)
{
cm[i]=((cm[i-]%mod*(m-i+)%mod)*inv[i])%mod;
ck[i]=((ck[i-]%mod*(k-i+)%mod)*inv[i])%mod;
}
}
int main()
{ get_inv();
scanf("%d",&t);
int ca=;
while(t--)
{
scanf("%lld%lld%lld",&n,&m,&k);
init();
ll ret;
ll ans=;
for(ll i=k; i>=; i--)
{
if((k-i)%)
ret=-;
else
ret=;
ans=(ans+ret*i%mod*ck[i]%mod*qmod(i-,n-,mod)%mod+mod)%mod;
//二项式反演 }
ans=(ans*cm[k])%mod; printf("Case #%d: %lld\n",ca++,ans); }
}

2014年西安区域赛的几道水题(A. F. K)的更多相关文章

  1. 2017西安区域赛A / UVALive - 8512 线段树维护线性基合并

    题意:给定\(a[1...n]\),\(Q\)次询问求\(A[L...R]\)的异或组合再或上\(K\)的最大值 本题是2017的西安区域赛A题,了解线性基之后你会发现这根本就是套路题.. 只要用线段 ...

  2. 【转】POJ百道水题列表

    以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...

  3. 2014年亚洲区域赛北京赛区现场赛A,D,H,I,K题解(hdu5112,5115,5119,5220,5122)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 下午在HDU上打了一下今年北京区域赛的重现,过了5题,看来单挑只能拿拿铜牌,呜呜. ...

  4. hdu 5078 Osu! (2014 acm 亚洲区域赛鞍山 I)

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5078 Osu! Time Limit: 2000/1000 MS (Java/Others)     ...

  5. zoj 3829 Known Notation(2014在牡丹江区域赛k称号)

    Known Notation Time Limit: 2 Seconds      Memory Limit: 131072 KB Do you know reverse Polish notatio ...

  6. UVALive 8519 Arrangement for Contests 2017西安区域赛H 贪心+线段树优化

    题意 等价于给一个数列,每次对一个长度为$K$的连续区间减一 为最多操作多少次 题解: 看样例猜的贪心,10分钟敲了个线段树就交了... 从1开始,找$[i,i+K]$区间的最小值,然后区间减去最小值 ...

  7. UVALive 8513 lovers 2017 西安区域赛 B 贪心+multiset

    UVALive 8513 有2种人,每个人有自己的权值$A_i$ $B_i$ 当$A_i + B_i >=K$时 两个人可以配对 问最多多少人可以配对 解法 : 把$/{ A_i /}$ 排序 ...

  8. 14西安区域赛C - The Problem Needs 3D Arrays

    最大密度子图裸题,详情请见胡博涛论文: https://wenku.baidu.com/view/986baf00b52acfc789ebc9a9.html 不加当前弧优化t到死= = //#prag ...

  9. 2017 ICPC西安区域赛 A - XOR (线段树并线性基)

    链接:https://nanti.jisuanke.com/t/A1607 题面:   Consider an array AA with n elements . Each of its eleme ...

随机推荐

  1. Manual Validation with Data Annotations C#对实体类进行手动验证

    Several people have asked me about using data annotations for validation outside of a UI framework, ...

  2. 认识 SSH 密钥对

    SSH 密钥对是阿里云为您提供的新的远程登录 ECS 实例的认证方式. 相较于传统的用户名和密码认证方式,SSH 密钥对有以下特点: 仅适用于 Linux 实例: SSH 密钥对登录认证更为安全可靠: ...

  3. MTK NTP和NITZ更新时间的问题

    NITZ(Network Identity and Time Zone,网络标识和时区),是一种用于自动配置本地的时间和日期的机制,同时也通过无线网向移动设备提供运营商信息.NITZ是自从PHASE ...

  4. Mysql Window 解压版卸载

    windows如何彻底卸载mysql 如何彻底删除mysql 1.首先在windows服务中将mysql服务删掉,使用命令 sc delete mysql 2.在控制面板中卸载掉mysql. 3.清理 ...

  5. Spark SQL configuration

    # export by: spark.sql("SET -v").show(n=200, truncate=False) key value meaning spark.sql.a ...

  6. Fiddler 会话查找功能

    如下,会话列表中有很多会话,我们如果想要找到想要的会话,可以通过通过快捷键 Ctrl + F 进行查找

  7. StringUtils 工具类的常用方法(转载)

    http://guobin6125.iteye.com/blog/1535792

  8. JS 一张图理解prototype、proto和constructor的关系

    转载于原文地址:https://www.cnblogs.com/xiaohuochai/p/5721552.html(感谢大神的总结) 前面的话 javascript里的关系又多又乱.作用域链是一种单 ...

  9. sqlserver等软件下载

    http://msdn.itellyou.cn/ 找到所需要的,复制下载路径,到迅雷下载

  10. thinkcmf 忘记后台登陆密码的解决办法

    thinkcmf 忘记密码 或者 密码错误 如何修改后台登陆密码? 直接在后台登陆控制器里输入 dump(cmf_password('123456')); 参考文件路径 app\admin\contr ...