摘要: 简单题; 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) 编辑