2012 Asia Hangzhou Regional Contest
Friend Chains http://acm.hdu.edu.cn/showproblem.php?pid=4460
图的最远两点距离,任意选个点bfs,如果有不能到的点直接-1.然后对于所有距离最远的点都bfs一次。最坏n^2
邻接表
#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<map>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
const int M=;
char a[],b[];
map<string,int> name;
struct G{
struct E{
int v,next;
}e[M*];
int le,head[M];
void init(){
le=;
mt(head,-);
}
void add(int u,int v){
e[le].v=v;
e[le].next=head[u];
head[u]=le++;
}
}g;
int dist[M],id[M];
bool vis[M];
queue<int> q;
void bfs(int s){
mt(vis,);
mt(dist,-);
vis[s]=true;
dist[s]=;
while(!q.empty()) q.pop();
q.push(s);
while(!q.empty()){
int u=q.front();
q.pop();
for(int i=g.head[u];~i;i=g.e[i].next){
int v=g.e[i].v;
if(!vis[v]){
vis[v]=true;
dist[v]=dist[u]+;
q.push(v);
}
}
}
}
int main(){
int n,m;
while(~scanf("%d",&n),n){
name.clear();
for(int i=;i<n;i++){
scanf("%s",a);
name[(string)a]=i;
}
scanf("%d",&m);
g.init();
while(m--){
scanf("%s%s",a,b);
int u=name[(string)a];
int v=name[(string)b];
g.add(u,v);
g.add(v,u);
}
bfs();
bool flag=false;
for(int i=;i<n;i++){
if(dist[i]==-){
flag=true;
break;
}
}
if(flag){
puts("-1");
continue;
}
int big=;
for(int i=;i<n;i++){
big=max(big,dist[i]);
}
int ld=;
for(int i=;i<n;i++){
if(dist[i]==big){
id[ld++]=i;
}
}
int ans=;
for(int i=;i<ld;i++){
bfs(id[i]);
for(int j=;j<n;j++){
ans=max(ans,dist[j]);
}
}
printf("%d\n",ans);
}
return ;
}
vector竟然还快些
#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<map>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
const int M=;
char a[],b[];
map<string,int> name;
vector<int> g[M];
int dist[M],id[M];
bool vis[M];
queue<int> q;
void bfs(int s){
mt(vis,);
mt(dist,-);
vis[s]=true;
dist[s]=;
while(!q.empty()) q.pop();
q.push(s);
while(!q.empty()){
int u=q.front();
q.pop();
int len=g[u].size();
for(int i=;i<len;i++){
int v=g[u][i];
if(!vis[v]){
vis[v]=true;
dist[v]=dist[u]+;
q.push(v);
}
}
}
}
int main(){
int n,m;
while(~scanf("%d",&n),n){
name.clear();
for(int i=;i<n;i++){
scanf("%s",a);
name[(string)a]=i;
g[i].clear();
}
scanf("%d",&m);
while(m--){
scanf("%s%s",a,b);
int u=name[(string)a];
int v=name[(string)b];
g[u].push_back(v);
g[v].push_back(u);
}
bfs();
bool flag=false;
for(int i=;i<n;i++){
if(dist[i]==-){
flag=true;
break;
}
}
if(flag){
puts("-1");
continue;
}
int big=;
for(int i=;i<n;i++){
big=max(big,dist[i]);
}
int ld=;
for(int i=;i<n;i++){
if(dist[i]==big){
id[ld++]=i;
}
}
int ans=;
for(int i=;i<ld;i++){
bfs(id[i]);
for(int j=;j<n;j++){
ans=max(ans,dist[j]);
}
}
printf("%d\n",ans);
}
return ;
}
The Power of Xiangqi http://acm.hdu.edu.cn/showproblem.php?pid=4461
o(n)水题。每个旗子有权值,算一算权值比一比。注意至少1分。如果b和c有一个没有就扣一分。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
const int M=;
int sa[M],sb[M];
int val[]={,,,,,,};
int main(){
int t,n;
char op[];
while(~scanf("%d",&t)){
while(t--){
mt(sa,);
mt(sb,);
scanf("%d",&n);
while(n--){
scanf("%s",op);
sa[op[]-'A']++;
}
scanf("%d",&n);
while(n--){
scanf("%s",op);
sb[op[]-'A']++;
}
int suma=,sumb=;
for(int i=;i<;i++){
suma+=val[i]*sa[i];
sumb+=val[i]*sb[i];
}
if(!sa[]||!sa[]) suma--;
if(!sb[]||!sb[]) sumb--;
suma=max(,suma);
sumb=max(,sumb);
if(suma>sumb){
puts("red");
}
else if(suma<sumb){
puts("black");
}
else{
puts("tie");
}
}
}
return ;
}
Scaring the Birds http://acm.hdu.edu.cn/showproblem.php?pid=4462
二进制枚举放的情况,判断能否覆盖所有的玉米,注意能放的地方已经没有玉米了,不用判这个点。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
const int inf=0x3f3f3f3f;
const int M=;
bool mat[M][M];
struct G{
int x,y,r;
}p[];
int one(int x){
int res=;
while(x){
if(x&) res++;
x>>=;
}
return res;
}
int used[];
int main(){
int n,m;
while(~scanf("%d",&n),n){
scanf("%d",&m);
mt(mat,);
for(int i=;i<m;i++){
scanf("%d%d",&p[i].x,&p[i].y);
mat[p[i].x][p[i].y]=true;
}
for(int i=;i<m;i++){
scanf("%d",&p[i].r);
}
int all=<<m;
int ans=inf;
for(int i=;i<all;i++){
int now=one(i);
if(now>=ans) continue;
int lu=;
for(int j=;j<m;j++){
if((i>>j)&){
used[lu++]=j;
}
}
bool flag=true;
for(int x=;x<=n;x++){
for(int y=;y<=n;y++){
if(mat[x][y]) continue;
bool ok=false;
for(int j=;j<lu;j++){
int id=used[j];
if(abs(x-p[id].x)+abs(y-p[id].y)<=p[id].r){
ok=true;
break;
}
}
if(!ok){
flag=false;
break;
}
}
if(!flag) break;
}
if(flag){
ans=min(ans,now);
}
}
if(ans==inf) ans=-;
printf("%d\n",ans);
}
return ;
}
Outlets http://acm.hdu.edu.cn/showproblem.php?pid=4463
最小生成树,必须有一条边先加进去,那就加个权值为零的,然后ans直接加上边权,这样就保证一定有这个边了。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
const int M=;
class Kruskal { ///最小生成树(无向图)o(ME*logME)
typedef double typec;///边权的类型
static const int ME=M*M;///边的个数
static const int MV=M;///点的个数
class UnionFindSet { ///并查集
int par[MV];
public:
void init() {
mt(par,-);
}
int getroot(int x) {
int i=x,j=x,temp;
while(par[i]>=) i=par[i];
while(j!=i) {
temp=par[j];
par[j]=i;
j=temp;
}
return i;
}
bool unite(int x,int y) {
int p=getroot(x);
int q=getroot(y);
if(p==q)return false;
if(par[p]>par[q]) {
par[q]+=par[p];
par[p]=q;
} else {
par[p]+=par[q];
par[q]=p;
}
return true;
}
} f;
struct E {
int u,v;
typec w;
friend bool operator < (E a,E b) {
return a.w<b.w;
}
} e[ME];
int le,num,n;
typec res;
public:
void init(int tn){///传入点的个数
n=tn;
le=res=;
f.init();
num=;
}
void add(int u,int v,typec w) {
e[le].u=u;
e[le].v=v;
e[le].w=w;
le++;
}
typec solve(){///返回-1不连通
sort(e,e+le);
for(int i=; i<le&&num<n; i++) {
if(f.unite(e[i].u,e[i].v)) {
num++;
res+=e[i].w;
}
}
if(num<n) res=-;
return res;
}
}gx;
struct point{
double x,y;
}p[M];
double Distance(point p1,point p2) {
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
int main(){
int n,x,y;
while(~scanf("%d",&n),n){
scanf("%d%d",&x,&y);
for(int i=;i<n;i++){
scanf("%lf%lf",&p[i].x,&p[i].y);
}
gx.init(n);
x--;
y--;
if(x>y) swap(x,y);
for(int i=;i<n;i++){
for(int j=i+;j<n;j++){
if(i==x&&j==y){
gx.add(i,j,);
}
else{
gx.add(i,j,Distance(p[i],p[j]));
}
}
}
double ans=Distance(p[x],p[y]);
ans+=gx.solve();
printf("%.2f\n",ans);
}
return ;
}
Stealing a Cake http://acm.hdu.edu.cn/showproblem.php?pid=4454
从起点走到圆上任意一点,然后从那个点走到矩形上任意一点。求总的路程最小。
考虑起点到圆,只可能走两个切线之间,所以就有一个角度的限制,可以枚举这个角度,然后求出和圆的交点,然后再用这个交点求出到矩形最近距离,所有情况取个最小值。

设起点到圆心的直线sc与坐标轴夹角α。设sc与切线夹角θ 。则我们只要枚举0到θ,就能算出一个交点,注意,要取靠近s的交点。然后通过交点可以算出关于se直线的对称点。这样便枚举了所有可能的点的走法。
当前枚举到的直线斜率是 tan(θ+α) 又知道s经过这个直线,所以就可以算出直线上任意一点。然后就算直线和圆的交点,然后取近的交点,分别和矩形四个边算距离,也是取最小。对称点也同理可得。
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const double eps=1e-;
const double pi=acos(-1.0);
const int inf=0x3f3f3f3f;
struct point {
double x,y;
} s,c,p[]; ///起点,圆心,矩形
double Distance(point p1,point p2) {
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
point intersection(point u1,point u2,point v1,point v2) {
point ret=u1;
double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x)) /((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
ret.x+=(u2.x-u1.x)*t;
ret.y+=(u2.y-u1.y)*t;
return ret;
}
void intersection_line_circle(point c,double r,point l1,point l2,point& p1,point& p2) {
point p=c;
double t;
p.x+=l1.y-l2.y;
p.y+=l2.x-l1.x;
p=intersection(p,c,l1,l2);
t=sqrt(r*r-Distance(p,c)*Distance(p,c))/Distance(l1,l2);
p1.x=p.x+(l2.x-l1.x)*t;
p1.y=p.y+(l2.y-l1.y)*t;
p2.x=p.x-(l2.x-l1.x)*t;
p2.y=p.y-(l2.y-l1.y)*t;
}
double xmult(point p1,point p2,point p0) {
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
double disptoseg(point p,point l1,point l2) {
point t=p;
t.x+=l1.y-l2.y,t.y+=l2.x-l1.x;
if (xmult(l1,t,p)*xmult(l2,t,p)>eps) return Distance(p,l1)<Distance(p,l2)?Distance(p,l1):Distance(p,l2);
return fabs(xmult(p,l1,l2))/Distance(l1,l2);
}
point ptoseg(point p,point l1,point l2) {
point t=p;
t.x+=l1.y-l2.y,t.y+=l2.x-l1.x;
if (xmult(l1,t,p)*xmult(l2,t,p)>eps) return Distance(p,l1)<Distance(p,l2)?l1:l2;
return intersection(p,t,l1,l2);
}
double jiaotoju(point pp) {
double res=inf;
for(int i=; i<; i++) {
res=min(res,disptoseg(pp,p[i],p[i+]));
}
return res;
}
int main() {
double r,x1,x2,y1,y2;
while(~scanf("%lf%lf",&s.x,&s.y),s.x!=||s.y!=) {
scanf("%lf%lf%lf",&c.x,&c.y,&r);
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
if(x1>x2) swap(x1,x2);
if(y1>y2) swap(y1,y2);
p[].x=x1;
p[].y=y1;
p[].x=x2;
p[].y=y1;
p[].x=x2;
p[].y=y2;
p[].x=x1;
p[].y=y2;
p[]=p[];
double afa,tanafa;///起点到圆心的直线与x轴夹角,就是直线斜率
if(fabs(s.x-c.x)<eps) {
afa=*pi/;
} else {
tanafa=(s.y-c.y)/(s.x-c.x);
afa=atan(tanafa);
}
double xita,sinxita;///起点到圆心的直线与切线夹角
sinxita=r/Distance(s,c);
xita=asin(sinxita);
double bigxita=xita;
double add=bigxita/;
double delx,dely,dist1,dist2;
point L2,J1,J2,center;
double ans=inf,sum;
for(double x=; x<=bigxita; x+=add) {
xita=x+afa;
delx=;
dely=tan(xita)*delx;
L2.x=s.x+delx;
L2.y=s.y+dely;
intersection_line_circle(c,r,s,L2,J1,J2);
dist1=Distance(s,J1);
dist2=Distance(s,J2);
if(dist1>dist2) {
swap(dist1,dist2);
swap(J1,J2);
}
ans=min(ans,dist1+jiaotoju(J1));
center=ptoseg(J1,s,c);
J2.x=*center.x-J1.x;
J2.y=*center.y-J1.y;
ans=min(ans,dist1+jiaotoju(J2));
}
printf("%.2f\n",ans);
}
return ;
}
事实上从上面的枚举可以看出,正解只有一个,并且一定在α-θ到α+θ之间。并且偏离正解越远,肯定距离越长,那么就是一个开口向上的二次函数,就可以对这个区间三分查找。
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
const double eps=1e-;
const double pi=acos(-1.0);
const int inf=0x3f3f3f3f;
struct point {
double x,y;
} s,c,p[]; ///起点,圆心,矩形
double Distance(point p1,point p2) {
return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
}
point intersection(point u1,point u2,point v1,point v2) {
point ret=u1;
double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x)) /((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
ret.x+=(u2.x-u1.x)*t;
ret.y+=(u2.y-u1.y)*t;
return ret;
}
void intersection_line_circle(point c,double r,point l1,point l2,point& p1,point& p2) {
point p=c;
double t;
p.x+=l1.y-l2.y;
p.y+=l2.x-l1.x;
p=intersection(p,c,l1,l2);
t=sqrt(r*r-Distance(p,c)*Distance(p,c))/Distance(l1,l2);
p1.x=p.x+(l2.x-l1.x)*t;
p1.y=p.y+(l2.y-l1.y)*t;
p2.x=p.x-(l2.x-l1.x)*t;
p2.y=p.y-(l2.y-l1.y)*t;
}
double xmult(point p1,point p2,point p0) {
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
double disptoseg(point p,point l1,point l2) {
point t=p;
t.x+=l1.y-l2.y,t.y+=l2.x-l1.x;
if (xmult(l1,t,p)*xmult(l2,t,p)>eps) return Distance(p,l1)<Distance(p,l2)?Distance(p,l1):Distance(p,l2);
return fabs(xmult(p,l1,l2))/Distance(l1,l2);
}
point ptoseg(point p,point l1,point l2) {
point t=p;
t.x+=l1.y-l2.y,t.y+=l2.x-l1.x;
if (xmult(l1,t,p)*xmult(l2,t,p)>eps) return Distance(p,l1)<Distance(p,l2)?l1:l2;
return intersection(p,t,l1,l2);
}
double jiaotoju(point pp) {
double res=inf;
for(int i=; i<; i++) {
res=min(res,disptoseg(pp,p[i],p[i+]));
}
return res;
}
double r;
double f(double xita) {
double delx,dely,dist1,dist2;
point L2,J1,J2,center;
delx=;
dely=tan(xita)*delx;
L2.x=s.x+delx;
L2.y=s.y+dely;
intersection_line_circle(c,r,s,L2,J1,J2);
dist1=Distance(s,J1);
dist2=Distance(s,J2);
if(dist1>dist2) {
swap(dist1,dist2);
swap(J1,J2);
}
double res=dist1+jiaotoju(J1);
center=ptoseg(J1,s,c);
J2.x=*center.x-J1.x;
J2.y=*center.y-J1.y;
res=min(res,dist1+jiaotoju(J2));
return res;
}
double TernarySearch(double L,double R) { /// 三分查找
while(R-L>eps) {
double LL=(L*+R)/;
double RR=(L+R*)/;
if(f(LL)<f(RR)) ///f为对应的值 这里求最小值
R=RR;
else
L=LL;
}
return L;
}
int main() {
double x1,x2,y1,y2;
while(~scanf("%lf%lf",&s.x,&s.y),s.x!=||s.y!=) {
scanf("%lf%lf%lf",&c.x,&c.y,&r);
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
if(x1>x2) swap(x1,x2);
if(y1>y2) swap(y1,y2);
p[].x=x1;
p[].y=y1;
p[].x=x2;
p[].y=y1;
p[].x=x2;
p[].y=y2;
p[].x=x1;
p[].y=y2;
p[]=p[];
double afa,tanafa;///起点到圆心的直线与x轴夹角,就是直线斜率
if(fabs(s.x-c.x)<eps) {
afa=*pi/;
} else {
tanafa=(s.y-c.y)/(s.x-c.x);
afa=atan(tanafa);
}
double xita,sinxita;///起点到圆心的直线与切线夹角
sinxita=r/Distance(s,c);
xita=asin(sinxita);
double ans=TernarySearch(afa-xita,afa+xita);
printf("%.2f\n",f(ans));
}
return ;
}
Shoot the Airplane http://acm.hdu.edu.cn/showproblem.php?pid=4458
题意:子弹竖直上抛运动,多边形水平匀速运动。问是否能有一个时间点使得子弹在多边形内。
暴力枚举时间,有了时间就知道子弹的位置和多边形的位置,然后判断点在多边形内就行。注意边上的不算。
#include<cstdio>
#include<cstdlib>
const double eps=1e-;
struct point{
double x,y;
}p[],now[],s;
class PolygonJudge { //任意多边形判定
#define zero(x) (((x)>0?(x):-(x))<eps)
double xmult(point p1,point p2,point p0) {
return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
}
public:
int inside_polygon(point q,int n,point p[],int on_edge=) {//判点在任意多边形内,顶点按顺时针或逆时针给出
point q2;
const int offset=;//on_edge表示点在多边形边上时的返回值,offset为多边形坐标上限
int i=,cnt;
while (i<n)
for (cnt=i=,q2.x=rand()+offset,q2.y=rand()+offset; i<n; i++)
if(zero(xmult(q,p[i],p[(i+)%n]))&&(p[i].x-q.x)*(p[(i+)%n].x-q.x)<eps&&(p[i].y-q.y)*(p[(i+)%n].y-q.y)<eps)
return on_edge;
else if (zero(xmult(q,q2,p[i])))
break;
else if (xmult(q,p[i],q2)*xmult(q,p[(i+)%n],q2)<-eps&&xmult(p[i],q,p[(i+)%n])*xmult(p[i],q2,p[(i+)%n])<-eps)
cnt++;
return cnt&;
}
} gx;
int main(){
int v,b,g,n;
while(~scanf("%d%d%d",&v,&b,&g),v|b|g){
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%lf%lf",&p[i].x,&p[i].y);
}
double bigt;
if(g){
bigt=2.0*b/g;
}
else{
bigt=120.0/b;
}
double add=bigt/;
bool flag=false;
double ans;
for(double t=;t<=bigt;t+=add){
s.x=;
s.y=b*t-0.5*g*t*t;
for(int i=;i<n;i++){
now[i]=p[i];
now[i].x+=v*t;
}
if(gx.inside_polygon(s,n,now,)){
flag=true;
ans=t;
break;
}
}
if(!flag) puts("Miss!");
else{
printf("%.2f\n",ans);
}
}
return ;
}
还有一种解法,相对运动的思想,多边形向左运动,相当于多边形不动,子弹向右有一样的速度,那么子弹就是个抛物线,求抛物线是否进入多边形内。至今没敲出来,先放一放。
end
2012 Asia Hangzhou Regional Contest的更多相关文章
- HDU-4432-Sum of divisors ( 2012 Asia Tianjin Regional Contest )
Sum of divisors Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 4436 str2int(后缀自动机)(2012 Asia Tianjin Regional Contest)
Problem Description In this problem, you are given several strings that contain only digits from '0' ...
- HDU 3685 Rotational Painting(多边形质心+凸包)(2010 Asia Hangzhou Regional Contest)
Problem Description Josh Lyman is a gifted painter. One of his great works is a glass painting. He c ...
- HDU 3686 Traffic Real Time Query System(双连通分量缩点+LCA)(2010 Asia Hangzhou Regional Contest)
Problem Description City C is really a nightmare of all drivers for its traffic jams. To solve the t ...
- 2012 Asia Chengdu Regional Contest
Browsing History http://acm.hdu.edu.cn/showproblem.php?pid=4464 签到 #include<cstdio> #include&l ...
- 2012 Asia JinHua Regional Contest
Draw Something http://acm.hdu.edu.cn/showproblem.php?pid=4450 o(n)统计输入每个数的平方和. #include<cstdio> ...
- 2013 Asia Hangzhou Regional Contest
Lights Against Dudely http://acm.hdu.edu.cn/showproblem.php?pid=4770 15个位置,所以可以暴力枚举那些放,对于放的再暴力枚举哪个转, ...
- HDU 4433 locker 2012 Asia Tianjin Regional Contest 减少国家DP
意甲冠军:给定的长度可达1000数的顺序,图像password像锁.可以上下滑动,同时会0-9周期. 每个操作.最多三个数字连续操作.现在给出的起始序列和靶序列,获得操作的最小数量,从起始序列与靶序列 ...
- HDU 4468 Spy(KMP+贪心)(2012 Asia Chengdu Regional Contest)
Description “Be subtle! Be subtle! And use your spies for every kind of business. ”― Sun Tzu“A spy w ...
随机推荐
- Cocos2d-JS自定义粒子系统
除了使用Cocos2d-JS的11种内置粒子系统外,我们还可以通过创建ParticleSystem对象,并设置属性实现自定义粒子系统,通过这种方式完全可以实现我们说需要的各种效果的粒子系统.使用Par ...
- MVC 模型js远程校验的使用方法
我们在网站注册的时候往往需要在用户注册完毕的时候显示用户名是否可用,这就要用到模型的远程校验了.具体如下. [Required(ErrorMessage = "用户名不能为空"), ...
- UI4_UIToolBar
// // AppDelegate.m // UI4_UIToolBar // // Created by zhangxueming on 15/7/6. // Copyright (c) 2015年 ...
- SharedSDK微信分享不成功,分享之后没有反应
对于一般来说,使用SharedSDK的时候,分享不成功不外乎下面几个原因: 1.测试没有打包2.打包的keystore跟微信开放平台上面的不一致, 导致MD5码不一致3.分享参数错误4.应用没有审核通 ...
- Windows Phone 8 蓝牙编程
蓝牙是手机的近距离无限传输的技术,在之前的Windows Phone 7系统手机里面仅支持蓝牙耳机功能,并不支持蓝牙文件信息传输,那么在Windows Phone 8手机里面将全面支持蓝牙技术,并且提 ...
- .NET中的标识符、关键字 以及 .NET中的命名规范
1.关键字 C#定义了一些关键字(public/static/void/class/int/string),这些关键字是构成C#基本语法用的. VS中蓝色字的才是关键字. Main.String.Co ...
- 锋利的jquery-DOM操作
1 查找节点 ① 可根据jquery选择器来完成节点查找 ② 可用.text()获取节点的文本内容 ③ 可用.attr("attr")获取属性value 2 创建节点 ① 可用jq ...
- Java包的命名规则
按照惯例,包申明遵循特定的格式.虽然不是严格要求的Java语法,如果不遵循格式要求,大多数的Java认为你是不懂Java. 从右到左的顺序是: 1.systaxExample表明包的本地名称. 2.e ...
- 【转】CSS实现兼容性的渐变背景(gradient)效果
一.有点俗态的开场白 要是两年前,实现“兼容性的渐变效果”这个说法估计不会被提出来的,那个时候,说起渐变背景,想到的多半是IE的渐变滤镜,其他浏览器尚未支持,但是,在对CSS3支持日趋完善的今天,实现 ...
- 使用tortoise git管理gitolite版本库
gitolite-admin是用于管理git版本库的版本库,将其从服务器上clone下来. 使用tortoise git clone的时候需要指定私钥,私钥的格式是ppk的,需要使用putty的PUT ...