Colin's blog

A football fan,an English lover and a coder


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

qwb与学姐

发表于 2017-06-10   |   分类于 acm
原题:qwb与学姐 原题大意qwb打算向学姐表白,可是学姐已经受够了他的骚扰,于是出了一个题想难住他:已知一幅n个点m条边的无向图,定义 路径的值为这条路径上最短的边的长度,现在有k个询问,询问从A点到B点的所有路径的值的最大值。 算法分析题目意思是查询图上两点的瓶颈路大小,这个训练指南上有讲解。先是求最大生成树,然后求树上两点路径的最小值,用LCA倍增法就可以了。 http://blog.csdn.net/Janis_z/article/details/52937631?locationNum=6&fps=1 程序代码template <class T> inline void umin(T &a,T b){a=min(a,b);} template <class T> inline void umax(T &a,T b){a=max(a,b);} const int N=50005; struct Bian{ int u; int v; int w; }; int p[N],ra[N]; Bi ...
阅读全文 »

qwb和李主席

发表于 2017-06-10   |   分类于 acm
原题:qwb和李主席 原题大意qwb和李主席打算平分一堆宝藏,他们想确保分配公平,可惜他们都太懒了,你能帮助他们嘛? 输入包含多组测试数据,处理到文件结束。每组测试数据的第一行是一个正整数N(0 <= N <=36 )表示物品的总个数。接下来输入N个浮点数(最多精确到分),表示每个物品的价值V(0<V<=1e9)。 对于每组测试数据,输出能够使qwb和李主席各自所得到的物品的总价值之差的最小值(精确到分),每组测试数据输出占一行。 算法分析折半搜索+二分查找,注意可能会因为浮点数误差导致WA,解决方法是一开始*200化成LL, 程序代码#include <bits/stdc++.h> typedef long long ll; using namespace std; const int maxn = 40; ll N[maxn], a[maxn], b[maxn], sum1[1<<20], all_cost; int n, na, nb; int main() { while(~scanf("%d", &a ...
阅读全文 »

勤劳的ACgirls

发表于 2017-06-10   |   分类于 acm
原题:勤劳的ACgirls 原题大意zjc的ACgirls队的队员最近比较忙,为了能够取得更好的比赛成绩,他们制定了一个m天a掉n题的计划,a掉一题可以是这m天的任何时候。为了表示对acmer事业的热爱,队长wc要求每天必须至少要ac掉k题,这m天每天ac掉的题数可以用一个m元组表示。设不同的m元组一共有c个,请问c的末尾有多少个0?(如果c是0,输出0) 算法分析用隔板法算出答案是C(n+(1-k)*m-1,m-1),然后算出因子5和因子2的个数,取小的那个 程序代码#include <bits/stdc++.h> using namespace std; typedef long long ll; ll m, n, k; int main(){ while(scanf("%lld%lld%lld", &m, &n, &k) != EOF){ ll x = m - 1; ll y = (n - m * k) + m - 1; ll ans = 0; if(x ...
阅读全文 »

qwb与支教

发表于 2017-06-10   |   分类于 acm
原题:qwb与支教 原题大意qwb同时也是是之江学院的志愿者,暑期要前往周边地区支教,为了提高小学生的数学水平。她把小学生排成一排,从左至右从1开始依次往上报数。 玩完一轮后,他发现这个游戏太简单了。于是他选了3个不同的数x,y,z;从1依次往上开始报数,遇到x的倍数、y的倍数或z的倍数就跳过。如果x=2,y=3,z=5;第一名小学生报1,第2名得跳过2、3、4、5、6,报7;第3名得跳过8、9、10,报11。 那么问题来了,请你来计算,第N名学生报的数字是多少? 算法分析二分+容斥原理,详见代码 程序代码#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll mod = 1e9+7; ll x, y, z, n; ll gcd(ll a, ll b){ return b == 0?a:gcd(b, a%b); } ll lcm(ll a, ll b){ return a*b/gcd(a,b); } ll check(ll w){ return w/x+ ...
阅读全文 »

qwb has a lot of Coins

发表于 2017-06-10   |   分类于 acm
原题:qwb has a lot of Coins 原题大意qwb有很多硬币,他把这些硬币分成m堆,每堆有ni个硬币,比赛规则是这样的,参赛者有两个人,每次可以移走任意一堆的任意数量的硬币(大于等于1),两人交替移动,谁不能移动谁输。问对手先移动,如果qwb能赢则输出赢的方式有几种,否则输出0。 算法分析nim博弈 http://www.cnblogs.com/exponent/articles/2141477.html 程序代码#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll mod = 1e9+7; int n,a[1500]; int main(){ while(scanf("%d", &n) == 1){ int x = 0; for(int i = 0 ; i< n; i++) { scanf("%d", &a[i]) ...
阅读全文 »
1…8910…23
Shen Hao

Shen Hao

Colin's blog | acm |c++

114 日志
6 分类
71 标签
GitHub
© 2017 Shen Hao
由 Hexo 强力驱动
主题 - NexT.Muse