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. 阿里云ECS服务器无法上传文件的解决方案

    1.安装软件启动FTP服务 yum install vsftpd # 安装service vsftpd start # 启动服务chkconfig vsftpd on # 开机启动 2.防火墙ipta ...

  2. 聊聊IOCP,聊聊异步编程

    *:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...

  3. 让mysql 支持 emoji 表情

    1.数据库配置 [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] ch ...

  4. Qt编写视频监控画面分割界面(开源)

    其实qt应用在安防领域还是蛮多的,尤其是视频监控系统,但是网上几乎没有看到qt做的最基础的视频监控画面分割的demo,今天特意花几分钟提取出来,开源放出来.欢迎大家多多点赞!源码下载:点击打开链接 运 ...

  5. java基础编程

    java的类和常用编程模式还是要多练习,多手写java代码 return new String(filecontent, encoding); 看懂这个意思了吗?第一次见这个构造函数吧,而String ...

  6. geohash编码算法在LBS中的应用

    随着移动终端的普及,很多应用都基于LBS功能,附近的某某(餐馆.银行.妹纸等等). 基础数据中,一般保存了目标位置的经纬度:利用用户提供的经纬度,进行对比,从而获得是否在附近. 目标: 查找附近的某某 ...

  7. js 表达式与语句

    引子:表达式和语句很基础,但是有时会犯错,比如: function(){}//报错 (function(){})//不报错 function f(x){ return x + 1 }()//报错 fu ...

  8. oracle ORA-01991错误--重建密码文件问题

    问题现象描述: 统计服务器测试没问题,刚好上次配置系统的时候有点问题,故重装一次,配置好安全策略(最近在研究如何新配置一台服务器的时候,第一时间配置好相关的安全设置,有空再写下来). 为了省事,直接冷 ...

  9. linux 远程连接ssh提示IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY解决

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HA ...

  10. SQL特殊字符转义

    原文链接: SQL特殊字符转义 应 该说,您即使没有处理 HTML 或 JavaScript 的特殊字符,也不会带来灾难性的后果,但是如果不在动态构造 SQL 语句时对变量中特殊字符进行处理,将可能导 ...