2012年8月11日
摘要: View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 #define EPS 1e-4 6 #define MAXN 50004 7 using namespace std; 8 double x[MAXN],w[MAXN]; 9 10 inline double get_f1(double xx, int start, int n)11 {12 double sum(0);13 for (int i(start); 阅读全文
posted @ 2012-08-11 22:26 Dev-T 阅读(252) 评论(0) 推荐(0) 编辑
  2012年8月10日
摘要: View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<vector> 5 #define MAXN 1003 6 using namespace std; 7 typedef long long int ll; 8 vector<int> prime; 9 ll dp[MAXN][MAXN];10 11 void pp()12 {13 bool vis[1000] = {false};14 for (int i(2); i< 阅读全文
posted @ 2012-08-10 10:29 Dev-T 阅读(186) 评论(0) 推荐(0) 编辑
  2012年8月9日
摘要: View Code 1 #include<iostream> 2 #include<set> 3 #include<cstdio> 4 #include<cmath> 5 #include<vector> 6 #include<algorithm> 7 #define MAXN 40004 8 using namespace std; 9 typedef long long int ll;10 int dp[MAXN];11 struct point {12 int x,y;13 int val,t;14 point(){ 阅读全文
posted @ 2012-08-09 19:14 Dev-T 阅读(162) 评论(0) 推荐(0) 编辑
摘要: View Code 1 #include<iostream> 2 #include<set> 3 #include<cstdio> 4 #include<cmath> 5 using namespace std; 6 typedef long long int ll; 7 set<ll> S; 8 9 void prepare()10 {11 ll end = ll(sqrt(double((1<<31) - 1)));12 for (ll i(2); i<=end; ++i) {13 S.insert(i*i); 阅读全文
posted @ 2012-08-09 19:13 Dev-T 阅读(159) 评论(0) 推荐(0) 编辑
摘要: View Code 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 5 int main() 6 { 7 int n; 8 while (scanf("%d",&n) != EOF) { 9 int cnt(0);10 while (n) {11 cnt += (n&1);12 n >>= 1; 13 } 14 printf("%d\n",(1<... 阅读全文
posted @ 2012-08-09 19:12 Dev-T 阅读(179) 评论(0) 推荐(0) 编辑
  2012年7月24日
摘要: 这是我第一道用gauss消元做的题,其实高斯消元的原理,我们很早以前就已经用过,就是用已知方程变形后相加减,逐步消去至一个未知数的方法,线性代数上也有讲过。这题其实开始的时候,一点思路都没有。。。线性代数真心水啊。这个gauss我还是照着伪代码写的。这题分析如下:未知数共30个,因为30个灯的状态我们都必须要确定下来才能解决这道题。比如说(1,1)这个灯的最终状态将由(1,1),(1,2),(2,1)这三个灯的状态决定这样就可以列出一个方程:(l(1,1)+x(1,1)+x(1,2)+0*x(1,3)+...+x(2,1)+...)%2=0(l表示给出的初始状态的矩阵,x表示最终需要求的开关矩 阅读全文
posted @ 2012-07-24 16:28 Dev-T 阅读(1941) 评论(0) 推荐(0) 编辑
  2012年6月28日
摘要: 题意:给出一个整数n,叫你给出1到n的某个序列经过k次置换后能还原,求这样最大的k,如果存在多种序列满足要求。则必须求出字典序最小的那个序列。一个轮换必须经过它的大小的次数的置换才能还原,那么这个序列的k其实就是它的所有轮换的大小的最小公倍数。至于怎么求最小序列,可以通过素数分解来完成。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #define MAXN 104 5 using namespace std; 6 __int64 dp[MAXN][MAXN] 阅读全文
posted @ 2012-06-28 14:04 Dev-T 阅读(315) 评论(0) 推荐(0) 编辑
  2012年5月26日
摘要: 这题是我做的关于区间计数的第一道题,恩,纪念一下。本题题意是:给定2个数,判断2个数之间(闭区间)存在多少个"round number"(即转换成2进制,0的个数多于1的个数)。Sample Input2 12Sample Output6思路是:计算2-1以内的满足条件的数有多少个,以及12以内的数,再相减即可。那么如何进行计数呢。比如:31.它的二进制码可以分解为[1,10000),[10000,11000),[11000,11100),[11100,11110),[11110,111111)这样就包括了所有情况,除了31本身需特判下。分析[11110,11111),[1 阅读全文
posted @ 2012-05-26 20:40 Dev-T 阅读(964) 评论(1) 推荐(0) 编辑
  2012年5月24日
摘要: 这题主要是意思不太好理解,其实就是给定一个范围,然后指定一个区间d,使(2到d)的任意区间之和为合数即可。不过开始的时候得用素数筛选法,把非素数给标记出来。并输出这样的序列,直接搜索。。。 1 #include<iostream> 2 #include<cstdio> 3 #include<vector> 4 //#define end(x,y,z) (!((x == 0) && (y == 0) && (z == 0))) 5 #define MAXN 10005 6 using namespace std; 7 int p 阅读全文
posted @ 2012-05-24 00:10 Dev-T 阅读(585) 评论(0) 推荐(0) 编辑
  2012年5月23日
摘要: 还是置换的基本概念.有点要注意下,就是循环次数可能非常高,所以不能纯模拟,先mod一下,再处理. 1 #include<iostream> 2 #include<cstdio> 3 #include<vector> 4 #define MAXN 204 5 using namespace std; 6 char data[MAXN]; 7 char result[MAXN]; 8 int num[MAXN]; 9 vector<vector<int> > qun;10 11 void ini(int n)12 {13 bool vis 阅读全文
posted @ 2012-05-23 15:34 Dev-T 阅读(238) 评论(0) 推荐(0) 编辑