CCPC-Wannafly Winter Camp Day5 (Div2, onsite)
Replay:
Dup4:
- 时间复杂度算不对? 一点点思路不经过验证就激动的要死? 浪费自己一个小时还浪费别人一个小时?
- 对1e3不敏感? 1e3 * 1e3是多少? 模拟建边跑dp不写非要写个大模拟?
- 看到数据结构就高兴的要死? 没细想? 没发现性质?
X:
- 日常语文差, 导致计算几何死都写不对 读题要细致啊!
- 感觉状态还可以?只是计算几何写太久了, 人都懵了
A:Cactus Draw
Solved.
按照BFS序以及深度排
#include<bits/stdc++.h> using namespace std; const int maxn = 1e4 + ; struct Edge{
int to, nxt;
Edge(){}
Edge(int to, int nxt) :to(to), nxt(nxt){}
}edge[maxn << ]; struct node{
int x, y;
node(){}
node(int x, int y):x(x), y(y){}
}ans[maxn]; int n, m;
int head[maxn], tot;
int vis[maxn];
int level[maxn]; void Init()
{
tot = ;
memset(vis, , sizeof vis);
memset(level, , sizeof level);
memset(head, -, sizeof head);
} void addedge(int u,int v)
{
edge[tot] = Edge(v, head[u]); head[u] = tot++;
edge[tot] = Edge(u, head[v]); head[v] = tot++;
} void BFS(int root)
{
queue<int>q;
q.push(root);
vis[root] = ;
ans[root] = node(vis[root], ++level[vis[root]]);
while(!q.empty())
{
int u = q.front();
q.pop();
for(int i = head[u]; ~i; i = edge[i].nxt)
{
int v = edge[i].to;
if(!vis[v])
{
vis[v] = vis[u] + ;
ans[v] = node(vis[v], ++level[vis[v]]);
q.push(v);
}
}
}
} int main()
{
while(~scanf("%d %d", &n, &m))
{
Init();
for(int i = , u, v; i <= m; ++i)
{
scanf("%d %d", &u, &v);
addedge(u, v);
}
BFS();
for(int i= ; i <= n; ++i)
{
printf("%d %d\n", ans[i].x, ans[i].y);
}
}
return ;
}
C:Division
Solved.
每次取最大进行操作,堆维护
#include <bits/stdc++.h>
using namespace std; #define ll long long
#define N 100010
int n, k; int main()
{
while (scanf("%d%d", &n, &k) != EOF)
{
priority_queue <int> pq;
ll res = ;
for (int i = , a; i <= n; ++i)
{
scanf("%d", &a);
pq.push(a);
}
for (int i = ; i <= k; ++i)
{
int top = pq.top(); pq.pop();
pq.push(top / );
}
while (!pq.empty())
{
res += pq.top();
pq.pop();
}
printf("%lld\n", res);
}
return ;
}
D:doppelblock
unsolved.
搜索。
增加剪枝:当剩余的数字小于x之间的数字时,回溯掉即可。
还有一条剪枝可以先处理x的位置在填数字(未写)
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll MOD = 1e9 + ; const int maxn = 1e2 + ; int n;
int sum = ;
int r[maxn], c[maxn];
int left_r[maxn], left_c[maxn];
int mid_r[maxn], mid_c[maxn];
int right_r[maxn], right_c[maxn];
int cnt_r[maxn], cnt_c[maxn];
int vis_r[maxn][maxn], vis_c[maxn][maxn];
char mp[maxn][maxn]; void Init()
{
memset(left_r, , sizeof left_r);
memset(left_c, , sizeof left_c); memset(mid_r, , sizeof mid_r);
memset(mid_c, , sizeof mid_c); memset(right_r, , sizeof right_r);
memset(right_c, , sizeof right_c); memset(cnt_r, , sizeof cnt_r);
memset(cnt_c, , sizeof cnt_c); memset(vis_r, , sizeof vis_r);
memset(vis_c, , sizeof vis_c);
} bool DFS(int x, int y)
{
if (x == n && y == n + ) return true;
if (y == n + )
{
if (cnt_r[x] != ) return false;
else return DFS(x + , );
} if (cnt_r[x] == && cnt_c[y] == )
{
mp[x][y] = 'X';
cnt_r[x]++;
cnt_c[y]++;
if (DFS(x, y + )) return true;
cnt_r[x]--;
cnt_c[y]--;
} if (cnt_r[x] == && (cnt_c[y] == && mid_c[y] == c[y]))
{
mp[x][y] = 'X';
cnt_r[x]++;
cnt_c[y]++;
if (DFS(x, y + )) return true;
cnt_r[x]--;
cnt_c[y]--;
} if (cnt_c[y] == && (cnt_r[x] == && mid_r[x] == r[x]))
{
mp[x][y] = 'X';
cnt_r[x]++;
cnt_c[y]++;
if (DFS(x, y + )) return true;
cnt_r[x]--;
cnt_c[y]--;
} if ((cnt_r[x] == && mid_r[x] == r[x]) && (cnt_c[y] == && mid_c[y] == c[y]))
{
mp[x][y] = 'X';
cnt_r[x]++;
cnt_c[y]++;
if (DFS(x, y + )) return true;
cnt_r[x]--;
cnt_c[y]--;
} for (int i = ; i <= n - ; ++i)
{
if (vis_r[x][i] || vis_c[y][i]) continue;
if (cnt_r[x] == )
{
if (sum - (left_r[x] + i) < r[x]) continue;
}
else if (cnt_r[x] == )
{
if (mid_r[x] + i > r[x]) continue;
} if (cnt_c[y] == )
{
if (sum - (left_c[y] + i) < c[y]) continue;
}
else if (cnt_c[y] == )
{
if (mid_c[y] + i > c[y]) continue;
} if (cnt_r[x] == ) left_r[x] += i;
else if (cnt_r[x] == ) mid_r[x] += i;
else if (cnt_r[x] == ) right_r[x] += i; if (cnt_c[y] == ) left_c[y] += i;
else if (cnt_c[y] == ) mid_c[y] += i;
else if (cnt_c[y] == ) right_c[y] += i; vis_r[x][i]++;
vis_c[y][i]++; mp[x][y] = i + '';
if (DFS(x, y + )) return true; if (cnt_r[x] == ) left_r[x] -= i;
else if (cnt_r[x] == ) mid_r[x] -= i;
else if (cnt_r[x] == ) right_r[x] -= i; if (cnt_c[y] == ) left_c[y] -= i;
else if (cnt_c[y] == ) mid_c[y] -= i;
else if (cnt_c[y] == ) right_c[y] -= i; vis_r[x][i]--;
vis_c[y][i]--;
} return false;
} void RUN()
{
int t;
int flag = ;
scanf("%d", &t);
while (t--)
{
if (flag++) printf("\n");
Init();
scanf("%d", &n);
for (int i = ; i <= n; ++i) scanf("%d", r + i);
for (int i = ; i <= n; ++i) scanf("%d", c + i);
sum = (n - ) * (n - ) / ;
DFS(, );
for (int i = ; i <= n; ++i)
{
for (int j = ; j <= n; ++j)
{
printf("%c", mp[i][j]);
}
puts("");
}
}
} int main()
{
#ifdef LOCAL_JUDGE
freopen("Text.txt", "r", stdin);
#endif // LOCAL_JUDGE RUN(); #ifdef LOCAL_JUDGE
fclose(stdin);
#endif // LOCAL_JUDGE
return ;
}
E:Fast Kronecker Transform
Upsolved.
将同样的数放在一起,如果同样的数字小于$10000,直接暴力$
否则做NTT
$因为模数是998244353,可以直接做,做FFT可能有精度问题$
$F(n) = \sum f(t) \cdot g(n - t)$
$f(t) = t 当 a_t = x$
$g(t) = t 当 b_t = x$
#include <bits/stdc++.h>
using namespace std; #define db long double
#define ll long long
#define N 400010
#define S 10010
const ll MOD = (ll);
int n, m, a[N], b[N], c[N];
vector <int> l[N], r[N];
ll ans[N]; void Hash()
{
c[] = ;
for (int i = ; i <= n; ++i) c[++c[]] = a[i];
for (int i = ; i <= m; ++i) c[++c[]] = b[i];
sort(c + , c + + c[]);
c[] = unique(c + , c + + c[]) - c - ;
for (int i = ; i <= n; ++i) a[i] = lower_bound(c + , c + + c[], a[i]) - c;
for (int i = ; i <= m; ++i) b[i] = lower_bound(c + , c + + c[], b[i]) - c;
} ll qmod(ll base, ll n)
{
ll res = ;
while (n)
{
if (n & ) res = (res * base) % MOD;
base = base * base % MOD;
n >>= ;
}
return res;
} int x1[N], x2[N];
void ntt(int *a, int len, int f)
{
int i, j = , t, k;
for (int i = ; i < len - ; ++i)
{
for (t = len; j ^= t >>= , ~j & t;);
if (i < j) swap(a[i], a[j]);
}
for (int i = ; i < len; i <<= )
{
t = i << ;
int wn = qmod(, (MOD - ) / t);
for (int j = ; j < len; j += t)
{
int w = ;
for (k = ; k < i; ++k, w = 1ll * w * wn % MOD)
{
int x = a[j + k], y = 1ll * w * a[j + k + i] % MOD;
a[j + k] = (x + y) % MOD, a[j + k + i] = (x - y + MOD) % MOD;
}
}
}
if (f == -)
{
reverse(a + , a + len);
int inv = qmod(len, MOD - );
for (int i = ; i < len; ++i) a[i] = 1ll * a[i] * inv % MOD;
}
} int main()
{
while (scanf("%d%d", &n, &m) != EOF)
{
for (int i = ; i <= n; ++i) scanf("%d", a + i);
for (int i = ; i <= m; ++i) scanf("%d", b + i); Hash();
for (int i = ; i <= n; ++i) l[a[i]].push_back(i);
for (int i = ; i <= m; ++i) r[b[i]].push_back(i);
int len1 = n + , len2 = m + , len = ;
while (len < (len1 + len2)) len <<= ;
memset(ans, , sizeof ans);
for (int i = ; i <= n + m + ; ++i)
{
if (l[i].size() + r[i].size() < S)
{
for (auto u : l[i]) for (auto v : r[i])
ans[u + v] = (ans[u + v] + (1ll * u * v) % MOD) % MOD;
}
else
{
for (int j = ; j < len; ++j) x1[j] = ;
for (int j = ; j < len; ++j) x2[j] = ;
for (auto x : l[i]) x1[x] = x;
for (auto x : r[i]) x2[x] = x;
ntt(x1, len, );
ntt(x2, len, );
for (int j = ; j < len; ++j)
x1[j] = 1ll * x1[j] * x2[j] % MOD;
ntt(x1, len, -);
for (int j = ; j <= n + m; ++j)
ans[j] = (ans[j] + x1[j]) % MOD;
}
}
for (int i = ; i <= n + m; ++i) printf("%lld%c", ans[i] % MOD, " \n"[i == n + m]);
}
return ;
}
F:Kropki
Solved.
习惯性记忆化搜索(实际上是个状压dp)
$dp[S][i]表示S状态下i作为最后一个出现的状态, dp下去即可$
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll MOD = 1e9 + ; int n;
ll dp[ << ][];
char str[]; ll DFS(int S, int last, int dep)
{
if(dep == n)
{
return 1ll;
}
if(dp[S][last] != -) return dp[S][last];
ll res = ;
for(int i = ; i <= n; ++i)
{
if(S & ( << (i - ))) continue;
if(dep)
{
if(str[dep] == '')
{
if(i != last * && i * != last) continue;
}
if(str[dep] == '')
{
if(i == last * || i * == last) continue;
}
}
ll tmp = DFS((S | ( << (i - ))), i, dep + );
res = (res + tmp) % MOD;
}
dp[S][last] = res;
return res;
} int main()
{
while(~scanf("%d", &n))
{
scanf("%s", str + );
memset(dp, -, sizeof dp);
ll ans = DFS(, , );
printf("%lld\n", ans);
}
return ;
}
H:Nested Tree
Solved.
点数只有$10^6,建边树形DP$
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll MOD = (ll)1e9 + ;
const int maxn = 1e6 + ; struct Edge{
int to, nxt;
Edge(){}
Edge(int to, int nxt):to(to), nxt(nxt){}
}edge[maxn << ]; int n, m;
int head[maxn], tot;
ll son[maxn];
ll ans; void Init()
{
ans = ;
tot = ;
memset(head, -, sizeof head);
} void addedge(int u,int v)
{
edge[tot] = Edge(v, head[u]); head[u] = tot++;
edge[tot] = Edge(u, head[v]); head[v] = tot++;
} void DFS(int u, int fa)
{
son[u] = ;
for(int i = head[u]; ~i; i = edge[i].nxt)
{
int v = edge[i].to;
if(v == fa) continue;
DFS(v, u);
son[u] += son[v];
ans = (ans + (son[v] * (n - son[v]) % MOD) % MOD) % MOD;
}
} int main()
{
while(~scanf("%d %d", &n, &m))
{
Init();
for(int i = , u, v; i < n; ++i)
{
scanf("%d %d", &u, &v);
for(int j = ; j <= m; ++j)
{
addedge((j - ) * n + u, (j - ) * n + v);
}
}
for(int i = , a, b, u, v; i < m; ++i)
{
scanf("%d %d %d %d", &a ,&b, &u, &v);
addedge((a - ) * n + u, (b - ) * n + v);
}
n *= m;
DFS(, -);
printf("%lld\n", ans);
}
return ;
}
I:Sorting
Upsolved.
将数分为两类,一类是$<= x, 二类是> x $
同一类的数在怎么操作其相对位置都是不变的
那么我们只需要知道前缀区间内有多少个一类数,有多少个二类数
再用前缀和维护同一类数的和即可
$2、3操作用线段树维护即可,用0, 1分别表示一类数$
每次操作相当于将前面连续一段赋值为$0/1 后面连续一段赋值为1/0$
#include <bits/stdc++.h>
using namespace std; #define ll long long
#define N 200010
int n, q, x, a[N];
ll sum[][N]; namespace SEG
{
int lazy[N << ], v[N << ];
void pushdown(int id, int l, int r, int mid)
{
if (lazy[id] == -) return;
lazy[id << ] = lazy[id];
lazy[id << | ] = lazy[id];
v[id << ] = lazy[id] * (mid - l + );
v[id << | ] = lazy[id] * (r - mid);
lazy[id] = -;
}
void pushup(int id) { v[id] = v[id << ] + v[id << | ]; }
void build(int id, int l, int r)
{
lazy[id] = -, v[id] = ;
if (l == r)
{
v[id] = a[l] > x;
return;
}
int mid = (l + r) >> ;
build(id << , l, mid);
build(id << | , mid + , r);
pushup(id);
}
void update(int id, int l, int r, int ql, int qr, int val)
{
if (l >= ql && r <= qr)
{
lazy[id] = val;
v[id] = val * (r - l + );
return;
}
int mid = (l + r) >> ;
pushdown(id, l, r, mid);
if (ql <= mid) update(id << , l, mid, ql, qr, val);
if (qr > mid) update(id << | , mid + , r, ql, qr, val);
pushup(id);
}
int query(int id, int l, int r, int ql, int qr)
{
if (r < l) return ;
if (l >= ql && r <= qr) return v[id];
int mid = (l + r) >> ;
pushdown(id, l, r, mid);
int res = ;
if (ql <= mid) res += query(id << , l, mid, ql, qr);
if (qr > mid) res += query(id << | , mid + , r, ql, qr);
return res;
}
} ll que(int r)
{
if (r < ) return ;
int a = SEG::query(, , n, , r);
int b = r - a;
//cout << a << " " << b << endl;
//cout << sum[1][a] << " " << sum[0][b] << endl;
return (a ? sum[][a] : ) + (b ? sum[][b] : );
} int main()
{
while (scanf("%d%d%d", &n, &q, &x) != EOF)
{
sum[][] = , sum[][] = ;
for (int i = ; i <= n; ++i)
{
scanf("%d", a + i);
if (a[i] <= x) sum[][++sum[][]] = a[i];
else sum[][++sum[][]] = a[i];
}
for (int i = ; i <= n; ++i) for (int j = ; j < ; ++j) sum[j][i] += sum[j][i - ];
SEG::build(, , n);
for (int qq = , op, l, r; qq <= q; ++qq)
{
scanf("%d%d%d", &op, &l, &r);
if (op == ) printf("%lld\n", que(r) - que(l - ));
else if (op == )
{
int a = SEG::query(, , n, l, r);
int b = (r - l + ) - a;
SEG::update(, , n, l, l + b - , );
SEG::update(, , n, l + b, r, );
}
else
{
int a = SEG::query(, , n, l, r);
int b = (r - l + ) - a;
SEG::update(, , n, l, l + a - , );
SEG::update(, , n, l + a, r, );
}
}
}
return ;
}
J:Special Judge
Solved.
$枚举每两条边, 判一下即可$
#include<bits/stdc++.h> using namespace std; const double eps = 1e-;
const int maxn = 1e4 + ; int sgn(__int128 x)
{
if(x == ) return ;
else return x > ? : -;
} struct Point{
__int128 x, y;
Point(){}
Point(__int128 _x, __int128 _y)
{
x = _x;
y = _y;
} bool operator == (const Point &b) const
{
return sgn(x - b.x) == && sgn(y - b.y) == ;
} bool operator < (const Point &b) const
{
return sgn(x - b.x) == ? sgn(y - b.y) : sgn(x - b.x);
} Point operator - (const Point &b) const
{
return Point(x - b.x, y - b.y);
} __int128 operator ^ (const Point &b) const
{
return x * b.y - y * b.x;
} __int128 operator * (const Point &b) const
{
return x * b.x + y * b.y;
} }P[maxn]; struct Line{
Point s, e;
Line(){}
Line(Point _s, Point _e)
{
s = _s;
e = _e;
} void adjust()
{
if(e < s) swap(s, e);
} int segcrossseg(Line v)
{
int d1 = sgn((e - s) ^ (v.s - s));
int d2 = sgn((e - s) ^ (v.e - s));
int d3 = sgn((v.e - v.s) ^ (s - v.s));
int d4 = sgn((v.e - v.s) ^ (e - v.s));
if((d1 ^ d2) == - && (d3 ^ d4) == -) return ;
return (d1 == && sgn((v.s - s) * (v.s - e)) <= )
|| (d2 == && sgn((v.e - s) * (v.e - e)) <= )
|| (d3 == && sgn((s - v.s) * (s - v.e)) <= )
|| (d4 == && sgn((e - v.s) * (e - v.e)) <= );
} bool pointtoseg(Point p)
{
return sgn((p - s) ^ (e - s)) == && sgn((p - s) * (p - e)) <= ;
}
}L[maxn]; int n, m;
int u[maxn], v[maxn]; int main()
{
while(~scanf("%d %d", &n, &m))
{
for(int i = ; i <= m; ++i) scanf("%d %d", u + i, v + i);
for(int i = ; i <= n; ++i)
{
int x, y;
scanf("%d %d", &x ,&y);
P[i] = Point(x, y);
}
for(int i = ; i <= m; ++i)
{
L[i] = Line(P[u[i]], P[v[i]]);
L[i].adjust();
}
int ans = ;
for(int i = ; i <= m; ++i) for(int j = i + ; j <= m; ++j)
{
if(L[i].segcrossseg(L[j]) == ) ans++;
else if(L[i].segcrossseg(L[j]) == )
{
if(u[i] == u[j])
{
if(!(L[i].pointtoseg(P[v[j]]) || (L[j].pointtoseg(P[v[i]])))) continue;
} if(u[i] == v[j])
{
if(!(L[i].pointtoseg(P[u[j]]) || (L[j].pointtoseg(P[v[i]])))) continue;
} if(v[i] == u[j])
{
if(!(L[i].pointtoseg(P[v[j]]) || (L[j].pointtoseg(P[u[i]])))) continue;
} if(v[i] == v[j])
{
if(!(L[i].pointtoseg(P[u[j]]) || (L[j].pointtoseg(P[u[i]])))) continue;
} ans++;
}
}
printf("%d\n", ans);
}
return ;
}
CCPC-Wannafly Winter Camp Day5 (Div2, onsite)的更多相关文章
- CCPC-Wannafly Winter Camp Day5 (Div2, onsite) Sorting(线段树)
题目链接 题意 对序列进行三种操作: 1.区间求和. 2.将区间小于等于$x$的数不改变相对顺序的前提下放到$x$左边,用同样规则将比$x$大的放到右边. 3.将区间大于$x$的数不改变相对顺序的前提 ...
- 2019 CCPC-Wannafly Winter Camp Day5(Div2, onsite)
solve 5/11 补题:7/11 A Cactus Draw Code:zz Thinking :zz 题意:要在n*n的网格内画上一棵节点数为n树,使得没有边相交. 很好想的构造题,因为网格有n ...
- 2020 CCPC Wannafly Winter Camp Day1 C. 染色图
2020 CCPC Wannafly Winter Camp Day1 C. 染色图 定义一张无向图 G=⟨V,E⟩ 是 k 可染色的当且仅当存在函数 f:V↦{1,2,⋯,k} 满足对于 G 中的任 ...
- CCPC Wannafly Winter Camp Div2 部分题解
Day 1, Div 2, Prob. B - 吃豆豆 题目大意 wls有一个\(n\)行\(m\)列的棋盘,对于第\(i\)行第\(j\)列的格子,每过\(T[i][j]\)秒会在上面出现一个糖果, ...
- CCPC-Wannafly Winter Camp Day8 (Div2, onsite)
咕咕咕. camp补题. 传送门:https://www.zhixincode.com/contest/29/problems A.Aqours 题意:有一棵有根树,根节点为1,给出每个结点的父 ...
- CCPC-Wannafly Winter Camp Day3 (Div2, onsite)
Replay Dup4: 没想清楚就动手写? 写了两百行发现没用?想的还是不够仔细啊. 要有莽一莽的精神 X: 感觉今天没啥输出啊, 就推了个公式?抄了个板子, 然后就一直自闭A. 语文差,题目没理解 ...
- 2019 CCPC-Wannafly Winter Camp Day1 (Div2, onsite)
solve:4/11 补题:6/11 A 机器人 补题:zz 这是一道分类讨论的题目,有一个规律就是如果必须要从第一个区到第二个区,那么最多转区两次(1到2一次,2到1一次),然后分类讨论即可,只要细 ...
- 2019 CCPC-Wannafly Winter Camp Day7(Div2, onsite)
solve 6/11 补题: A.迷宫 Code:zz Thinking:zz kk 把每个节点的深度都处理出来,同一深度的点的冲突度为 (x-1),x为同层次点数减一. 然后冲突度不断下传(冲突度为 ...
- Wannafly Winter Camp Day8(Div1,onsite) E题 Souls-like Game 线段树 矩阵乘法
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog @ Problem:传送门 Portal 原题目描述在最下面. 简单的 ...
随机推荐
- git 清空所有commit记录方法
说明:例如将代码提交到git仓库,将一些敏感信息提交,所以需要删除提交记录以彻底清除提交信息,以得到一个干净的仓库且代码不变 1.Checkout git checkout --orphan late ...
- php学习八:封装
一:在php中,用class关键字来创建一个类,即进行封装:在类里面有成员属性和方法行为组成: 1.成员属性:用关键字var来声明,可以给初始值也可以不给;现在var废弃,用public来声明,pub ...
- ExtJS6的中sencha cmd中自动创建案例项目代码分析
在之前的博文中,我们按照sencha cmd的指点,在自己win7虚拟机上创建了一个案例项目,相当于创建了一个固定格式的文档目录结构,然后里面自动创建了一系列js代码.这是使用sencha cmd自动 ...
- 报错 ERROR in static/js/vendor.b3f56e9e0cd56988d890.js from UglifyJs
开发vux项目在引入 // 表单验证组件-start import zh_CN from 'vee-validate/dist/locale/zh_CN' import Validator from ...
- 心脏滴血HeartBleed漏洞研究及其POC
一.漏洞原理: 首先声明,我虽然能看懂C和C++的每一行代码,但是他们连在一起我就不知道什么鬼东西了.所以关于代码说理的部分只能参考其他大牛的博客了. /* 据说源码中有下面两条语句,反正我也没看过源 ...
- 服务器报错 500,请确保 ASP.NET State Service(ASP.NET 状态服务)已启动
报错信息: 解决方案: 开启此服务
- 在CentOS中使用 yum 安装MongoDB及服务器端配置
转自 http://blog.csdn.net/zhangfeng19880710/article/details/20166853 一.准备工作: 运行yum命令查看MongoDB的包信息 [roo ...
- IE各浏览器HACK
border:2px solid #00f; /*IE.ff的属性*/ border:2px solid #090\9; /* IE6/7/8的属性 */ border:2px solid #F90\ ...
- java如何计算两个日期之间相差多少天?
java如何计算两个日期之间相差多少天? public static void main(String [] args) { Date now = new Date(); Calendar cal = ...
- MySQL命令行基本命令操作
进入命令模式后, 显示所有数据库 show databases; 选定某个数据库 use 数据库名; 创建数据库 create database 数据库名; 删除数据库 drop table 数据库名 ...