上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 26 下一页
摘要: 字典树;不过数据量很大;4000*1000;我用的是传统的方法建树,虽然优化了一下,边插入边统计,不过还是T了;这是我的代码: 1 #include 2 #include 3 #define maxn 4000009 4 using namespace std; 5 int nonocount; 6 long long ans; 7 struct node 8 { 9 int num;10 node *a[62];11 } no[maxn];12 13 node* newnode()14 {15 node *p=no+nonocount++;16 p->num=... 阅读全文
posted @ 2013-10-30 14:26 Yours1103 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 一个简单的字典树上的dp;代码: 1 #include 2 #include 3 #include 4 #define maxn 400000 5 #define mod 20071027 6 using namespace std; 7 priority_queue,greater >q; 8 struct node 9 {10 bool f;11 node *a[26];12 } no[maxn];13 int nonocount;14 int d[maxn];15 bool vis[maxn];16 node *newnode()17 {18 node *p=no... 阅读全文
posted @ 2013-10-30 12:29 Yours1103 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 简单题; 1 #include 2 #include 3 using namespace std; 4 int t,n,k; 5 sets; 6 int wei[20]; 7 void next() 8 { 9 if(k==0)return;10 long long kk=(long long)k*k;11 k=0;12 int cnt=0;13 while(kk>0)14 {15 wei[cnt++]=kk%10;16 kk/=10;17 }18 for(int i=0;i<n;i++)19 ... 阅读全文
posted @ 2013-10-29 21:25 Yours1103 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 把每个位置可能出现的最大值存一下就行;代码: 1 #include 2 #include 3 #include 4 #define maxn 100005 5 using namespace std; 6 7 int a[maxn],b[maxn]; 8 int main() 9 {10 int n,t;11 scanf("%d",&t);12 while(t--)13 {14 scanf("%d",&n);15 memset(b,0,sizeof b);16 for(int i=0; i<n; i++)scan... 阅读全文
posted @ 2013-10-29 21:02 Yours1103 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 竟然用二分,真是想不到;偶数的情况很容易想到;不过奇数的就难了;奇数的情况下,一个从后向前拿,一个从前向后拿的分配方法实在太妙了!注:白书上的代码有一点点错误代码: 1 #include 2 #define maxn 100009 3 #include 4 using namespace std; 5 6 int p[maxn],right[maxn],left[maxn],n; 7 8 bool check(int m) 9 {10 int x=p[1],y=m-p[1];11 left[1]=x;right[1]=0;12 for(int i=2;i>1;43 ... 阅读全文
posted @ 2013-10-29 18:43 Yours1103 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 这个题目关键在于把无根树变成有根树;这个用dfs; 然后用贪心的方法,从最深的那层开始,每次找到节点的上k层,建一个服务器,然后用一个dfs把这个服务器能够覆盖的节点标记; #include#include#include#include#define maxn 1005using namespace std;vectornode[maxn],deep[maxn];bool vis[maxn];i... 阅读全文
posted @ 2013-10-29 17:14 Yours1103 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 简单题; 1 #include 2 using namespace std; 3 4 char s[13][13]; 5 6 int n; 7 8 int main() 9 {10 int ca=1,t;11 scanf("%d",&t);12 while(t--)13 {14 scanf("%d",&n);15 for(int i=0; i0&&s[i-1][j]==ch)flag=0;24 if(j>0&&s[i][j-1]==ch)flag=0;25 ... 阅读全文
posted @ 2013-10-29 16:16 Yours1103 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 最大值最小的题;直接用二分,比较简单;不过我的二分老是不用好。有时间总结一下! 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define maxn 1006 7 using namespace std; 8 int t,n,b,x,y,cnt; 9 mapmp;10 struct node11 {12 int p;13 int v;14 };15 vectorcom[maxn];16 char s[23],ss[23];17 bool check(int a)18 {19 int sum=0;20 ... 阅读全文
posted @ 2013-10-28 23:01 Yours1103 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 汉诺塔问题:首先得记住一个经典的结论:把i个盘子移动到另外一个柱子上要花2^i-1步然后这个题:首先从底往上找到要移动的编号最大的盘子,把上面所有的移动在临时的柱子,然后把那个编号最大的移动到目标状态,最后把前面移到临时柱子上的移到目标状态(循环递归);利用前面的那个结论递归就可以了!代码: 1 #include 2 #define maxn 66 3 #define ll long long 4 using namespace std; 5 6 ll f(int *p,int i,int final) 7 { 8 if(i==0)return 0; 9 if(p[i]==f... 阅读全文
posted @ 2013-10-28 21:06 Yours1103 阅读(166) 评论(0) 推荐(0) 编辑
摘要: A:水题代码: 1 #include 2 #include 3 using namespace std; 4 5 int she[25]; 6 7 int n,m,c; 8 9 int main()10 {11 int ca=1,a;12 while(scanf("%d%d%d",&n,&m,&c)&&(n+m+c))13 {14 printf("Sequence %d\n",ca++);15 for(int i=1; ic)puts("Fuse was blown.");26 else27 { 阅读全文
posted @ 2013-10-27 23:23 Yours1103 阅读(298) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 26 下一页