摘要:
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=25539#problem/G题目意思: 有n个人,每个人有一个礼物,每个人能拿自己礼物,n个人随机送礼物,给一个数字k,求出可以找到k个人,满足:这k个人里面,第一个人把礼物给第二个人,第二个人把礼物给第三个人,以此类推,第k个人把礼物给第1个人.求满足这个条件的概率.组合数学:满足条件的一组k个人称为一个k环,注意:可能有多个k环!先考虑至少形成一个k环的情况:A(n,k) * (n-1)^(n-k) / (k * (n-1)^(n)) == A(n, k) / (k *. 阅读全文
2013年7月18日
2013年7月14日
摘要:
题目链接:http://cerberus.delos.com:791/usacoprob2?a=bv3dg9ejwKm&S=milk2这题目不是线段树,直接模拟 1 /* 2 ID: zypz4571 3 LANG: C++ 4 TASK: milk2 5 */ 6 #include 7 #include 8 #include 9 using namespace std;10 struct Node {11 int s, t;12 }a[5002];13 bool cmp(const Node &a, const Node &b)14 {15 return a.s = 阅读全文
摘要:
题目链接:http://cerberus.delos.com:790/usacoprob2?a=75WI6aQtaO2&S=beads1Y这道题目没什么,就是情况多一点,麻烦一点=_= 1 /* 2 ID: zypz4571 3 LANG: C++ 4 TASK: beads 5 */ 6 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #define INF 0x3f3f 阅读全文
2013年7月13日
摘要:
为了表示对Ruchee的感谢,首先这是Ruchee的个人网站:http://www.ruchee.com/index.html,他的以前很多的代码都放到Git里面了,里面有链接。看了整整一天,刚开始学习vim的时候就是用的Ruchee的vimrc脚本,现在终于可以自己写一点了,又认真看了一下Ruchee原来的脚本,虽然还有一些不太懂,但还是赶脚好腻害的样子。然后自己又加了一点自己东西:——适用于mac, linux平台 1 "Copyright 2013 Xueyang Liu, all rights reserved. 2 "www.cnblogs.com/liuxuey 阅读全文
2013年7月11日
摘要:
输入线性方程组的维数,然后随即生成一定有解的线性方程组的增广矩阵,求出解,然后输出时间和方程组的解,以及和标准解的误差(其实就是和标准解的方差)。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 const double eps=1e-9;10 const int MAX=20000;11 double ans[MAX]; 12 int n;13 double **inputdata; double *result;14 /*... 阅读全文
2013年7月8日
摘要:
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1022 1 #include 2 #include 3 #include 4 long long int n, k, r; int a[100]; 5 int main(void) { 6 scanf("%lld",&n); int j=0; if(!n){printf("0\n");return 0;} 7 while(n) {k=n/(-2); r=n-(-2)*k; if(r==-1) n=k+1,r=1; else n=k; a[j++]=r; 阅读全文
摘要:
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1023 1 #include 2 #include 3 #include 4 using namespace std; 5 int a[2002],f[2002][502]; 6 int main(void) 7 { 8 //freopen("in1.txt","r",stdin); 9 int n, m; scanf("%d%d",&n,&m); for(int i=1;i<=n;scanf("%d" 阅读全文
2013年7月7日
摘要:
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1018范围只有20,在long long Int范围内。 1 #include 2 #include 3 #include 4 using namespace std; 5 int main(void) 6 { 7 freopen("in1.txt", "r", stdin); 8 int n, k, h, a[10]; long long int s=1; scanf("%d%d",&n,&k); h=k; 9 for(in 阅读全文
摘要:
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1017并查集 1 #include 2 #include 3 using namespace std; 4 int parent[1001],n,m; 5 void init() {for(int i=1;i=0;s=parent[s]);while (s!=x) {int tmp=parent[x];parent[x]=s;x=tmp; }return s; } 7 void Union(int R1,int R2) 8 { 9 int r1=Find(R1),r2=Find(R2),t... 阅读全文
摘要:
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1015完全背包 1 #include 2 #include 3 #include 4 using namespace std; 5 int c[11],f[101]; 6 int main(void) { 7 freopen("in1.txt","r",stdin); 8 int n,i,j;for(i=1;i<=10;scanf("%d",c+i++)) 9 ;scanf("%d",&n);10 for(i 阅读全文
摘要:
转自韩寒腾讯微博 阅读全文
摘要:
时间怎样地行走迟子建 墙上的挂钟,曾是我童年最爱着的一道风景。我对它有一种说不出的崇拜因为它掌管着时间,我们的作息似乎都受着它的支配。到了指定的时间,我们得起床上学,得做课间操,得被父母吆喝着去睡觉。虽然说有的时候我们还没睡够不想起床,在户外的月光下还没有戏耍够不想回屋睡觉,都必须因为时间的关系而听从父母的吩咐。他们理直气壮呵斥我们的话与挂钟息息相关:“都几点了,还不起床!”要么就是:“都几点了,还在外面疯玩,快睡觉去!”这时候,我觉得挂钟就是一个拿着烟袋磕着我们脑门的狠心的老头,又凶又倔,真想把他给掀翻在地,让它永远不行走。在我的想象中,它就是一个看不见形影的家长,严厉而又古板。但有时候它. 阅读全文
摘要:
泥泞 迟子建 北方的初春是肮脏的,这肮脏当然缘自于我们曾经热烈赞美过的纯洁无瑕的雪。在北方漫长的冬季里,寒冷催生了一场又一场的雪,它们自天庭伸开美丽的触角,纤柔地飘落到大地上,使整个北方沉沦于一个冰清玉洁的世界中。如果你在飞雪中行进在街头,看着枝条濡着雪绒的树,看着教堂屋顶的白雪,看着银色的无限延伸着的道路,你的内心便会洋溢着一股激情:为着那无与伦比的壮丽或者是苍凉。然而春风来了。春风使积雪融化,它们在消融的过程中容颜苍老、憔悴,仿佛一个即将撒手人寰的老妇人:雪在这时候将它的两重性毫无保留地暴露出来:它的美丽依附于寒冷,因而它是一种静止的美、脆弱的美;当寒冷已经成为西天的落霞... 阅读全文
摘要:
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1014f[i][j]表示区间[i,j]所得到的最小值。不断地划分区间,把结果保存起来。 1 #include 2 #include 3 #include 4 using namespace std; 5 long long int f[101][101];int a[101], i, j, n, INF=0x7f7f7f7f; 6 void dfs(int l, int r) { 7 if(r-l<=1) {f[l][r]=0; return;} if(f[l][r]!=INF) ret... 阅读全文
摘要:
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1013好吧,这题没节操=_=状态f[u,v,i]表示:消费u的人民币和v的人品同时泡到i个mm所需要的最少时间。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int f[101][101][101], r[101], rp[101], t[101], rmb, RP, n, INF=0x7f7f7f7f; 7 int main(void) { 8 freopen("in1.txt",&qu 阅读全文
摘要:
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1012可以发现:最大的数字绝对不超过999,只要枚举出0~999所有数字需要的火柴数,然后再枚举C和A,得到B=C-A,看看三个数字的火柴数目是否等于n就可以了。1 #include 2 int a[10] = {6,2,5,5,4,5,6,3,7,6},b[1000],n,cnt;3 int main(void) {4 freopen("in1.txt","r",stdin); cnt=0;5 scanf("%d",&n),n-=4 阅读全文
摘要:
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1011状态转移方程:f[k,x1,x2] = max(f[k-1,x1,x2],f[k-1,x1-1,x2],f[k-1,x1-1,x2-1],f[k-1,x1,x2-1]) + a[y1,x1] + a[y2,x2];f[k,x1,x2]表示,第K步的时候,一条路的横坐标是x1,另一条路的横坐标是x2的时候所得到的最优解。另外,还要考虑一下,当x1==x2的时候的情况,这个时候,只能允许一条路走到那个位置。 1 #include 2 #include 3 #include 4 #include... 阅读全文
2013年7月6日
摘要:
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1004记忆化搜索 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int m[102][102], dp[102][102], r, C; 7 int dfs(int x, int y) { 8 if (dp[x][y] > 0) return dp[x][y]; dp[x][y]=1; int a,b,c,d; a=b=c=d=0; 9 if (x-1>=1 && m[x-1][y] 阅读全文
2013年7月4日
摘要:
一个人的村庄: 剩下的事情 他们都回去了,我一个留在野地上看守麦垛。得有一个月时间他们才能忙完村里的活,腾出手回来打麦子。野地离村子有大半天的路,也就是说,一个人不能在一天内往返一次野地。这是大概两天的路程,你硬要一天走完,说不定你走到什么地方,天突然黑了,剩下的路可就不好走了。谁都不想走到最后,剩下一截子黑路。是不是? 紧张的麦收结束了。同样的劳动,又在其他什么地方重新开始,这我能想得出。我知道村庄周围有几块地。他们给我留下够吃一个月的面和米,留下不够炒两顿菜的小半瓶清油。给我安排活儿的人,临走时又追加了一句:别老闲着望天,看有没有剩下的活儿主动干干。 第二天,我在麦茬地走了一圈... 阅读全文
摘要:
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1961训练指南page228 1 #include 2 #include 3 using namespace std; 4 struct Point 5 { 6 int a, b; 7 bool operator S;13 multiset::iterator it;14 int main(void)15 {16 #ifndef ONLINE_JUDGE17 ... 阅读全文
2013年7月3日
摘要:
链接:http://codeforces.com/contest/322/problem/B这题做错了。没考虑周全。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int main(void) 7 { 8 int r, g, b; 9 while (~scanf("%d%d%d", &r, &g, &b)) {10 int x = r % 3, y = g % 3, z = b % 3, Max = max(x, max(y, z)), cnt =r/3+g/ 阅读全文
摘要:
更新一个点;求某个区间的最长连续上升序列;链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 1 #include 2 #include 3 using namespace std; 4 #define maxn 100009 5 #define mid int m=(l+r)>>1 6 int num[maxn], lsum[maxn= r) return msum[o];31 mid; int ret = 0;32 if (a m) ret = max(ret, query(o<<1|1, m+1, r));33 .. 阅读全文
摘要:
把一个区间内的值全部修改为一个确定值;计算某个区间内的最大值,最小值,和。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define INF 0x7f7f7f7f 6 #define Max 600000 7 long long a[Max], setv[Max], minv[Max], maxv[Max], sumv[Max], _max, _min, _sum, v; 8 int y1,y2; 9 bool flagv[Max];10 inline void maintain(int o, int L, int... 阅读全文
2013年6月27日
摘要:
我只能说,呵呵。还好这货可以进。http://vim.wendal.net/ 阅读全文
摘要:
电脑双系统,但是把win7重装了之后,会发现grub坏了,只能进入win7。遇到过好几次,虽然每次都成功解决问题了,但是都花费了不少时间。所以,总结一下,基本是从网上找到的方法,有的行不通,有的可以。就我的尝试,总结了一下对我的电脑来说,比较有效的方法。首先说明:我的boot分区没有单独分区!第一步: 用光盘进入Ubuntu LiveCD,打开终端,sudo fdisk -l 找到 id 是83的那行,可惜我的有两个:/dev/sda3 和 /dev/sda8 。一般的应该有一行的……囧,可能是装系统的时候没搞好o(╯□╰)o 后来尝试发现,用 /dev/sda3 才是正确的。记住这个号码,考 阅读全文
2013年6月15日
摘要:
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1010题目思路: 想想怎么打表吧,还有,只需要存下满足要求的数字,要求的数字可以表示为:(2^x*3^y*5^z),然后可以发现:2^60>10^18,所以,枚举的上限是60*60*60,大约是216000,实际上,只有1万多。枚举的方法就是以前做过的题目了:http://poj.org/problem?id=1338 然后就是二分查找,边界比较纠结。 1 #include <cstdio> 2 #include <cstring> 阅读全文
2013年6月8日
摘要:
今天高考结束了……大家都考得挺好的吧,祝福他们。 高考结束后,马上又将会有这么一群孩子,迫不及待的扔下书包,去聚餐,通宵上网,旅行,KTV,闲逛,狂欢……认为自己终于解放了……殊不知,你们离开的,就是天堂。 认真准备期末考试,虽然还是有的时候忍不住会写代码,囧。昨天CF做得真的挫了。这就是一周不写程序的后果,呵呵。坚决不写程序了,准备考试!实在无聊看看python,haskell什么的…… 阅读全文
摘要:
题目链接:http://codeforces.com/contest/315/problem/B开始以为线段树,汗……原来是道水题 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cmath> 5 #include <cstring> 6 #include <vector> 7 #include <stack> 8 #include <map> 9 #include <queue>10 阅读全文
摘要:
题目链接:http://codeforces.com/contest/315/problem/A这到题目比赛的时候过了,赛后WA了……虽然很简单,但是还是没想太清楚 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 using namespace std; 5 #define MAX 103 6 int a[MAX], b[MAX]; 7 int main(void) { 8 int n; 9 #ifndef ONLINE_JUDGE10 freopen("187a.i 阅读全文
2013年6月3日
摘要:
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=5题目思路: 典型的KMP,关键就是修改一下,找到了模式串p之后,继续从大的串s里面模式串开始的位置的下一个位置开始找下一个。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 using namespace std; 6 char p[1000], s[1000]; 7 int next[1000]; 8 void g 阅读全文
摘要:
输入: 数字N,然后是N组数据,每一组数据第一行是模式串p,第二行是一个大的字符创s,如果在s里面出现了p,那么输出p第一次出现的位置,否则输出No 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 using namespace std; 6 char p[1000], s[1000]; 7 int next[1000]; 8 void getnext() { 9 int i = 0, j = -1, len = strle 阅读全文
2013年6月1日
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1420题目大意: 中文题。题目思路: 赤裸裸的快速幂。呵呵 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <cstdlib> 5 using namespace std; 6 #define LL long long 7 LL m; 8 LL Po(LL a, LL b) { 9 LL ans = 1;10 while (b) {11 if (b& 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257题目大意: 中文的……题目思路: 人家说是DP,求最长不升子序列的个数。好吧……我不是那么做的。 我的思路是,从前往后扫一遍,访问过的标记为true,记录一下个数就OK了。 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 int b[1000]; 7 bool a[1000]; 阅读全文
2013年5月31日
摘要:
题目链接:http://codeforces.com/problemset/problem/312/B题目大意: 很简短,不解释了。题目思路: 开始怎么也读不懂题意,以为求期望呢,想不开……后来问了别人才知道,原来就是求概率,也没说多少个回合,所以就是求极限…… 所以,这货就是一道很简洁的概率题,推个公式就好了。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <cmath> 6 using n 阅读全文
摘要:
题目链接:http://codeforces.com/problemset/problem/313/C题目大意: 还是看原题吧,意思不难懂。题目思路: 开始一直没有想法,后来听一然酱讲了才好不容易搞懂,赶脚好神奇。 构造的思路应该算贪心,先把前4大的数字排列到最先划分的4个方格里面,然后再依次把后面比较大的数字依次填充到这四个方格里空着的小格子里面,直到所有的格子填满为止,为什么这个思路是正确的呢?还是模拟一下4*4的格子就差不多理解了吧。 但是关键是怎么算出递归得到的结果?一然酱的思路很巧妙,先把数字逆序排列,再把前序和算出来,目的是方便后面的求和,然后从递归的最底层开始考虑。最底层... 阅读全文
2013年5月30日
摘要:
题目链接:http://codeforces.com/problemset/problem/311/A题目大意: 题目很短,不解释了。^_^题目思路: 开始感觉很难,没思路。看了解题报告,发现原来是道水题嘛。程序里面有个break语句,要让循环次数达到最大,并且循环次数容易计算,只需要让这个break;永远不会执行就可以了。也就是说,可以让p[j].x - p[i].x >= d 永远不成立,只需要让p[j].x - p[i].x总等于0就可以了!因为题目让生成任意一组符合条件的数据嘛,所以,可以让产生的所有的点的横坐标都是一样的就可以了。 1 #include <cstdio&g 阅读全文
2013年5月26日
摘要:
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=24534#problem/C题目大意: 判断最小生成树是否唯一。题目思路: 对于如果有一条边A在最小生成树里面,并且存在和这条边权值一样的另外一条边B,那么再次求最小生成树的时候,把A去掉,看看求出的最小生成树是不是和原来的最小生成树权值一样。如果一样,就是不唯一,否则就刚才去掉的加进来,然后再找下一条这样的边。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 阅读全文
摘要:
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=24534#problem/B题目大意: 给邻接矩阵,和已经建立好的几条边。求最小生成树权值。题目思路: 方法就是把已将建立好的边的权值赋值为0即可。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <algorithm> 6 using namespace std; 7 #de 阅读全文
摘要:
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=24534#problem/A题目大意: 给定无向图,邻接矩阵。求最小生成树权值。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <algorithm> 6 using namespace std; 7 #define MAXN 110 8 #define MAXM 5009 阅读全文
2013年5月25日
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176题目大意: 中文题……题目思路: 类似于 Triangle。d[i][j] 表示 i 时间在 j 位置的所得到的价值。然后就像 Triangle 一样从下往上递推。最终求在0秒的时候,在5位置上的值。WA了两次,当初求的是0秒的时候,所有位置上的最大值,,这显然是不对的。因为起始位置是5啊。 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cstrin 阅读全文