【BZOJ1501】【NOI2005】智慧珠游戏(搜索)
[BZOJ1501][NOI2005]智慧珠游戏(搜索)
题面
我要一改我懒惰的作风
这道题目必须放题面
Description
Input
文件中包含初始的盘件描述,一共有10行,第i行有i个字符。
如果第i行的第j个字符是字母”A”至”L”中的一个,则表示第i行第j列的格子上已经放了零件,零件的编号为对应的字母。
如果第i行的第j个字符是”.”,则表示第i行第j列的格子上没有放零件。
输入保证预放的零件已摆放在盘件中。
Output
如果能找到解,向输出文件打印10行,为放完全部12个零件后的布局。
其中,第i行应包含i个字符,第i行的第j个字符表示第i行第j列的格子上放的是哪个零件。
如果无解,输出单独的一个字符串‘No solution’(不要引号,请注意大小写)。
所有的数据保证最多只有一组解。
Sample Input
.
..
...
....
.....
.....C
...CCC.
EEEHH...
E.HHH....
E.........
Sample Output
B
BK
BKK
BJKK
JJJDD
GJGDDC
GGGCCCI
EEEHHIIA
ELHHHIAAF
ELLLLIFFFF
题解
搜索练习题?
出题人丧心病狂?
这就是人性的沦落?
毒瘤搜索题简直变态。。。
题解一定很简单
把每种零件的旋转全部搞出来
然后爆搜一下就行了
多简单啊
多简单啊....
多.....简单....啊..........
多......................简.......单..........................啊................
特别注意一下第五个测试点
.
..
...
....
.....
......
.......
.......J
......JJJ
.......J..
如果只是单纯的爆搜判断\(No solution\)会\(TLE\)
可以提前算出每个联通块的大小,如果小于\(3\)判无解,这样就能够\(AC\)了
这是我人生写的最长的代码(\(11kb\))
没有之一
如果不会写这道题目,请仔细研究代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define ll long long
#define RG register
const int PY=20;
int vis[500][500];
bool used[200];
bool Try[500][500];
int trn[13]={0,4,2,8,1,4,8,4,8,8,1,4,8};
void outp()
{
for(int i=1;i<=10;++i,puts(""))
for(int j=1;j<=i;++j)
putchar(vis[i][j+PY]+64);
}
bool blk(int x,int y,int k,int fy)
{
if(k==1)
{
if(fy==1)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y]);
if(fy==2)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y+1]);
if(fy==3)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y-1]);
if(fy==4)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y+1]);
}
if(k==2)
{
if(fy==1)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x][y+3]);
if(fy==2)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+3][y]);
}
if(k==3)
{
if(fy==1)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x+1][y]);
if(fy==2)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y+1]+vis[x+2][y+1]);
if(fy==3)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y-1]+vis[x+1][y-2]);
if(fy==4)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+2][y+1]);
if(fy==5)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y+1]+vis[x+1][y+2]);
if(fy==6)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y]+vis[x+2][y]);
if(fy==7)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x+1][y+2]);
if(fy==8)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+2][y-1]);
}
if(k==4)
{
if(fy==1)return !(vis[x][y]+vis[x+1][y]+vis[x][y+1]+vis[x+1][y+1]);
}
if(k==5)
{
if(fy==1)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+2][y+1]+vis[x+2][y+2]);
if(fy==2)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x+1][y]+vis[x+2][y]);
if(fy==3)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x+1][y+2]+vis[x+2][y+2]);
if(fy==4)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+2][y-1]+vis[x+2][y-2]);
}
if(k==6)
{
if(fy==1)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x][y+3]+vis[x+1][y+1]);
if(fy==2)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+3][y]+vis[x+1][y-1]);
if(fy==3)return !(vis[x][y]+vis[x+1][y+1]+vis[x+1][y-1]+vis[x+1][y]+vis[x+1][y-2]);
if(fy==4)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+3][y]+vis[x+2][y+1]);
if(fy==5)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x][y+3]+vis[x+1][y+2]);
if(fy==6)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+3][y]+vis[x+2][y-1]);
if(fy==7)return !(vis[x][y]+vis[x+1][y-1]+vis[x+1][y]+vis[x+1][y+1]+vis[x+1][y+2]);
if(fy==8)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+3][y]+vis[x+1][y+1]);
}
if(k==7)
{
if(fy==1)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x+1][y]+vis[x+1][y+2]);
if(fy==2)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y+1]+vis[x+2][y+1]+vis[x+2][y]);
if(fy==3)return !(vis[x][y]+vis[x][y+2]+vis[x+1][y]+vis[x+1][y+1]+vis[x+1][y+2]);
if(fy==4)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y]+vis[x+2][y]+vis[x+2][y+1]);
}
if(k==8)
{
if(fy==1)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x+1][y]+vis[x+1][y+1]);
if(fy==2)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y]+vis[x+1][y+1]+vis[x+2][y+1]);
if(fy==3)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y-1]+vis[x+1][y]+vis[x+1][y+1]);
if(fy==4)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y+1]+vis[x+2][y]+vis[x+2][y+1]);
if(fy==5)return !(vis[x][y]+vis[x+1][y]+vis[x][y+1]+vis[x+1][y+1]+vis[x+1][y+2]);
if(fy==6)return !(vis[x][y]+vis[x+1][y]+vis[x][y+1]+vis[x+1][y+1]+vis[x+2][y]);
if(fy==7)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x+1][y+1]+vis[x+1][y+2]);
if(fy==8)return !(vis[x][y]+vis[x+1][y-1]+vis[x+1][y]+vis[x+2][y-1]+vis[x+2][y]);
}
if(k==9)
{
if(fy==1)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x+1][y+2]+vis[x+1][y+3]);
if(fy==2)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+2][y-1]+vis[x+3][y-1]);
if(fy==3)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y+1]+vis[x+1][y+2]+vis[x+1][y+3]);
if(fy==4)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y-1]+vis[x+2][y-1]+vis[x+3][y-1]);
if(fy==5)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y]+vis[x+1][y-1]+vis[x+1][y-2]);
if(fy==6)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+2][y+1]+vis[x+3][y+1]);
if(fy==7)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y-1]+vis[x][y+1]+vis[x][y+2]);
if(fy==8)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y+1]+vis[x+2][y+1]+vis[x+3][y+1]);
}
if(k==10)
{
if(fy==1)return !(vis[x][y]+vis[x+1][y-1]+vis[x+1][y]+vis[x+1][y+1]+vis[x+2][y]);
}
if(k==11)
{
if(fy==1)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y+1]+vis[x+2][y+1]+vis[x+2][y+2]);
if(fy==2)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y]+vis[x+1][y-1]+vis[x+2][y-1]);
if(fy==3)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y+1]+vis[x+1][y+2]+vis[x+2][y+2]);
if(fy==4)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y-1]+vis[x+2][y-1]+vis[x+2][y-2]);
}
if(k==12)
{
if(fy==1)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x][y+3]+vis[x+1][y]);
if(fy==2)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y+1]+vis[x+2][y+1]+vis[x+3][y+1]);
if(fy==3)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y-1]+vis[x+1][y-2]+vis[x+1][y-3]);
if(fy==4)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+3][y]+vis[x+3][y+1]);
if(fy==5)return !(vis[x][y]+vis[x+1][y]+vis[x+1][y+1]+vis[x+1][y+2]+vis[x+1][y+3]);
if(fy==6)return !(vis[x][y]+vis[x][y+1]+vis[x+1][y]+vis[x+2][y]+vis[x+3][y]);
if(fy==7)return !(vis[x][y]+vis[x][y+1]+vis[x][y+2]+vis[x][y+3]+vis[x+1][y+3]);
if(fy==8)return !(vis[x][y]+vis[x+1][y]+vis[x+2][y]+vis[x+3][y]+vis[x+3][y-1]);
}
return false;
}
void Equ(int x,int y,int k,int fy,int w)
{
if(k==1)
{
if(fy==1)vis[x][y]=vis[x][y+1]=vis[x+1][y]=w;
if(fy==2)vis[x][y]=vis[x][y+1]=vis[x+1][y+1]=w;
if(fy==3)vis[x][y]=vis[x+1][y]=vis[x+1][y-1]=w;
if(fy==4)vis[x][y]=vis[x+1][y]=vis[x+1][y+1]=w;
}
if(k==2)
{
if(fy==1)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x][y+3]=w;
if(fy==2)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+3][y]=w;
}
if(k==3)
{
if(fy==1)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x+1][y]=w;
if(fy==2)vis[x][y]=vis[x][y+1]=vis[x+1][y+1]=vis[x+2][y+1]=w;
if(fy==3)vis[x][y]=vis[x+1][y]=vis[x+1][y-1]=vis[x+1][y-2]=w;
if(fy==4)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+2][y+1]=w;
if(fy==5)vis[x][y]=vis[x+1][y]=vis[x+1][y+1]=vis[x+1][y+2]=w;
if(fy==6)vis[x][y]=vis[x][y+1]=vis[x+1][y]=vis[x+2][y]=w;
if(fy==7)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x+1][y+2]=w;
if(fy==8)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+2][y-1]=w;
}
if(k==4)
{
if(fy==1)vis[x][y]=vis[x+1][y]=vis[x][y+1]=vis[x+1][y+1]=w;
}
if(k==5)
{
if(fy==1)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+2][y+1]=vis[x+2][y+2]=w;
if(fy==2)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x+1][y]=vis[x+2][y]=w;
if(fy==3)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x+1][y+2]=vis[x+2][y+2]=w;
if(fy==4)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+2][y-1]=vis[x+2][y-2]=w;
}
if(k==6)
{
if(fy==1)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x][y+3]=vis[x+1][y+1]=w;
if(fy==2)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+3][y]=vis[x+1][y-1]=w;
if(fy==3)vis[x][y]=vis[x+1][y+1]=vis[x+1][y-1]=vis[x+1][y]=vis[x+1][y-2]=w;
if(fy==4)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+3][y]=vis[x+2][y+1]=w;
if(fy==5)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x][y+3]=vis[x+1][y+2]=w;
if(fy==6)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+3][y]=vis[x+2][y-1]=w;
if(fy==7)vis[x][y]=vis[x+1][y-1]=vis[x+1][y]=vis[x+1][y+1]=vis[x+1][y+2]=w;
if(fy==8)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+3][y]=vis[x+1][y+1]=w;
}
if(k==7)
{
if(fy==1)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x+1][y]=vis[x+1][y+2]=w;
if(fy==2)vis[x][y]=vis[x][y+1]=vis[x+1][y+1]=vis[x+2][y+1]=vis[x+2][y]=w;
if(fy==3)vis[x][y]=vis[x][y+2]=vis[x+1][y]=vis[x+1][y+1]=vis[x+1][y+2]=w;
if(fy==4)vis[x][y]=vis[x][y+1]=vis[x+1][y]=vis[x+2][y]=vis[x+2][y+1]=w;
}
if(k==8)
{
if(fy==1)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x+1][y]=vis[x+1][y+1]=w;
if(fy==2)vis[x][y]=vis[x][y+1]=vis[x+1][y]=vis[x+1][y+1]=vis[x+2][y+1]=w;
if(fy==3)vis[x][y]=vis[x][y+1]=vis[x+1][y-1]=vis[x+1][y]=vis[x+1][y+1]=w;
if(fy==4)vis[x][y]=vis[x+1][y]=vis[x+1][y+1]=vis[x+2][y]=vis[x+2][y+1]=w;
if(fy==5)vis[x][y]=vis[x+1][y]=vis[x][y+1]=vis[x+1][y+1]=vis[x+1][y+2]=w;
if(fy==6)vis[x][y]=vis[x+1][y]=vis[x][y+1]=vis[x+1][y+1]=vis[x+2][y]=w;
if(fy==7)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x+1][y+1]=vis[x+1][y+2]=w;
if(fy==8)vis[x][y]=vis[x+1][y-1]=vis[x+1][y]=vis[x+2][y-1]=vis[x+2][y]=w;
}
if(k==9)
{
if(fy==1)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x+1][y+2]=vis[x+1][y+3]=w;
if(fy==2)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+2][y-1]=vis[x+3][y-1]=w;
if(fy==3)vis[x][y]=vis[x][y+1]=vis[x+1][y+1]=vis[x+1][y+2]=vis[x+1][y+3]=w;
if(fy==4)vis[x][y]=vis[x+1][y]=vis[x+1][y-1]=vis[x+2][y-1]=vis[x+3][y-1]=w;
if(fy==5)vis[x][y]=vis[x][y+1]=vis[x+1][y]=vis[x+1][y-1]=vis[x+1][y-2]=w;
if(fy==6)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+2][y+1]=vis[x+3][y+1]=w;
if(fy==7)vis[x][y]=vis[x+1][y]=vis[x+1][y-1]=vis[x][y+1]=vis[x][y+2]=w;
if(fy==8)vis[x][y]=vis[x+1][y]=vis[x+1][y+1]=vis[x+2][y+1]=vis[x+3][y+1]=w;
}
if(k==10)
{
if(fy==1)vis[x][y]=vis[x+1][y-1]=vis[x+1][y]=vis[x+1][y+1]=vis[x+2][y]=w;
}
if(k==11)
{
if(fy==1)vis[x][y]=vis[x+1][y]=vis[x+1][y+1]=vis[x+2][y+1]=vis[x+2][y+2]=w;
if(fy==2)vis[x][y]=vis[x][y+1]=vis[x+1][y]=vis[x+1][y-1]=vis[x+2][y-1]=w;
if(fy==3)vis[x][y]=vis[x][y+1]=vis[x+1][y+1]=vis[x+1][y+2]=vis[x+2][y+2]=w;
if(fy==4)vis[x][y]=vis[x+1][y]=vis[x+1][y-1]=vis[x+2][y-1]=vis[x+2][y-2]=w;
}
if(k==12)
{
if(fy==1)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x][y+3]=vis[x+1][y]=w;
if(fy==2)vis[x][y]=vis[x][y+1]=vis[x+1][y+1]=vis[x+2][y+1]=vis[x+3][y+1]=w;
if(fy==3)vis[x][y]=vis[x+1][y]=vis[x+1][y-1]=vis[x+1][y-2]=vis[x+1][y-3]=w;
if(fy==4)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+3][y]=vis[x+3][y+1]=w;
if(fy==5)vis[x][y]=vis[x+1][y]=vis[x+1][y+1]=vis[x+1][y+2]=vis[x+1][y+3]=w;
if(fy==6)vis[x][y]=vis[x][y+1]=vis[x+1][y]=vis[x+2][y]=vis[x+3][y]=w;
if(fy==7)vis[x][y]=vis[x][y+1]=vis[x][y+2]=vis[x][y+3]=vis[x+1][y+3]=w;
if(fy==8)vis[x][y]=vis[x+1][y]=vis[x+2][y]=vis[x+3][y]=vis[x+3][y-1]=w;
}
}
void dfs(int x,int y)
{
if(x==11){outp();exit(0);}
if(y-PY>x){dfs(x+1,1+PY);return;}
if(vis[x][y]){dfs(x,y+1);return;}
for(int i=1;i<=12;++i)
{
if(used[i])continue;
for(int j=1;j<=trn[i];++j)
if(blk(x,y,i,j))
{
Equ(x,y,i,j,i);
used[i]=true;
dfs(x,y+1);
Equ(x,y,i,j,0);
used[i]=false;
}
}
}
int ret=0;
void Fill(int x,int y)
{
if(vis[x][y])return;
if(Try[x][y])return;
ret++;
Try[x][y]=true;
Fill(x+1,y);Fill(x-1,y);Fill(x,y+1);Fill(x,y-1);
}
int main()
{
for(int i=0;i<=40;++i)
for(int j=0;j<=40;++j)
vis[i][j]=2222;
char ch[50];
for(int i=1;i<=10;++i)
{
scanf("%s",ch+1);
for(int j=1;j<=i;++j)
if(ch[j]=='.')vis[i][j+PY]=0;
else used[ch[j]-64]=true,vis[i][j+PY]=ch[j]-64;
}
for(int i=1;i<=10;++i)
for(int j=1;j<=i;++j)
if(!Try[i][j+PY]&&!vis[i][j+PY])
{
ret=0;
Fill(i,j+PY);
if(ret<3){puts("No solution");return 0;}
}
dfs(1,1+PY);
puts("No solution");
return 0;
}
【BZOJ1501】【NOI2005】智慧珠游戏(搜索)的更多相关文章
- 【搜索好题】bzoj1501 [NOI2005]智慧珠游戏
bzoj1501 [NOI2005]智慧珠游戏 搜索苟逼题系列. 暴力枚举每一种情况(包括旋转翻转全都考虑在内)然后码出代码. (正解似乎不是这样子的) 那年好像还有平衡树苟逼题维护数列233333心 ...
- [BZOJ1501][NOI2005] 智慧珠游戏
Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符.如果第i行的第j个字符是字母”A”至”L”中的一个,则表示第i行第j列的格子上已经放了零件,零件的编号为对应的字母.如果第i行的第 ...
- bzoj 1501: [NOI2005]智慧珠游戏 Dancing Link
1501: [NOI2005]智慧珠游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 190 Solved: 122[Submit][Status] ...
- 洛谷 P4205 [NOI2005]智慧珠游戏 DFS
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P4205 [NOI2005]智慧珠游戏 题目描述 智慧 ...
- Luogu P4205 [NOI2005]智慧珠游戏
国内少有的可以练习神仙算法--DLX的好题怎么可以被爆搜埋没呢? 看到这题没有DLX的题解所以写一篇,不过貌似我实现的太弱(构图太慢)所以速度上不是很快. 下面开始讲题,但请保证你要先学会DLX.(d ...
- BZOJ 1501 智慧珠游戏
Description Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符.如果第i行的第j个字符是字母”A”至”L”中的一个,则表示第i行第j列的格子上已经放了零件,零件的编号为对 ...
- ios版弹珠游戏源码
这个是我们比较喜欢玩的一直小游戏的,ios版弹珠游戏源码,该游戏源码来着IOS教程网其他网友提供上传的,大家可以了解一下吧. nore_js_op> <ignore_js_op&g ...
- zzulioj--1790-- 弹珠游戏(数学水题!)
弹珠游戏 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 14 Solved: 10 SubmitStatusWeb Board Descriptio ...
- NOIp 2011 mayan游戏 搜索
题目描述 Mayan puzzle是最近流行起来的一个游戏.游戏界面是一个 7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上.游戏通关是指在规定 ...
随机推荐
- python基础dict,集合,文件
字典是一种key:value的数据类型dict1{ 'stud1':'孙礼昭', 'stud2':'slz', 'stud3':'sunlizhao',}dict是无序的,key是唯一的 天生去重增 ...
- CSS3动画中的animation-timing-function效果演示
CSS3动画(animation)属性有如下几个: 属性 值 说明 animation-name name 指定元素要使用的keyframes名称 animation-duration time(ms ...
- CSS3总结(干货)
1.css3中好用的选择器 :target //突出显示活动的HTML锚 ::after / ::before{content:" ";} //content必须有,若无内容,用空 ...
- C# 使用AngleSharp 爬虫图片
AngleSharp 简介 AngleSharp是基于.NET(C#)开发的专门解析HTML源码的DLL组件.根据HTML的DOM结构操作HTML,整个DOM已传输到逻辑类结构中.这种结构可以更好的操 ...
- iptables转发备忘
iptables -F sysctl net.ipv4.ip_forward=1 iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8766 - ...
- Spring 代理对象,cglib,jdk的问题思考,AOP 配置注解拦截 的一些问题.为什么不要注解在接口,以及抽象方法.
可以被继承 首先注解在类上是可以被继承的 在注解上用@Inherited /** * Created by laizhenwei on 17:49 2017-10-14 */ @Target({Ele ...
- ActiveMq笔记3-AMQ高可用性理论
单点的ActiveMQ作为企业应用无法满足高可用和集群的需求,所以ActiveMQ提供了master-slave.broker cluster等多种部署方式,但通过分析多种部署方式之后我认为需要将两种 ...
- CEPH RGW 设置 user default_placement为ssd-placement,优化100KB-200KB小文件性能,使用户创建的bucket对象放置到 SSD设备的Pool上。
sudo radosgw-admin metadata get user:tuanzi > user.md.json vi user.md.json #to add ssd-placement ...
- 使用simhash库来进行网页去重
首先感谢作者yanyiwu贡献的开源项目https://github.com/yanyiwu/simhash.在做项 目过程中,翻了一遍<这就是搜索引擎 核心技术详解>这本书的查重算法, ...
- 搜索引擎的缓存(cache)机制
什么是缓存? 在搜索领域中,所谓缓存,就是在高速内存硬件设备上为搜索引擎开辟一块存储区,来存储常见的用户查询及其结果,并采用一定的管理策略来维护缓存区内的数据.当搜索引擎再次接收到用户的查询请求时,首 ...