04 2013 档案

摘要:题意:一个方程f(t)=a[n]*t^n+a[n-1]*t^(n-1)+...+a[1]*t;它有n-1个极值点,求每个系数ai小数点后第一个非零值,如果是整数则输出0;f(t)求导后,是n-1次的函数,f(t)==0最多有n-1的解,因为告诉你有n-1个极值点,所以f(t)=(x+t1)*(x+t2)*(x+t3)...(x+tn-1);系数可以直接搞用n^2的方法;dp[i][j]表示前i项(x+ti)相乘x^j的系数;这题感觉比较好的想法是,因为ti<10000,所以最终系数可能爆LL;但因为最后要求的系数都是一个整数除以i(i<=n),因为n<32,可以先求出1~n的 阅读全文
posted @ 2013-04-30 20:16 Rabbit_hair 阅读(219) 评论(0) 推荐(0)
摘要:1 //Guass_未测试版本 2 /* 3 如果可以肯定有唯一解,可以用化成上三角,时间有一点优势;但是如果存在自由变量 4 那么就不能这么写,而且化成上三角后,对应的行号和列号会发生错位; 5 6 */ 7 const double eps=1e-10; 8 typedef double Matrix[N][N]; 9 void gauss(Matrix A,int n){ //n个方程组,n个自由变量;A[i][n]放常量y[i]; 10 int i,j,r,c,id; 11 for (r=0;r<n;r++){ 12 id=r;... 阅读全文
posted @ 2013-04-28 00:37 Rabbit_hair 阅读(273) 评论(0) 推荐(0)
摘要:题号+推荐指数hdu4089 **View Code 1 /* 2 dp[i][j]表示队伍里有i个人,Tomato在j位置,到达目标状态的概率; 3 j==1 dp[i][j]=dp[i][j]*p1+dp[i][i]*p2+p4; 4 1<j<=k dp[i][j]=dp[i][j]*p1+dp[i][j-1]*p2+dp[i-1][j-1]*p3+p4; 5 j> k dp[i][j]=dp[i][j]*p1+dp[i][j-1]*p2+dp[i-1][j-1]*p3; 6 {i>=j} 7 化简: 8 j==1 dp[i][j]=dp[i][i]*p21+p41 阅读全文
posted @ 2013-04-15 20:57 Rabbit_hair 阅读(1044) 评论(0) 推荐(1)
摘要:题意:N个子串,每个串价值为1,给你一个长串S,求重排后最大的价值(可重叠);明白题意后,很裸的自动机+DP,建完自动机状态表示成dp[2][500][20][20][20],把其中3个必然小于20的元素来DP,然后TLE,40*500*20*20*20,有30组case,必然TLE;View Code 1 /* 2 学习一:一种压缩方式,类似于进制表示,每个元素的个数确定后 3 num[],那么bas[0]=1,bas[1]=bas[i-1]*(num[i-1]+1); 4 例如num[]={2,1,3,2};bas[]={1,3,6,24}; 5 编码 incode() ret... 阅读全文
posted @ 2013-04-08 20:53 Rabbit_hair 阅读(287) 评论(0) 推荐(0)
摘要:题意:op:对平面上任意一个点操作+v;query:询问矩形[x1,y1,x2,y2]里面所有点v的总和;矩形大小为20000*20000,比赛的时候看到这道题目第一直觉就是二维树状数组,但范围太大会mle,二维线段树也会mle(之后树套树的二维线段树),比赛结束后各种询问;方法1:用map<int,int> mp[N];来减少内存的,只在用到的地方开,没有用到的地方就不开;View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<alg 阅读全文
posted @ 2013-04-07 22:45 Rabbit_hair 阅读(315) 评论(0) 推荐(0)