2014年西安区域赛的几道水题(A. F. K)
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)的更多相关文章
- 2017西安区域赛A / UVALive - 8512 线段树维护线性基合并
题意:给定\(a[1...n]\),\(Q\)次询问求\(A[L...R]\)的异或组合再或上\(K\)的最大值 本题是2017的西安区域赛A题,了解线性基之后你会发现这根本就是套路题.. 只要用线段 ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- 2014年亚洲区域赛北京赛区现场赛A,D,H,I,K题解(hdu5112,5115,5119,5220,5122)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud 下午在HDU上打了一下今年北京区域赛的重现,过了5题,看来单挑只能拿拿铜牌,呜呜. ...
- hdu 5078 Osu! (2014 acm 亚洲区域赛鞍山 I)
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5078 Osu! Time Limit: 2000/1000 MS (Java/Others) ...
- zoj 3829 Known Notation(2014在牡丹江区域赛k称号)
Known Notation Time Limit: 2 Seconds Memory Limit: 131072 KB Do you know reverse Polish notatio ...
- UVALive 8519 Arrangement for Contests 2017西安区域赛H 贪心+线段树优化
题意 等价于给一个数列,每次对一个长度为$K$的连续区间减一 为最多操作多少次 题解: 看样例猜的贪心,10分钟敲了个线段树就交了... 从1开始,找$[i,i+K]$区间的最小值,然后区间减去最小值 ...
- UVALive 8513 lovers 2017 西安区域赛 B 贪心+multiset
UVALive 8513 有2种人,每个人有自己的权值$A_i$ $B_i$ 当$A_i + B_i >=K$时 两个人可以配对 问最多多少人可以配对 解法 : 把$/{ A_i /}$ 排序 ...
- 14西安区域赛C - The Problem Needs 3D Arrays
最大密度子图裸题,详情请见胡博涛论文: https://wenku.baidu.com/view/986baf00b52acfc789ebc9a9.html 不加当前弧优化t到死= = //#prag ...
- 2017 ICPC西安区域赛 A - XOR (线段树并线性基)
链接:https://nanti.jisuanke.com/t/A1607 题面: Consider an array AA with n elements . Each of its eleme ...
随机推荐
- YII2 使用phpexcel(干货)
参考:http://www.cnblogs.com/xiaocongjiejie/p/5106249.html http://www.cnblogs.com/xiaocongjiejie/p/5106 ...
- PHP 数组转XML 格式
function buildXml( $data, $wrap= 'xml' ){ $str = "<{$wrap}>"; if( is_array( $data ) ...
- 初识springcloud
springcloud的基础是springboot,简单地说,就是通过写的springboot应用,使用springcloud集成. 在学习springcloud的过程中,自己的开发环境不能保证和博客 ...
- python 中的 list dict 与 set 的关系
转自: http://www.cnblogs.com/soaringEveryday/p/5044007.html list arraylist 实现(数组) List 通过内置的 append()方 ...
- Ubuntu 安装 JDK8
安装python-software-properties $sudo apt-get install python-software-properties $sudo apt-get install ...
- 剑指offer——python【第34题】第一个只出现一次的字符
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写) 思路 遍历字符串,找到那个第 ...
- mui 普通新闻文字列表 图文新闻列表
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- vue2.0 源码解读(二)
小伞最近比较忙,阅读源码的速度越来越慢了 最近和朋友交流的时候,发现他们对于源码的目录结构都不是很清楚 红色圈子内是我们需要关心的地方 compiler 模板编译部分 core 核心实现部分 ent ...
- git链接到远程github上
Git链接到自己的Github(1)简单的开始 好长时间没上来弄东西了,今天回来先开始弄下Git,之后再继续写uboot与kernel的编译,在版本控制下更加宏观地观察每次的变化. 1.在ubuntu ...
- python全栈开发 * 19 面向对象 知识点汇总 * 180701
19 面向对象初识2 一.类的名称空间1.对象的名称空间对象的名称空间中有类对象指针,对象可以通过"类对象指针"找类中的"静态变量"(静态字段),也可以用对象找 ...