The 2018 ACM-ICPC Chinese Collegiate Programming Contest(Ningxia)
A - Maximum Element In A Stack
题意:给出栈的一种进栈和出栈的规则,问栈中的最大值
题解:每次进栈的时候将进栈的值与栈中的最大值比较,将较大的值压入栈
#include
using namespace std;
const int maxn = 5e6 + 56;
typedef long long ll;
int n, p, q, m;
unsigned int SA, SB, SC;
stack s;
ll ans = 0;
unsigned int rng61(){
SA ^= SA << 16;
SA ^= SA >> 5;
SA ^= SA << 1;
unsigned int t = SA;
SA = SB;
SB = SC;
SC ^= t ^ SA;
return SC;
}
void gen(){
scanf("%d%d%d%d%u%u%u", &n, &p, &q, &m, &SA, &SB, &SC);
for(int i = 1; i <= n; i++){
if(rng61() % (p + q) < p){
//PUSH(rng61() % m + 1);
ll x = rng61() % m + 1;
//cout << x << endl;
if (!s.empty()) x = max(x, s.top());
s.push(x);
}
else{
if (!s.empty()) s.pop();
else continue;
}
if (!s.empty())ans ^= i * s.top();
}
}
int main()
{
int T;
cin >> T;
for (int t = 1; t <= T; t++){
ans = 0;
while (!s.empty()) s.pop();
printf("Case #%d: ", t);
gen();
cout << ans << '\n';
}
return 0;
}
B - Rolling The Polygon
题意:给一个凸多边形,问多边形旋转一周的过程中,凸多边形中的一点Q经过的路径的长度
题解:计算几何
#include
#define sqr(x) ((x)*(x))
using namespace std;
const int maxn = 100;
struct Point{
double x, y;
}p[maxn], Q;
struct Vec{
double x, y;
Vec(){}
Vec (double a, double b){
x = a, y = b;
}
double operator*(Vec a){
return a.x*x+a.y*y;
}
}v[maxn];
const Vec X = {1, 0};
double dis(Point a, Point b){
return sqrt(sqr(a.x - b.x) + sqr(a.y - b.y));
}
double len(Vec a){
return sqrt(sqr(a.x) + sqr(a.y));
}
double ang(Vec a, Vec b){
return acos((a * b) / len(a) / len(b));
}
Vec Mns(Point a, Point b){
return Vec(a.x - b.x, a.y - b.y);
}
int n;
int main()
{
int T;
cin >> T;
for (int t = 1; t <= T; t++){
printf("Case #%d: ", t);
scanf("%d", &n);
for (int i = 0; i < n; i++){
scanf("%lf%lf", &p[i].x, &p[i].y);
}
p[n] = p[0]; p[n+1] = p[1];
int sz= 0;
for (int i = 1; i <= n; i++){
v[i] = Mns(p[i+1], p[i]);
}
v[0] = v[n];
scanf("%lf%lf", &Q.x, &Q.y);
double ans = 0;
for (int i = 1; i <= n; i++){
double sita = ang(v[i], v[i-1]);
double l = dis(Q, p[i]);
ans += l * sita;
}
// cout << ans << endl;
printf("%.3f\n", ans);
}
return 0;
}
C - Caesar Cipher
题意:给出原码与密码的变换规则,要用给定的规则将给定的密码还原,当然加密规则特别简单
题解:水题
#include
using namespace std;
const int maxn = 100;
char p[maxn],c[maxn],s[maxn];
int n, m;
int main()
{
int T;
cin>>T;
for(int t = 1; t <= T; t++)
{
printf("Case #%d: ", t);
cin >> n >> m;
cin >> p >> c >> s;
int key=(int)p[0]-(int)c[0];
for(int i=0; i='a'&&c[i]<='z'){
if(s[i]+key>'z')
s[i]=(s[i]-26+key);
else if(s[i]+key<'a')
s[i]=s[i]+key+26;
else
s[i]=s[i]+key;
}
else
{
if(s[i]+key>'Z')
s[i]=(s[i]-26+key);
else if(s[i]+key<'A')
s[i]=s[i]+key+26;
else
s[i]=s[i]+key;
}
}
printf("%s\n",s);
}
return 0;
}
D - Take Your Seat
题意:两个问题,
第一个问题:飞机上n个人,第i个人要坐在第i个位置,但是第一个人忘了自己的位置,所以他就会随机找一个位置坐下来,被坐的这个人发现自己的位置被坐了就会随机找一个没有被坐的位置坐下,这n个人是按顺序上飞机的,问第n个人坐在第n个位置的概率是多少
第二个问题:如果这n个人不是按顺序上飞机的,第n个人坐在第n个位置的概率是多少
题解:第一问,可以推出
化简一下得 (1)
将n-1带入 (2)
将左边一个 移向变成 (3)
(3)-(1) 得
得
容易想到
第二问:可以推出
发现相比第一问就加了
#include
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int maxn = 1e2 + 10;
int main()
{
int T;
double ans1 = 0,ans2 = 0;
scanf("%d", &T);
for (int t = 1; t <= T; t++){
printf("Case #%d: ", t);
double n, m;
scanf("%lf%lf", &n, &m);
if (n == 1) ans1 = 1.0;
else ans1 = 0.5;
double ans2 = (1.0 + m) / (2.0 * m);
//cout << ans1 << " " << ans2 << endl;
printf("%.6f %.6f\n", ans1, ans2);
}
return 0;
}
E - 2-3-4 Tree
题意:给出2-3-4树的构造方法,然后输出2-3-4树的前序遍历
题解:抄了人家的模板
#include
#define FOR(i,s,t) for(int i=(s);i<=(t);i++)
#define pb push_back
#define mp make_pair
using namespace std;
typedef long long LL;
const int maxn=1e5+5;
int a[maxn];
int cnt,rt;
struct Node
{
int f;
vectord,ch;
void init(int fa,int x)//f是该节点的父亲? x是当前的结点拥有的值?
{
f=fa;
d.clear(),ch.clear();
d.push_back(x);//当前节点拥有多少的所有的值
}
}tr[maxn];
void ins(int p,int x)//(1,x)
{
// cout<<"rt:"<cpy_d,cpy_ch;
cpy_d.swap(tr[p].d),cpy_ch.swap(tr[p].ch);//swap ?? 这时候cop_d 和cpy_ch拥有了ty[p].d和ty[p].ch的内容 而这两个变为空?
if(p==rt)//如果p和rt相等??代表已经是根节点了 上面没有结点
{
//相当于中间结点往上提 0 1 2三个结点 中间的自然是1 变为其它两个节点的父亲
tr[rt=++cnt].init(0,cpy_d[1]);//新的结点 父亲变为0 插入d[1]?
tr[++cnt].init(rt,cpy_d[0]);//新的结点 父亲变为rt 插入d[0]? 相当于成为左儿子
tr[p].init(rt,cpy_d[2]);//原来的结点父亲是rt 只剩下d[2]? 相当于成为右儿子
tr[rt].ch.push_back(cnt),tr[rt].ch.push_back(p);//把这两个结点加入到他们的父亲节点的孩子中
if(cpy_ch.size())//如果当前节点有孩子 自然孩子也需要进行操作
{
//左边两个分到左边 右边两个分到右边 大概是为了平衡吧。。。
tr[cnt].ch.push_back(cpy_ch[0]),tr[cpy_ch[0]].f=cnt;//原来的左儿子自然也就成为现在左儿子的左儿子了
tr[cnt].ch.push_back(cpy_ch[1]),tr[cpy_ch[1]].f=cnt;//为什么把1也归为左儿子的儿子?
tr[p].ch.push_back(cpy_ch[2]),tr[cpy_ch[2]].f=p;//为什么把2 3归为右儿子的儿子?
tr[p].ch.push_back(cpy_ch[3]),tr[cpy_ch[3]].f=p;
// cout<1;i--)//??为什么要交换? 懂了 因为你要保证孩子也是有序的呀 所以要把新插入的结点换到p之后
{
if(tr[f].ch[i-1]!=p) swap(tr[f].ch[i-1],tr[f].ch[i]);
else break;
}
if(cpy_ch.size())
{
tr[p].ch.push_back(cpy_ch[0]),tr[cpy_ch[0]].f=p;
tr[p].ch.push_back(cpy_ch[1]),tr[cpy_ch[1]].f=p;
tr[cnt].ch.push_back((cpy_ch[2])),tr[cpy_ch[2]].f=cnt;
tr[cnt].ch.push_back(cpy_ch[3]),tr[cpy_ch[3]].f=cnt;
}
p=f;
}
}
// cout<<"*"<tr[p].d[tr[p].d.size()-1]) ins(tr[p].ch[tr[p].ch.size()-1],x);//如果大于最后一个元素 显然是插到右孩子中的 递归右儿子
else//不比第一个小 不比最后一个大 则肯定插入到中间
{
for(int i=1;i >T;
int ca=1;
while(T--)
{
int N;
cin>>N;
for(int i=1;i<=N;i++) cin>>a[i];
cnt=rt=1,tr[rt].init(0,a[1]); //第一个点的父亲为0 拥有元素a[1]
for(int i=2;i<=N;i++) ins(rt,a[i]);//rt不是一直是1吗?
printf("Case #%d:\n", ca++);
dfs(rt);
}
return 0;
}
F - Moving On
题意:给出一个图,每条边有长度,每个城市有危险值,要求一条最短路,使得经过的城市的危险值都小于w
题解:离散化,弗洛伊德,按危险值排序,按危险值由小到大加入城市,计算最短路
#include
using namespace std;
typedef long long ll;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int maxn=200 + 2;
int r[maxn];
int dis[maxn][maxn][maxn];
int id[maxn];
bool cmp(int i,int j){
return r[i]
G - Factories
题意:给出一颗有权树,每个叶子节点可以建设工厂,问建k个工厂,如何安排使得所有工厂的之间的距离之和最短
题解:树型dp
表示以i为根节点的子树,建设j个工厂的最小距离
#include
#define FOR(i,s,t) for(int i=(s);i<=(t);i++)
#define pb push_back
#define mp make_pair
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 2;
const int maxk = 100 + 2;
const ll inf = 1e12;
const ll INF = 0x3f3f3f3f3f3f3f3f;
vector > edge[maxn];
ll dp[maxn][maxk];
int sz[maxn];
int n, k, rt;
ll miner(ll a, ll b){
return a < b ? a : b;
}
void dfs(int u, int fa){
if (edge[u].size() == 1){
sz[u] = 1;
dp[u][1] = 0ll;
}
dp[u][0] = 0ll;
FOR(i, 0, edge[u].size() - 1){
int v = edge[u][i].first;
ll w = edge[u][i].second;
if (v == fa) continue;
dfs(v, u);
sz[u] += sz[v];
dp[u][k] = miner(dp[u][k], dp[v][k]);
for (int j = min(k, sz[u]); j >= 1; j--){
FOR(l, 1, min(j, sz[v])){
dp[u][j] = miner(dp[u][j], dp[u][j - l] + dp[v][l] +1ll * (ll)w *(ll)l * (ll)(1ll * k - 1ll * l));
}
}
}
}
int main() {
//freopen("G.in", "r", stdin);
//freopen("G.out", "w", stdout);
int T;cin >> T;
FOR(cas, 1, T){
printf("Case #%d: ", cas);
scanf("%d%d",&n, &k);
FOR(i, 1, n) FOR(j, 0, k) dp[i][j] =inf;
FOR(i, 1, n) edge[i].clear();
FOR(i, 1, n) dp[i][0] = 0ll;
FOR(i, 1, n) sz[i] = 0;
FOR(i, 1, n - 1){
int u, v;
ll w;
scanf("%d%d%lld", &u, &v, &w);
//printf("%d\n",w);
edge[u].pb(mp(v, w));
edge[v].pb(mp(u, w));
}
rt = 1;
FOR(i, 1, n){
if (edge[i].size() > 1){
rt = i;
break;
}
}
dfs(rt, -1);
printf("%lld\n", dp[rt][k]);
}
return 0;
}
H - Fight Against Monsters
题意:打怪兽,每个怪兽有生命值和攻击力,每个怪兽在没死之前单位时间都会攻击玩家,玩家每打一个怪兽伤害都是从1开始递增,问玩家最少需要承受多少伤害
题解:贪心(排序)
按 排序,Turn是需要打几回合怪兽才会死的回合数
#include
using namespace std;
const int maxn = 1e5 + 5;
typedef long long ll;
struct Monster{
int hp, atk;
}mons[maxn];
int n;
bool cmp(Monster A, Monster B){
ll x1 = ceil((sqrt(1.0 + 8.0 * A.hp) - 1) / 2.0);
ll x2 = ceil((sqrt(1.0 + 8.0 * B.hp) - 1) / 2.0);
if (1ll * A.atk * x2 == 1ll * x1 * B.atk) return A.atk > B.atk;
return 1ll * A.atk * x2 > 1ll * x1 * B.atk;
}
ll sum[maxn];
int main()
{
int T;
cin >> T;
for (int t = 1; t <= T; t++){
printf("Case #%d: ", t);
scanf("%d", &n);
for (int i = 0; i < n; i++){
scanf("%d%d",&mons[i].hp, &mons[i].atk);
}
sort(mons, mons+n, cmp);
ll turn = 0ll, ans = 0ll;
for (int i = 0; i <= n + 1; i++) sum[i] = 0ll;
for (int i = n - 1 ; i >= 0; i--){
sum[i] += sum[i + 1] + (ll)mons[i].atk;
}
int i = 0;
for (i = 0; i < n; i++){
turn = (ll)ceil((sqrt(1.0 + 8.0 * mons[i].hp) - 1) / 2.0);
ans += 1ll* sum[i] * (ll)turn;
// cout << turn << endl;
}
cout << ans <<'\n';
}
return 0;
}
J - Nested Triangles
题意:新定义之中东西,Nested Triangles,就是若干个公用一条边的三角形,除了公用的这条边另外的两条边都不相交或者重合,问最大的Nested Triangles最多有几个三角形
题解:几何+最长上升子序列
按照其中一边的边排序,另一边的边最最长上升子序列
#include
#define pb push_back
#define mp make_pair
#define FOR(i,s,t) for(int i=(s);i<=(t);i++)
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const int maxn = 1e5 + 5;
struct Vec{
ll x, y;
Vec(){}
Vec(ll a, ll b){x = a,y = b;}
}PQ, QP;
struct Node{
ll x, y;
Vec operator -(const Node A)const{return Vec(x - A.x, y - A.y);}
}node[maxn],P, Q;
vector id[2];
int pre[maxn], f[maxn], c[maxn];
int n;
ll Cross(Vec A, Vec B){return A.x * B.y - A.y * B.x;}
ll Mult(Vec A, Vec B){return A.x * B.x + A.y * B.y;}
bool isUp(Node x){return Cross(PQ, x - P) > 0;}
int lowbit(int x) {return x&(-x);}
void modify(int x, int val){
for (int i = x; i < maxn; i+= lowbit(i)){
if (x != -1 && (c[i] == -1 || f[val] >= f[c[i]])){
if (c[i] == -1 || f[val] > f[c[i]]) c[i] = val;
//else if (f[x] == f[c[i]] && x < c[i]) c[i] = x;
else if (val < c[i]) c[i] = val;
}
}
return ;
}
int query(int x){
int ret = -1;
for (int i = x; i>0; i-=lowbit(i)){
if (c[i] != -1 && (ret == -1 || f[c[i]] >= f[ret])){
if (ret == - 1|| f[c[i]] > f[ret]) ret = c[i];
//else if (f[c[i]] == f[ret] && c[i] < ret) ret = c[i];
else if (c[i] < ret) ret = c[i] ;
}
}
return ret;
}
bool cmp1(int i, int j){return Cross(node[i] - P, node[j] - P) > 0;}
bool cmp2(int i, int j){return Cross(node[i] - Q, node[j] - Q) < 0;}
int a[maxn], b[maxn];
void print(int x){
int i = x;
while (i != -1){
printf("%d\n", i);
i = pre[i];
}
}
int main(){
int T;cin >> T;
FOR(cas, 1, T){
scanf("%lld%lld%lld%lld", &P.x, &P.y, &Q.x, &Q.y);
PQ = Q - P;
QP = P - Q;
id[0].clear();
id[1].clear();
scanf("%d", &n);
FOR(i , 1, n){
scanf("%lld%lld",&node[i].x, &node[i].y);
if (isUp(node[i])) id[0].pb(i);
else id[1].pb(i);
}
int M[2] = {0};
FOR(i, 0, 1){
sort(id[i].begin(), id[i].end(), cmp1);
for (int j = 0; j < id[i].size(); j++){
if (j == 0) a[id[i][j]] = 1;
else if (cmp1(id[i][j - 1], id[i][j])) a[id[i][j]] = a[id[i][j-1]] + 1;
else a[id[i][j]] = a[id[i][j-1]];
}
sort(id[i].begin(), id[i].end(), cmp2);
for (int j = 0; j < id[i].size(); j++){
if (j == 0) b[id[i][j]] = 1;
else if (cmp2(id[i][j - 1], id[i][j])) b[id[i][j]] = b[id[i][j-1]]+1;
else b[id[i][j]] = b[id[i][j-1]];
}
for (int j = 0; j <= id[i].size() ; j++) c[j] = -1;
for (int j = 0; j < id[i].size() ; j++){
int k = j;
while (k + 1 < id[i].size()&& b[id[i][k]] == b[id[i][k + 1]]) k++;
FOR(p, j , k){
int o = id[i][p];
pre[o] = query(a[o] - 1);
f[o] = pre[o] == -1 ? 1 : f[pre[o]] + 1;
M[i] = max(M[i], f[o]);
}
FOR(p, j ,k){
int o = id[i][p];
modify(a[o], o);
}
j = k;
}
swap(P, Q);
swap(PQ, QP);
}
//FOR(j, 1, n) cout << c[j] << " " ;cout << endl;
printf("Case #%d: %d\n", cas, max(M[1], M[0]));
FOR(j, 1, n){
if (f[j] == max(M[1], M[0])){
print(j);
break;
}
}
}
return 0;
}
L - Continuous Intervals
题意:给出一串数,定义一段区间是连续的表示这段区间排序以后相邻两个数的差不超过1
题解:用MAX表示这段区间的最大值,MIN表示这段区间的最小值,CNT表示这段区间的不同数的种类数;MAX-MIN=CNT-1时,满足条件,MAX-MIN>=CNT-1恒成立。简单化简一下就是一段区间的MAX-MIN-CNT+1=0,则这个区间符合条件。
枚举区间的R,计算有多少个L满足L,R这个区间满足条件,用线段树保存MAX-MIN-CNT-1的最小值及其数量,当枚举一个新的R时,最大值受到影响的区间就是右边第一个比a[L]大的数是a[R]的L,可以用单调栈维护,同理最小值也可以用单调栈维护。CNT受影响的区间就是a[R]上一次出现的位置到R这段区间的L,这段区间的每一个L,构成的区间[L,R]都多了一个新的数,所以CNT多了1,所以MAX-MIN-CNT+1,就少1。可以用map维护上一个a[R]出现的位置,也可以离散化。
#include
#define FOR(I,S,T) for(int I=(S);I<=(T);I++)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const int maxn = 1e5 +10;
int M[maxn << 2], cnt[maxn << 2], tag[maxn << 2];
void gather(int p) {
M[p] = min(M[p << 1], M[p << 1 | 1]);
if (M[p << 1] == M[p << 1 | 1]) cnt[p] = cnt[p << 1] + cnt[p << 1 | 1];
else if (M[p << 1] < M[p << 1 | 1]) cnt[p] = cnt[p << 1];
else cnt[p] = cnt[p << 1 | 1];
}
void push(int p){
if (tag[p]){
tag[p << 1] += tag[p];
tag[p << 1 | 1] += tag[p];
M[p << 1] += tag[p];
M[p << 1 | 1] += tag[p];
tag[p] = 0;
}
}
void build(int p, int l, int r){
tag[p] = 0, cnt[p] = 1;
if (l < r){
int mid = (l + r) / 2;
build(p << 1, l, mid);
build(p << 1 | 1, mid + 1, r);
gather(p);
}
else M[p] = 0;
}
void modify(int p, int tl, int tr, int l, int r, int v){
if (tl > tr) return ;
if (tl > r || tr < l) return ;
if (l <= tl && tr <= r){
tag[p] += v;
M[p] += v;
return;
}
push(p);
int mid = (tl + tr) >> 1;
modify(p << 1, tl, mid, l, r, v);
modify(p << 1 | 1, mid + 1, tr, l, r, v);
gather(p);
}
int query(int p, int tl, int tr, int l, int r){
if (tl > tr) return 0;
if (tr < l || tl > r) return 0;
if (l <= tl && tr <= r) return M[p] == 0 ? cnt[p] : 0;
push(p);
int mid = (tl + tr) >> 1;
return query(p << 1, tl, mid, l, r) + query(p << 1 | 1, mid + 1, tr, l, r);
}
int a[maxn];
map pre;
stack up, down;
int main() {
int T;
cin >> T;
FOR(cas, 1, T){
int n;
ll ans = 0;
scanf("%d", &n);
build(1, 1, n);
while (!up.empty()) up.pop();
while (!down.empty()) down.pop();
pre.clear();
FOR(i,1,n) {
scanf("%d", a + i);
while (!up.empty() && a[up.top()] > a[i]) {
int o = up.top();
up.pop();
if (!up.empty()) modify(1, 1, n, up.top() + 1, o, a[o] - a[i]);
else modify(1, 1, n, 1, o, a[o] - a[i]);
}
up.push(i);
while (!down.empty() && a[down.top()] < a[i]) {
int o = down.top();
down.pop();
if (!down.empty()) modify(1, 1, n, down.top() + 1, o, a[i] - a[o]);
else modify(1, 1, n, 1, o, a[i] - a[o]);
}
down.push(i);
if (pre.find(a[i]) != pre.end()) modify(1, 1, n, pre[a[i]] + 1, i - 1, -1);
else modify(1, 1, n, 1, i - 1, -1);
pre[a[i]] = i;
ans += query(1, 1, n, 1, i);
}
printf("Case #%d: %lld\n", cas, ans);
}
return 0;
}
你可能感兴趣的:(acm)
2024年下半年郑州大学ACM招新赛题解(ABCDEFGHIJKL)
lskkkkkkkkkkkk
C++ 题解 算法 数据结构 zzuacm招新赛
An-th题意已知公式π=∑k=0∞116k(48k+1−28k+4−18k+5−18k+6)\pi=\sum_{k=0}^{\infty}\frac{1}{16^k}(\frac{4}{8k+1}-\frac{2}{8k+4}-\frac{1}{8k+5}-\frac{1}{8k+6})π=∑k=0∞16k1(8k+14−8k+42−8k+51−8k+61)请你求出π\piπ的十六进制的小数点后
Mac M1安装Python---kalrry
kalrry
Python python macos 开发语言
MacM1安装Python---kalrry一、准备二、安装三、配置环境变量1、配置环境2、测试3、pip3与pip建立软链接四、参考备份一、准备Python3.9.1发布后开始支持苹果M1和macOS11BigSur也就是我们要下载3.9.1以后的版本,最好选择最新稳定版python官网下载python阿里网盘下载—sa65二、安装双击正常一路next安装即可三、配置环境变量1、配置环境命令行输
服务器/mac m1配置python环境
LoveSeven.Lin
macos python 开发语言
目录服务器配置环境一、安装miniconda二、创建环境三、激活环境四、conda安装Macm1配置环境一、安装Miniforge3二、创建环境三、激活环境四、安装tensorflow五、测试运行服务器配置环境一、安装miniconda#step1:获取安装shell脚本文件wgethttps://repo.continuum.io/miniconda/Miniconda3-latest-Linu
Mac M1芯片通过源码安装Python2.7.x
乌萨奇敲代码
macos python
文章目录MacM1芯片通过源码安装Python2.7.x1.下载源码2.安装依赖3.配置环境4.配置编译选项5.编译6.验证安装MacM1芯片通过源码安装Python2.7.x首先,由于AppleM1芯片使用的是ARM架构,已经不支持Python2.7.x了,所以需要利用Rosetta手动编译Python2.7.x,这里以安装Python2.7.17为例。1.下载源码首先,从Python官方网站下
在Mac M1上安装Python 3并设置环境变量
JieLun_C
macos python 开发语言 Python
在MacM1上安装Python3并设置环境变量MacM1是基于AppleSilicon芯片的新一代Mac电脑。如果你是MacM1用户,并且想要安装Python3并设置环境变量,那么你来对地方了。本文将为你提供详细的步骤和相应的源代码。以下是在MacM1上安装Python3并设置环境变量的步骤:步骤1:安装HomebrewHomebrew是一个流行的包管理器,可以帮助我们在Mac上安装各种软件包。打
ctf网络安全大赛官网赛题 ctf网络安全大赛规则
网络安全-老纪
web安全 安全 网络
CTF(CaptureTheFlag,夺旗赛)起源于1996年DEFCON全球黑客大会,是网络安全爱好者之间的竞技游戏。CTF竞赛模式具体分为以下三类:一、解题模式(Jeopardy)在解题模式CTF赛制中,参赛队伍可以通过互联网或者现场网络参与,这种模式的CTF竞赛与ACM编程竞赛、信息学奥赛比较类似,以解决网络安全技术挑战题目的分值和时间来排名,通常用于在线选拔赛。题目主要包含逆向、漏洞挖掘与
ACM算法与竞赛基地:蓝桥备战 --- 二分篇
NONE-C
蓝桥杯 算法 数据结构
ACM基地:蓝桥备战—二分篇什么是二分?二分是一种搜索策略,类似于高速中学到的梯度下降法,当我们落在某一点是沿着该点斜率,我们可以像最优处移动,二分也是样的策略,但其更加严格,现代算法,如模拟退火,蚁群算法,BP算法针对的都是存在多种最优解,解决的问题也更加宽泛,而作为传统算法的二分,有着更加严格的限制,想要理解二分,必须要对该限制有深刻理解。接下来我们将展开对二分的学习二分查找+二分答案key1
【笔试题汇总】华为春招笔试题解 2024-4-17
PXM的算法星球
大厂面试题 面试 算法 c++ 华为
这里是paoxiaomo,一个现役ACMer,之后将会持续更新算法笔记系列以及笔试题题解系列本文章面向想打ICPC/蓝桥杯/天梯赛等程序设计竞赛,以及各个大厂笔试的选手感谢大家的订阅➕和喜欢有什么想看的算法专题可以私信博主(本文题面由清隆学长收集)01.扑克牌消消乐题目描述K小姐最近沉迷于一款扑克牌消除游戏。游戏规则如下:从一副扑克牌中随机抽取nnn张牌组成一个序列,如果有连续的333张相同牌号的
ACM招新赛<赛后题解与反思总结>②
Moring.
ACM招新赛 c语言
问题A:再遇“HelloWorld”(Easy)题目描述鉴于上次出的“HelloWorld”过于恐怖导致好多人都做不出来,所以小劉同学打算再给大家出一道"HelloWorld"(Easy).现在小劉同学要参加一场算法比赛,这场比赛算上小劉在内一共有五队人参加,每个人各自为一队,小劉同学是最后一队,经过几个小时的麓战,比赛结果出炉,给出每个人的过题数目,请你判断小劉同学是否能成为唯一的第一名,即小劉
ACM招新赛<赛后题解与反思总结>⑤
Moring.
ACM招新赛 算法
问题C:象棋中的炮题目描述在中国象棋中正所谓新手玩车,熟手玩炮,老手玩马,由此可见象棋中炮的地位还是比较高的。给定一个n×m的棋盘,全部摆满炮,我们视所有炮都不属于同一阵营,他们之间可以相互攻击但不能不进行攻击直接移动。请问经历若干次攻击,直到不能攻击后,最少能剩余多少个炮。输入描述第一行一个正整数t,表示数据组数,(1=2且m>=2最后会剩下一个2*2的格子还有炮,那就是只会剩下4个炮。至于为什
代码随想录 day51 图论 1-6学习
ggyyToLearning
算法 之 代码随想录学习与复习 图论 学习 深度优先
99.岛屿数量卡码网题目链接(ACM模式)(opensnewwindow)题目描述:给定一个由1(陆地)和0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。你可以假设矩阵外均被水包围。输入描述:第一行包含两个整数N,M,表示矩阵的行数和列数。后续N行,每行包含M个数字,数字为1或者0。输出描述:输出一个整数,表示岛屿的数量。如果不存在岛屿,则
【网络安全】从零开始的CTF生活
Hacker_Nightrain
web安全 生活 安全
1、CTF是什么?CTF(CaptureTheFlag,夺旗赛)起源于1996年DEFCON全球大会,是网络安全爱好者之间的竞技游戏。2、比赛怎么打?1、解题模式:与ACM编程竞赛、信息学奥赛类似,以解决网络安全技术挑战题目的分值和时间来排名。题目主要包含逆向、漏洞挖掘与利用、Web渗透、密码、取证、隐写、安全编程等类别2、攻防模式(Attack-Defense):参赛队伍在网络空间互相进行攻击和
冠军算法变体合集再上新!具有新的变异策略和外部归档机制的改进LSHADE-SPACMA算法
群智能算法小狂人
算法
1简介算法提出了一种用于数值优化和点云配准的LSHADE-SPACMA(mLSHADE-SPACMA)的修改版本。首先,提出了一种精确的消除和生成机制,以增强算法的局部开发能力。其次,引入了一种基于改进的半参数自适应策略和基于秩的选择压力的变异策略,改进了算法的进化方向。第三,提出了一种基于精英的外部归档机制,保证了外部种群的多样性,可以加速算法的收敛进度。2.7LSHADE-SPACMA2.7.
自动化签发ssl证书记录
Harmless131
ssl 自动化 nginx
前言:自动化签发证书ssl时,查看文档有些麻烦,而且签发命令较为繁琐,遂写这一篇文章做个记录,以后在申请的时候可以直接复制,也算是对自动化签发ssl证书的一点小探索。1.两种自动化工具比较###1.1certbot按照个人的使用习惯来看,certbot签发命令较为简单.更适合在单机情况下部署ssl证书。是因为它调用dns服务商的api并不多,而且主要是国外DNS服务商(相较于acme.sh),只推
ACM寒假培训7--图与树
ZIZIZIZIZ()
算法 图论 数据结构 笔记 动态规划
学习总结最短路问题一.Floyd算法1.不可以直接到达的点设为正无穷2.自己到自己的距离设为03.d[k][i][j]为前k个点中i到j的最短路降维代码实现constintN=105;intd[N][N],n;voidfloyd(){for(intk=1;kusingnamespacestd;constintINF=numeric_limits::max();structEdge{intto;in
【华为机考必备】华为2024届技术岗笔试全解 | 第五套
春秋招笔试突围
最新互联网春秋招试题合集 华为春秋招笔试题 华为
博主简介深耕互联网大厂校招的算法博主笔试突围,累计发布百万字大厂笔试解析,带领数百名学员斩获华为offer。专栏提供:✅实时更新的华为真题题库✅ACM模式编程实战模板✅高频算法思维导图速记华为笔试核心情报⏱️关键时间节点(2026届预测)地区考试时间窗口考试时长国内每周三19:00~21:002小时固定海外每周三19:00~次周19:00自选2小时连续段重要提醒:机考链接提前1天通过邮箱发送,逾期
CE339 “Pacman” video game
后端
CE339Assignment2:“Pacman”videogameAssignmentobjectivesThisdocumentspecifiesthesecondcourseworkassignmenttobesubmittedbystudentstakingCE339.Thisassignmentismorechallengingthanthefirstoneanditismeanttop
mac m1通过qemu和grub制作操作系统引导盘
千篇不一律
深入学习操作系统 macos 数据库
文章目录前言grub安装引导盘FAQ参考附录qemu安装ubuntuGRUB安装到回环设备吧啦吧啦...前言我电脑是macm1芯片的,做了如下尝试,最终在第4种方式下成功:开始用了parallelsdesktop安装了ubuntu22版本的,因为本机是arm64芯片,所以只能安装arm64的ubuntu,然后在运行grub-install/dev/loop0时报错:grub-install:err
【C/C++】后缀表达式 蓝桥杯/ACM备赛
奇变偶不变0727
c语言 c++ 开发语言 蓝桥杯 算法
核心考点:1.栈的应用2.字符串处理题目描述所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。本题中运算符仅包含+-*/+-*/。保证对于//运算除数不为0。特别地,其中//运算的结果需要向0取整(即与C++/运算的规则一致)。如:3*(5-2)+73*(5-2)+7对应的后缀表达式为:
搭建Mac Flutter开发环境
程序员小詹
Flutter开发实战 macos flutter
基于MacM1Pro搭建Flutter开发环境,其他平台请参考官方教程1、Getstarted电脑配置:建议8核16G,70G以上磁盘空间系统要求:Flutter支持macOS10.15(Catalina)或更高版本,zsh是的默认shell。如果是AppleM系列的芯片,需要安装Rosetta2,如果是Intel芯片,则忽略下面这段。对于在搭载Apple芯片的Mac上开发和运行Flutter应用
ACM- 2-SAT问题
胖亚亚
2-SAT 算法总结 2-SAT
前言:这篇文章是参考着饶齐的总结写出来的,但只有一些文字性的描述类似。现在有一个由N个布尔值组成的序列A,给储户一些限制关系比如A[x]ANDA[y]=0、A[x]ORA[y]ORA[z]=1等,要确定A[0...N-1]的值,使其满足所有限制关系。这个问题称为2-SAT问题特别的,若每种限制关系中最多只对两个元素进行限制,则称为2-SAT问题。由于在2-SAT问题中,最多只对两个元素进行限制,所
FZU ACM 寒假第五讲:搜索算法
ZOEKOFK
算法
第一题:自然数的拆分问题source:洛谷-P2404解题思路:经典的深搜,只是要注意一下结束条件和递归的逻辑顺序;以及保证每行输出的单调ACcode:#includeusingnamespacestd;intn;inta[10];voiddfs(intstep,intsum,intbeg){if(sum>n){return;}if(sum==n){cout>n;dfs(0,0,1);return
ACM训练系统 1003 [编程入门]密码破译 C
眉间白
ACM c语言 蓝桥杯 c++
代码思路:利用srcii对每个字符进行加四处理一使用四个变量和getchar();对每个字符加密;。//baizhen#includeintmain(void){chara,b,c,d,e;a=getchar();b=getchar();c=getchar();d=getchar();e=getchar();printf("%c%c%c%c%c",a+4,b+4,c+4,d+4,e+4);//字符
服务器模式部署mediacms后卸载mediacms,包括数据库
NetX行者
服务器 数据库 运维
以下是卸载服务器上部署的MediaCMS及其数据库数据的步骤:卸载MediaCMS停止服务:如果使用了systemctl管理服务,执行以下命令停止相关服务:systemctlstopcelery_longcelery_shortcelery_beatmediacmssystemctldisablecelery_longcelery_shortcelery_beatmediacms删除文件:找到Me
【C/C++】约瑟夫变形:网络拥堵解决方案(Eeny Meeny Moo) 蓝桥杯/ACM备赛
奇变偶不变0727
c语言 c++ 蓝桥杯 开发语言
考点概览:【算法:模拟】循环链表的操作利用循环链表模拟城市的网络状态,进行节点的删除操作。模拟算法根据题目描述的“切断网络”规则,通过模拟切断过程,判断Ulm城市(编号2)是否被最后选中。循环遍历与条件判断遍历每个可能的间隔m,并模拟切断过程,判断是否符合条件。动态内存管理使用malloc和free来动态分配和释放内存,模拟城市节点的删除。如果对malloc函数不了解可以看这篇文章:【C语言函数】
ACM寒假培训5
ZIZIZIZIZ()
算法 笔记 深度优先 广度优先
学习总结一.深度优先搜索DFS注意点1.用boolvis[]标记当前是否走过2.停止条件3.边界函数4.递归进行搜索5.记得回溯,vis[]变为false二.广度优先搜索BFS过程1.dx[],dy[]储存方向向量2.vis[]标记是否走过3.用队列每一个元素作为起点4.如果某个方向的下一个位置还没走过,那么就走到该位置,并记录,同时让该点入队,用队列才能保证走最近的路线解题思路及代码洛谷P125
手把手教你给 windows装个vmware虚拟机
python算法小白
附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全:书单导航页(点击右侧极客侠栈即可打开个人博客):极客侠栈①【Java】学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版)②【算法数据结构+acm】从入门到进阶吐血整理书单50+本(珍藏版)③【数据库】从入门到进阶必读18本技术书籍网盘吐血整理网盘(珍藏版)④【Web前端】从HTML到JS到AJ
GO语言ACM输入输出
Thomas_YiSaYa
go语言 go语言
GoACM常用的输入输出有时候用gofmt.ScanL会出现超时,这里用这个不会超时。scanner:=bufio.NewScanner(os.Stdin)scanner.Split(bufio.ScanWords)scanner.Scan()n,_:=strconv.Atoi(scanner.Text())参考文档ACM输入
ACM培训4
ZIZIZIZIZ()
算法 笔记
学习总结--基础数论大多为模板一、GCD(最大公约数)①辗转相除法longlonggcd(longa,longb){longlongr;while(b!=0){r=a%b;a=b;b=r;}returna;}②扩展欧几里得算法intexgcd(inta,intb,int&x,int&y){if(b==0){x=1;y=0;returnaa;}intans=exgcd(b,a%b,x,y);intk
【文献阅读分享】PAP-REC:个性化自动提示生成框架✨
Sheakan
推荐系统论文阅读总结 人工智能 推荐系统
标题期刊年份PAP-REC:PersonalizedAutomaticPromptforRecommendationLanguageModelACMTransactionsonInformationSystems(TOIS)2024研究背景在信息爆炸的时代,我们每天都要面对海量的数据和选择,这时候推荐系统就像我们的智能小助手,帮助我们在茫茫信息海洋中找到真正需要的资源。但是,传统的推荐系统模型大多
jvm调优总结(从基本概念 到 深度优化)
oloz
java jvm jdk 虚拟机 应用服务器
JVM参数详解:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。
【Scala十六】Scala核心十:柯里化函数
bit1129
scala
本篇文章重点说明什么是函数柯里化,这个语法现象的背后动机是什么,有什么样的应用场景,以及与部分应用函数(Partial Applied Function)之间的联系 1. 什么是柯里化函数
A way to write functions with multiple parameter lists. For instance
def f(x: Int)(y: Int) is a
HashMap
dalan_123
java
HashMap在java中对很多人来说都是熟的;基于hash表的map接口的非同步实现。允许使用null和null键;同时不能保证元素的顺序;也就是从来都不保证其中的元素的顺序恒久不变。
1、数据结构
在java中,最基本的数据结构无外乎:数组 和 引用(指针),所有的数据结构都可以用这两个来构造,HashMap也不例外,归根到底HashMap就是一个链表散列的数据
Java Swing如何实时刷新JTextArea,以显示刚才加append的内容
周凡杨
java 更新 swing JTextArea
在代码中执行完textArea.append("message")后,如果你想让这个更新立刻显示在界面上而不是等swing的主线程返回后刷新,我们一般会在该语句后调用textArea.invalidate()和textArea.repaint()。
问题是这个方法并不能有任何效果,textArea的内容没有任何变化,这或许是swing的一个bug,有一个笨拙的办法可以实现
servlet或struts的Action处理ajax请求
g21121
servlet
其实处理ajax的请求非常简单,直接看代码就行了:
//如果用的是struts
//HttpServletResponse response = ServletActionContext.getResponse();
// 设置输出为文字流
response.setContentType("text/plain");
// 设置字符集
res
FineReport的公式编辑框的语法简介
老A不折腾
finereport 公式 总结
FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式。
简单的说下自己感觉的公式要注意的几个地方:
1.if语句语法刚接触感觉比较奇怪,if(条件式子,值1,值2),if可以嵌套,if(条件式子1,值1,if(条件式子2,值2,值3)
linux mysql 数据库乱码的解决办法
墙头上一根草
linux mysql 数据库乱码
linux 上mysql数据库区分大小写的配置
lower_case_table_names=1 1-不区分大小写 0-区分大小写
修改/etc/my.cnf 具体的修改内容如下:
[client]
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/va
我的spring学习笔记6-ApplicationContext实例化的参数兼容思想
aijuans
Spring 3
ApplicationContext能读取多个Bean定义文件,方法是:
ApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[]{“bean-config1.xml”,“bean-config2.xml”,“bean-config3.xml”,“bean-config4.xml
mysql 基准测试之sysbench
annan211
基准测试 mysql基准测试 MySQL测试 sysbench
1 执行如下命令,安装sysbench-0.5:
tar xzvf sysbench-0.5.tar.gz
cd sysbench-0.5
chmod +x autogen.sh
./autogen.sh
./configure --with-mysql --with-mysql-includes=/usr/local/mysql
sql的复杂查询使用案列与技巧
百合不是茶
oracle sql 函数 数据分页 合并查询
本片博客使用的数据库表是oracle中的scott用户表;
------------------- 自然连接查询
查询 smith 的上司(两种方法)
&
深入学习Thread类
bijian1013
java thread 多线程 java多线程
一. 线程的名字
下面来看一下Thread类的name属性,它的类型是String。它其实就是线程的名字。在Thread类中,有String getName()和void setName(String)两个方法用来设置和获取这个属性的值。
同时,Thr
JSON串转换成Map以及如何转换到对应的数据类型
bijian1013
java fastjson net.sf.json
在实际开发中,难免会碰到JSON串转换成Map的情况,下面来看看这方面的实例。另外,由于fastjson只支持JDK1.5及以上版本,因此在JDK1.4的项目中可以采用net.sf.json来处理。
一.fastjson实例
JsonUtil.java
package com.study;
impor
【RPC框架HttpInvoker一】HttpInvoker:Spring自带RPC框架
bit1129
spring
HttpInvoker是Spring原生的RPC调用框架,HttpInvoker同Burlap和Hessian一样,提供了一致的服务Exporter以及客户端的服务代理工厂Bean,这篇文章主要是复制粘贴了Hessian与Spring集成一文,【RPC框架Hessian四】Hessian与Spring集成
在
【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中
【Mahout二】基于Mahout CBayes算法的20newsgroup的脚本分析
bit1129
Mahout
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information re
nginx三种获取用户真实ip的方法
ronin47
随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户的真实IP地址,如果后端是apache,请跳转到<apache获取用户真实IP地址>,如果是后端真实服务器是nginx,那么继续往下看。
实例环境: 用户IP 120.22.11.11
java-判断二叉树是不是平衡
bylijinnan
java
参考了
http://zhedahht.blog.163.com/blog/static/25411174201142733927831/
但是用java来实现有一个问题。
由于Java无法像C那样“传递参数的地址,函数返回时能得到参数的值”,唯有新建一个辅助类:AuxClass
import ljn.help.*;
public class BalancedBTree {
BeanUtils.copyProperties VS PropertyUtils.copyProperties
诸葛不亮
PropertyUtils BeanUtils
BeanUtils.copyProperties VS PropertyUtils.copyProperties
作为两个bean属性copy的工具类,他们被广泛使用,同时也很容易误用,给人造成困然;比如:昨天发现同事在使用BeanUtils.copyProperties copy有integer类型属性的bean时,没有考虑到会将null转换为0,而后面的业
[金融与信息安全]最简单的数据结构最安全
comsci
数据结构
现在最流行的数据库的数据存储文件都具有复杂的文件头格式,用操作系统的记事本软件是无法正常浏览的,这样的情况会有什么问题呢?
从信息安全的角度来看,如果我们数据库系统仅仅把这种格式的数据文件做异地备份,如果相同版本的所有数据库管理系统都同时被攻击,那么
vi区段删除
Cwind
linux vi 区段删除
区段删除是编辑和分析一些冗长的配置文件或日志文件时比较常用的操作。简记下vi区段删除要点备忘。
vi概述
引文中并未将末行模式单独列为一种模式。单不单列并不重要,能区分命令模式与末行模式即可。
vi区段删除步骤:
1. 在末行模式下使用:set nu显示行号
非必须,随光标移动vi右下角也会显示行号,能够正确找到并记录删除开始行
清除tomcat缓存的方法总结
dashuaifu
tomcat 缓存
用tomcat容器,大家可能会发现这样的问题,修改jsp文件后,但用IE打开 依然是以前的Jsp的页面。
出现这种现象的原因主要是tomcat缓存的原因。
解决办法如下:
在jsp文件头加上
<meta http-equiv="Expires" content="0"> <meta http-equiv="kiben&qu
不要盲目的在项目中使用LESS CSS
dcj3sjt126com
Web less
如果你还不知道LESS CSS是什么东西,可以看一下这篇文章,是我一朋友写给新人看的《CSS——LESS》
不可否认,LESS CSS是个强大的工具,它弥补了css没有变量、无法运算等一些“先天缺陷”,但它似乎给我一种错觉,就是为了功能而实现功能。
比如它的引用功能
?
.rounded_corners{
[入门]更上一层楼
dcj3sjt126com
PHP yii2
更上一层楼
通篇阅读完整个“入门”部分,你就完成了一个完整 Yii 应用的创建。在此过程中你学到了如何实现一些常用功能,例如通过 HTML 表单从用户那获取数据,从数据库中获取数据并以分页形式显示。你还学到了如何通过 Gii 去自动生成代码。使用 Gii 生成代码把 Web 开发中多数繁杂的过程转化为仅仅填写几个表单就行。
本章将介绍一些有助于更好使用 Yii 的资源:
Apache HttpClient使用详解
eksliang
httpclient http协议
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会
zxing二维码扫描功能
gundumw100
android zxing
经常要用到二维码扫描功能
现给出示例代码
import com.google.zxing.WriterException;
import com.zxing.activity.CaptureActivity;
import com.zxing.encoding.EncodingHandler;
import android.app.Activity;
import an
纯HTML+CSS带说明的黄色导航菜单
ini
html Web html5 css hovertree
HoverTree带说明的CSS菜单:纯HTML+CSS结构链接带说明的黄色导航
在线体验效果:http://hovertree.com/texiao/css/1.htm代码如下,保存到HTML文件可以看到效果:
<!DOCTYPE html >
<html >
<head>
<title>HoverTree
fastjson初始化对性能的影响
kane_xie
fastjson 序列化
之前在项目中序列化是用thrift,性能一般,而且需要用编译器生成新的类,在序列化和反序列化的时候感觉很繁琐,因此想转到json阵营。对比了jackson,gson等框架之后,决定用fastjson,为什么呢,因为看名字感觉很快。。。
网上的说法:
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
基于Mybatis封装的增删改查实现通用自动化sql
mengqingyu
DAO
1.基于map或javaBean的增删改查可实现不写dao接口和实现类以及xml,有效的提高开发速度。
2.支持自定义注解包括主键生成、列重复验证、列名、表名等
3.支持批量插入、批量更新、批量删除
<bean id="dynamicSqlSessionTemplate" class="com.mqy.mybatis.support.Dynamic
js控制input输入框的方法封装(数字,中文,字母,浮点数等)
qifeifei
javascript js
在项目开发的时候,经常有一些输入框,控制输入的格式,而不是等输入好了再去检查格式,格式错了就报错,体验不好。 /** 数字,中文,字母,浮点数(+/-/.) 类型输入限制,只要在input标签上加上 jInput="number,chinese,alphabet,floating" 备注:floating属性只能单独用*/
funct
java 计时器应用
tangqi609567707
java timer
mport java.util.TimerTask; import java.util.Calendar; public class MyTask extends TimerTask { private static final int
erlang输出调用栈信息
wudixiaotie
erlang
在erlang otp的开发中,如果调用第三方的应用,会有有些错误会不打印栈信息,因为有可能第三方应用会catch然后输出自己的错误信息,所以对排查bug有很大的阻碍,这样就要求我们自己打印调用的栈信息。用这个函数:erlang:process_display (self (), backtrace).需要注意这个函数只会输出到标准错误输出。
也可以用这个函数:erlang:get_s