usaco
zhhx2001
这个作者很懒,什么都没留下…
展开
-
usaco隐藏口令
过几天一定要学后缀数组,题解上说可以用后缀数组解决这里用,最小表示法,也算是一个模版了吧!usaco 隐藏口令有时候程序员有很奇怪的方法来隐藏他们的口令。Billy"Hacker"Geits会选择一个字符串S(由L个小写字母组成,5第一个字母所在的位置是0如字符串alabala,按操作得到7个字符串,排序后得:aalabal abalaal alaalab alabala balaala la原创 2016-04-25 22:37:09 · 626 阅读 · 0 评论 -
uscao母亲的牛奶 dfs记忆化搜索
母亲的牛奶农民约翰有三个容量分别是 A,B,C 升的桶,A,B,C 分别是三个从 1 到 20 的整数,最初,A 和 B 桶都是空的,而 C 桶是装满牛奶的.有时,约翰把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原桶空了.当然每一次灌注都是完全的.由于节约,牛奶不会有丢失.#include#include#include#include#include#i原创 2016-04-28 20:45:17 · 466 阅读 · 0 评论 -
第k短路径的学习,及A*算法的初步认识,以及usaco牛跑步,k短路径
http://www.cnblogs.com/technology/archive/2011/05/26/2058842.html把整个过程抽象来看就是这样的:这是在有障碍的二维平面的最短的A*算法思路好像关键在于启发式函数把起始格添加到 "开启列表" do { 寻找开启列表中F值最低的格子, 我们称它为当前格. 把它切换到关闭列表.原创 2016-04-30 11:09:02 · 953 阅读 · 0 评论 -
usaco光纤通信(并查集)
农民John 想要用光纤连通他的N (1原创 2016-05-01 20:21:51 · 658 阅读 · 0 评论 -
Catch That Cow 2007年USACO(最短路)
竟然一做最短路就以为是要Dijkstra这题的最短路就是广搜来做的#include#include#include#include#include#include#includeusing namespace std;int n,k;const int maxn=100000;int step[maxn+5];bool hash[maxn+5];//哈希判重,一个原创 2016-05-15 12:26:24 · 383 阅读 · 0 评论 -
丑数usaco ,好吧,承认不会,承认今天好颓
对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合。这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它)。这是个对于一个输入的S的丑数集合。注意:我们不认为1 是一个丑数。你的工作是对于输入的集合S去寻找集合中的第N个丑数。longint(signed 32-bit)对于程序是足够的(这告诉我还是用long原创 2016-05-22 09:47:02 · 354 阅读 · 0 评论 -
bzoj1613(dp)
看数据范围,转移就模拟一下决策就好,水题。。#include#include#include#include#include#includeusing namespace std;int n,m;int dp[10005][505];int d[10005];int main(){ scanf("%d%d",&n,&m); for (int i=1;i<=n;i+原创 2016-08-21 18:58:02 · 458 阅读 · 0 评论 -
bzoj1827(树形dp)
以前见过这样思路的题,所以就不难。。。。不过,我终于遇见到了最大值不够大,然后wa的情况了。。。。最后把最大值开到12345678910111213才过。。。17位啊#include#include#include#include#includeusing namespace std;typedef long long ll;const int N=120005;原创 2016-08-22 11:24:55 · 338 阅读 · 0 评论 -
vijos1144&&bzoj1596(树形dp,树上最小控制集
非常经典,但是关于转移方程不重不漏的证明还是需要自己证一下f【i】【0】表示选根节点的最小费用f【i】【1】表示选根的父亲的最小费用f【i】【2】表示选根的儿子的最小费用转移推一下就好了,这种状态表示的方法极为巧妙,树形dp中设计状态真心值得思考#include#include#include#include#includeusing name原创 2016-08-22 10:15:19 · 350 阅读 · 0 评论 -
usaco分数化小数
写一个程序,输入一个形如 N/D 的分数(N 是分子,D 是分母),输出它的小数形式。如果小数有循环节的话,把循环节放在一对圆括号中。例如,1/3 = .33333333 写成 0.(3)41/333 = 0.123123123... 写成 0.(123)用 xxx.0 成表示整数典型的转化例子:1/3 = 0.(3)22/5 = 4.41/7 = 0.(14285原创 2016-05-01 19:36:02 · 1139 阅读 · 0 评论 -
usaco堆积木(记得国王游戏的简化版,思路一样)
自己证明(交换法):#include#include#include#include#include#define ll long longusing namespace std;struct aa{ ll a,b;}s[1000009];int n;ll ans=-0x3f3f3f3f;bool cmp(aa a,aa b){ return a.a+原创 2016-05-13 21:41:30 · 435 阅读 · 0 评论 -
usaco顺序的分数(随便搞,排序可以)和健康的赫斯坦奶牛(dfs)(水)
/*奶牛*/#include#include#include#include#include#includeusing namespace std;int n,v[50],m,g[50][50],a[50],ans[50],anss;void dfs(int i){ if (i==m+1) { bool o=true; int t[50]={0},tot=0;原创 2016-05-02 18:32:14 · 688 阅读 · 0 评论 -
usaco 01串
考虑排好序的N(N他们是排列好的,而且包含所有长度为N且这个二进制数中1的位数的个数小于等于L(L你的任务是输出第i(1(例:100101中,N=6,含有位数为1的个数为3)。组合数学:设长度为j的01串,1的个数不大于k的个数为f[j,k]方程:f[j,k]=f[j-1,k]+f[j-1,k-1]; //分别表示在当前位加上0和加上1时的两原创 2016-05-02 12:33:06 · 484 阅读 · 0 评论 -
usaco海明码(白银的题,竟然我根本读不懂,o(︶︿︶)o 唉)
没有明白题,第一道usaco就搞的我这么悲惨吗?这样的事不要再发生了!题目:给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 0x554 = 0101 0101 01000x234 = 0010 0011 0100不同位 xxx xx因为有五个位不同,所以“Hamming距离”是 5。 格式PROGRAM NAME原创 2016-04-25 21:24:02 · 811 阅读 · 0 评论 -
usaco回文平方数
usaco第一题回文数是指从左向右念和从右像做念都一样的数。如12321就是一个典型的回文数。给定一个进制B(2十进制),输出所有的大于等于1小于等于300且它的平方用B进制表示时是回文数的数。用’A’,’B’……表示10,11等等。青铜的水题,我竟然wrong了一次#include#include#include #include#includeusing原创 2016-04-24 21:53:23 · 1381 阅读 · 1 评论 -
usaco布局(差分约束系统的应用)
题目的正解很明显可以看出是差分约束系统的题目,1:如果A和B距离至多为D则建边A->B权值为D,2:距离至少为D则建边B->A权值为-D。然后最短路。若有负权环则输出-1,若无法到达点N则输出-2,否则直接输出1~N的距离即可。代码#include#include#include#include#include#include#include#include原创 2016-04-29 22:34:15 · 373 阅读 · 0 评论 -
usaco三值的排序
排序是一种很频繁的计算任务。现在考虑最多只有三值的排序问题。一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌排序的时候。在这个任务中可能的值只有三种1,2和3。我们用交换的方法把他排成升序的。写一个程序计算出,给定的一个1,2,3组成的数字序列,排成升序所需的最少交换次数。[编辑]格式PROGRAM NAME: sort3INPUT FORMAT:(fi原创 2016-04-28 22:04:16 · 1288 阅读 · 0 评论 -
usaco围墙涂色
Farmer John 想出了一个给牛棚旁的长围墙涂色的好方法。(为了简单起见,我们把围墙看做一维的数轴,每一个单位长度代表一块栅栏)他只是简单的把刷子蘸满颜料,系在他最喜欢的奶牛Bessie上,然后让Bessie来回地经过围墙,自己则在一旁喝一杯冰镇的凉水。(……-_-|||) Bessie 经过的所有围墙都会被涂上一层颜料。Bessie从围墙上的位置0出发,并将会进行N次移动(1 这题原创 2016-05-01 13:43:36 · 868 阅读 · 0 评论 -
usaco回文质数
首先看个定理:1:质数肯定比回文数要少,所以先判断质数2:首先我们可以证明,任何一个偶数位数的回文数都不是质数(除11外)两位回文数:都是11的倍数,故除11外无质数四位回文数:设其个位数、千位数为a,十位数、百位数为b,则:原数=a*1001+b*110=91*11*a+10*11*b=(91*a+10*b)*11,故也为11的倍数,不为质数原创 2016-05-01 15:31:46 · 829 阅读 · 0 评论 -
usaco最长前缀(dp)
关注输入有一个技巧#include#include#include#include#include#includeusing namespace std;int n=0,m=0,ans;bool f[200009]={false};char wd[500][50],s[200008],c;bool pan(char *s,int t,char *c){ for (int原创 2016-05-12 21:02:02 · 390 阅读 · 0 评论 -
usaco奶牛家谱
这题没做出来。。。首先分析题目,嗯,没错这是个dpn每个树的状态都由其左右子树状态决定,根据乘法原理,其状态数等于左右子树状态数乘积dp思路分析:设f[i,j]表示的是深度,不仅是等于j,j以内的所有深度只要节点为i的方案数。我们都知道一棵树,是由一个根节点+左子树+右子数。划分阶段当然是按树的深度和节点数来划分。设这一棵树有m个节点,左转载 2016-05-12 21:37:48 · 857 阅读 · 0 评论 -
usaco stamp 邮票(dp)
题目描述 Description已知一个 N 枚邮票的面值集合(如,{1 分,3 分})和一个上限 K —— 表示信封上能够贴 K 张邮票。计算从 1 到 M 的最大连续可贴出的邮资。例如,假设有 1 分和 3 分的邮票;你最多可以贴 5 张邮票。很容易贴出 1 到 5 分的邮资(用 1 分邮票贴就行了),接下来的邮资也不难:6 = 3 + 3 7 = 3 + 3 + 1 8原创 2016-05-02 11:32:11 · 656 阅读 · 0 评论 -
bzoj1648(水)
算回忆一下dfs吧。第7页题好水。。。#include#include#include#include#includeusing namespace std;const int N=1005;int n,m,k;int ans[N],a[N];bool b[N];int pre[N*10],to[N*10],head[N],tot;void adde原创 2016-09-08 19:04:14 · 297 阅读 · 0 评论