Codeforces293 | Round#174 Div1| 题解报告

四元数法求姿态角,九轴 coding:utf-8 四元数法 9轴计算 #第一版 import math IMU算法更新 Kp = 2.0 # 比例增益控制加速度计/磁强计的收敛速度 Ki = 0.005 # 积分增益控制陀螺偏差的收敛速度 halfT = 0.01 # 采样周期的一半 def Update_IMU(ax, ay, az, gx, gy, gz, mx, my, mz): global q0, q1, ... 阅读详情

Codeforces293 - Round# 174 Div1

Codeforces293-Round#174Div1

官方题解

我也不知道该说啥了…被自己蠢哭了哇…

A题明明是个大水题!我差点差点差点 就写了线段树。。。(区间修改的那种
B题也没有任何思维含量(虽然我写了很久
完全就是暴力暴力暴力…注意一下细节就可以了…B题告诉我。。——人要有信仰。。
C题咕咕咕…只会把所有状态都放到dp里面去QAQ
D题smg不会再见?
E题咋又是计数!不会再见?

总而言之 感觉这场比赛确实不难。。。
最让我骄傲的是 至少我题目还是看得懂的!

-----还是写题(瞎)解(讲)报告比较好玩------

A.Cows and Sequence

大水题!
略~

B.Cow Program

泥把这道题转换成图模型就可以啦!
注意细节就没有问题~

C.Coin Troubles

C题是什么sb题。。水的一皮
考虑复杂度 遇到dp只会把所有状态都放到dp状态上的你发现 tm只能开个1维的样子
想来想去 你发现有一维是绝对要的 然后智障的你在思考 你要满足这个限制啊
那么先满足最基本的东西嘛。。
就是如果最小的那个选了 x x x个 那么与之相联系的硬币你都选 x x x个
然后你就发现 这tm是个什么思博题。。
什么思博题!怎么可以这么思博!
打个比方 n u m x &lt; n u m y &lt; n u m z num_x &lt; num_y &lt;num_z numx​<numy​<numz​
那你把 w x = a x + a y + a z , w y = a y + a z , w z = a z w_x = a_x + a_y + a_z,w_y = a_y +a_z,w_z=a_z wx​=ax​+ay​+az​,wy​=ay​+az​,wz​=az​
然后你再跑个什么多重背包!tm就完事了。(当然你先要满足最基本的条件。。。

D.Cows and Cool Sequences

一道肥肠流弊的题。。。
还是被我的数学菜到了。。

首先我们发现这个 n n n只有 5000 5000 5000! 然后我们就可以考虑 n 2 n^2 n2做法啦~
对于 y y y个连续的数 和为 x x x 我们可以推出这么一个式子
( 2 ∗ a + y − 1 ) ∗ y 2 = x \dfrac{(2*a+y-1)*y}{2}=x 2(2∗a+y−1)∗y​=x
从而 2 ∗ a − 1 = 2 ∗ x − y 2 y 2*a-1=\dfrac{2*x-y^2}{y} 2∗a−1=y2∗x−y2​
那么我们是不是得出 2 ∗ x − y 2 y \dfrac{2*x-y^2}{y} y2∗x−y2​需要是个奇数
那么我们将数划分成 x = 2 p ∗ q x=2^p*q x=2p∗q
那么 x , y x,y x,y需要满足的条件

  • q x q_x qx​% q y q_y qy​ = 0 =0 =0
  • p x + 1 = p y p_x+1=p_y px​+1=py​|| p y = 0 p_y=0 py​=0

我们设 f [ i ] f[i] f[i]表示前 i i i个最少需要修改几个

E.Cow Tennis Tournament

遇难则反
一个三元组 ( a , b , c ) (a,b,c) (a,b,c)不满足条件的情况就是其中一个数的能力大于另外两个数

我们知道一共有 C n 3 C_n^3 Cn3​个三元组
那么一个数 a a a打赢另一个数 b b b 情况也只有两种

  • 本身 a a a就比 b b b大 而且反转了偶数次
  • 本身 a a a就比 b b b小 而且反转了奇数次

这种区间反转多少次我们可以放到线段树上去求
现将 a a a按从小到大排序
枚举到一个 i i i 我们将所有以 i i i为左端点的区间放到线段树里去
计算完 i i i的贡献时 我们就将所有以 i i i为右端点的线段从线段树里去除影响
然后你发现你就写完了一道Div1!的最后一题!

撒花花?

------Code!------

A
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 2e5 + 10;
ll add[N], a[N];

int main() {
	ll sum = 0;
	int now = 1, n;
	scanf("%d", &n);
	for(int i = 1, tp; i <= n; ++i) {
		scanf("%d", &tp);
		if(tp == 1) {
			int x, y;
			scanf("%d%d", &x, &y);
			add[x] += y;
			sum += 1ll * x * y;
		} else if(tp == 2) {
			int x;
			scanf("%d", &x);
			sum += x, a[++now] = x;
		} else {
			add[now - 1] += add[now];
			sum -= add[now] + a[now];
			add[now] = a[now] = 0;
			now--;
		}
		printf("%.10f\n", double(sum) / double(now));
	}
	return 0;
}
B
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e6 + 10;
ll dis[N], a[N];
int vis[N], ed[N], vv[10], res = 0, n;

int zh(int y, int x) {
	return x * n + y;
}

void go(int x, int id) {
	int num = zh(x, id);
	if(x == 1) {
		ed[num] = id + 1;
		return ;
	}
	vis[num] = res;
	if(!id) {
		int pos = x + a[x], nid = id ^ 1;
		int tmp = zh(pos, nid);
		if(pos > n) {
			dis[num] = a[x];
			return ;
		} else if(vis[tmp] == vis[num]) {
			dis[num] = -1;
			return ;
		} else {
			if(!vis[tmp]) {
				go(pos, nid);
			}
			if(dis[tmp] == -1) dis[num] = -1;
			else dis[num] = dis[tmp] + a[x];
			ed[num] = ed[tmp];
		}
	} else {
		int pos = x - a[x], nid = id ^ 1;
		int tmp = zh(pos, nid);
		if(pos <= 0) {
			dis[num] = a[x];
			return ;
		} else if(vis[num] == vis[tmp]) {
			dis[num] = -1;
			return ;
		} else {
			if(!vis[tmp]) {
				go(pos, nid);
			}
			if(dis[tmp] == -1) dis[num] = -1;
			else dis[num] = dis[tmp] + a[x];
			ed[num] = ed[tmp];
		}
	}
}

int main() {
	scanf("%d", &n);
	for(int i = 2; i <= n; ++i) {
		cin >> a[i];
	}
	for(int i = 2; i <= n; ++i) 
	 for(int j = 0; j < 2; ++j) {
		if(!vis[zh(i, j)]) {
			++res;
			go(i, j);
		}
	}
	for(int i = 1; i < n; ++i) {
		memset(vv, 0, sizeof vv);
		int tt = zh(i + 1, 1);
		ll pos = dis[tt];
		if(ed[tt] == 1) {
			printf("-1\n");
		} else if(ed[tt] == 2){
			cout << pos + i + i << endl;
		} else {
			if(pos == -1) printf("-1\n");
			else cout << pos + i <<endl;
		}
	}
	return 0;
}
C
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 1e5 + 10, mod = 1e9 + 7;
int a[N], mx[N], my[N], vis[N], w[N];
ll f[N];

int main() {
	int n, q, t;
	scanf("%d%d%d", &n, &q, &t);
	for(int i = 1; i <= n; ++i) {
		scanf("%d", &a[i]);
	}
	for(int i = 1, x, y; i <= q; ++i) {
		scanf("%d%d", &x, &y);
		mx[x] = y, my[y] = x;
	}
	for(int i = 1; i <= n; ++i) {
		if(!my[i]) {
			// printf("qwq%d\n", i);
			int tmp = i, pos = a[tmp];
			w[tmp] = pos;
			while(mx[tmp]) {
				t -= pos;
				if(t < 0) return printf("0\n"), 0;
				tmp = mx[tmp];
				pos += a[tmp];
				w[tmp] = pos;
			}
		}
	}
	f[0] = 1;
	for(int i = 1; i <= n; ++i) {
		if(!w[i]) return printf("0\n"), 0;
		for(int j = w[i]; j <= t; ++j) {
			f[j] = (f[j] + f[j - w[i]]) % mod;
		}
	}
	// printf("%d\n", t);
	if(t >= 0) printf("%lld\n", f[t]);
	else {
		printf("0\n");
	}
	return 0;
}
D
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 5050;
int f[N];
ll q[N], p[N];

bool check(int x, int y) {
	if(q[x] % q[y]) return false;
	return p[y] - p[x] == y - x || p[y] < y - x;
}

int main() {
	int n;
	scanf("%d", &n);
	for(int i = 0; i < n; ++i) {
		ll x;
		cin >> x;
		p[i] = 0;
		while(x % 2 == 0) p[i]++, x /= 2;
		q[i] = x;
	}
	memset(f, 0x3f, sizeof f);
	f[0] = 0, q[n] = 1;
	for(int i = 1; i <= n; ++i) {
		f[i] = i;
		for(int j = 0; j < i; ++j) {
			if(check(j, i)) {
				f[i] = min(f[i], f[j] + i - j - 1);
			}
		}
	}
	printf("%d\n", f[n]);
	return 0;
}
E
#include<bits/stdc++.h>
#define ls x << 1
#define rs x << 1 | 1
#define ll long long
using namespace std;
const int N = 1e5 + 10;
struct data {
	int l, r;
} xd[N];
struct node {
	int js, os;
} tr[N << 2];
vector<int> b[N], e[N];
int a[N], all[N << 2];
int rev[N << 2], n, k;

int getl(int x) {
	int l = 1, r = n, ans = 1;
	while(l <= r) {
		int mid = (l + r) >> 1;
		if(all[mid] >= x) r = mid - 1, ans = mid;
		else l = mid + 1;
	}
	return ans;
}

int getr(int x) {
	int l = 1, r = n, ans = n;
	while(l <= r) {
		int mid = (l + r) >> 1;
		if(all[mid] <= x) l = mid + 1, ans = mid;
		else r = mid - 1;
	}
	return ans;
}

node merge(node A, node B) {
	node res;
	res.js = A.js + B.js;
	res.os = A.os + B.os;
	return res;
}

void build(int x, int l, int r) {
	if(l == r) {
		tr[x].os = 1;
		tr[x].js = 0;
		return ;
	}
	int mid = (l + r) >> 1;
	build(ls, l, mid), build(rs, mid + 1, r);
	tr[x] = merge(tr[ls], tr[rs]);
}

void down(int x) {
	if(rev[x]) {
		rev[x] = 0;
		rev[ls] ^= 1;
		rev[rs] ^= 1;
		swap(tr[ls].os, tr[ls].js);
		swap(tr[rs].os, tr[rs].js);
	}
}

void put(int x, int l, int r, int L, int R) {
	if(L <= l && r <= R) {
		rev[x] ^= 1;
		swap(tr[x].os, tr[x].js);
		return ;
	}
	down(x);
	int mid = (l + r) >> 1;
	if(L <= mid) put(ls, l, mid, L, R);
	if(R > mid) put(rs, mid + 1, r, L, R);
	tr[x] = merge(tr[ls], tr[rs]);
}

node get(int x, int l, int r, int L, int R) {
	if(L > R) {
		return (node){0, 0};
	}
	if(L <= l && r <= R) {
		return tr[x];
	}
	down(x);
	int mid = (l + r) >> 1;
	node ans1, ans2;
	if(L <= mid) ans1 = get(ls, l, mid, L, R);
	else ans1.js = ans1.os = 0;
	if(R > mid) ans2 = get(rs, mid + 1, r, L, R);
	else ans2.js = ans2.os = 0;
	tr[x] = merge(tr[ls], tr[rs]);
	return merge(ans1, ans2);
}

int main() {
	scanf("%d%d", &n, &k);
	int res = 0;
	for(int i = 1; i <= n; ++i) {
		scanf("%d", &a[i]);
		all[i] = a[i];
	}
	sort(a + 1, a + 1 + n), sort(all + 1, all + 1 + n);
	for(int i = 1; i <= n; ++i) {
		a[i] = lower_bound(all + 1, all + 1 + n, a[i]) - all;
	}
	for(int i = 1; i <= k; ++i) {
		scanf("%d%d", &xd[i].l, &xd[i].r);
		xd[i].l = getl(xd[i].l);
		xd[i].r = getr(xd[i].r);
		b[xd[i].l].push_back(i), e[xd[i].r].push_back(i);
	}
	ll ans = 1ll * n * (n - 1) * (n - 2) / 6;
	build(1, 1, n);
	for(int i = 1, len; i <= n; ++i) {
		len = b[i].size();
		for(int j = 0; j < len; ++j) {
			put(1, 1, n, xd[b[i][j]].l, xd[b[i][j]].r);
		}
		ll tmp = 0;
		tmp += get(1, 1, n, 1, i - 1).os + get(1, 1, n, i + 1, n).js;
		ans -= tmp * (tmp - 1) / 2;
		len = e[i].size();
		for(int j = 0; j < len; ++j) {
			put(1, 1, n, xd[e[i][j]].l, xd[e[i][j]].r);
		}
	}
	printf("%lld\n", ans);
	return 0;
}

事实上我也不知道为什么我的代码是别人的两倍长qwq


本文作者:Averyta

博客地址:https://blog.youkuaiyun.com/AngryVegetable

SpringBoot+Vue+Mysql社区医院信息平台(源码+文档) SpringBoot+Vue+Mysql学生宿舍信息管理系统 WEB端软件项目(源码+文档) 项目包含:①完整源码(后端+管理后台+用户前台);②数据库脚本文件;③万字论文文档;④开题报告;⑤答辩PPT;⑥项目运行视频教程。 项目架构: B/S 架构、MVC 分层设计 技术栈: Java、MySQL、SpringBoot、MyBatis-Plus、Token 权限校验、管理后台 Vue+ElementUI+ECharts、用户前台 Layui+jQuery、Maven 构建。 一、角色设计 学生用户: 注册登录、浏览宿舍信息、查询宿舍安排、在线报修、缴费查询、失物招领、桶装水预订、评论交流、收藏等。 商家用户: 注册登录、桶装水品牌与商品信息维护、预订订单查看与处理。 维修人员: 注册登录、查看待处理报修、接单维修、填写报修处理结果与进度反馈。 管理员: 学生管理、班级管理、宿舍信息管理、宿舍安排管理、报修处理管理、缴费信息管理、卫生检查与文明宿舍管理、失物招领管理、桶装水与商家管理、维修人员管理、公告资讯与轮播图管理等。 二、前台功能模块(学生端) 1. 首页展示:轮播图、宿舍公告、最新动态推荐、常用服务快速入口 2. 宿舍信息模块:宿舍列表、楼栋与房间条件筛选、宿舍详情查看、我的宿舍安排查询 3. 在线报修模块:在线提交宿舍设施报修申请、上传故障描述、查看报修进度与维修处理结果 4. 缴费模块:水电等缴费记录查询、缴费状态查看 5. 卫生检查与文明宿舍:宿舍卫生检查结果公示、文明宿舍展示 6. 失物招领模块:失物信息发布、招领信息发布、详情查看、评论互动 7. 桶装水预订:桶装水品牌与商品浏览、在线预订、我的预订记录查询 8. 假期留宿:假期留校申请提交、申请记录查询 9. 评论与收藏:信息评论、查看他人评论、评论回复互动、收藏感兴趣的内容 10. 个人中心... 立即下载

相关推荐

YOLOv8作物病害检测实战源码

这是一套基于YOLOv8n的农田病虫害目标检测系统,对叶片照片做目标检测,识别健康叶片、褐斑病、白粉病、锈病四类,并给出对应防治建议。全流程纯CPU可跑,配套交付完整Python源码、9章实战教程(md/html/pdf三种格式)、100张自造样本及YOLO标签、训练曲线与混淆矩阵截图、Tkinter界面和答辩PPT。 系统围绕五项功能展开:同一套推理逻辑覆盖图像、视频、摄像头三种来源;图形界面选文件即检测,画面叠彩色框标注病名与置信度,右侧面板同步给出症状与防治措施;检测记录自动写入CSV,统计页一键生成四类病害占比饼图;训练结束自动产出损失与精度曲线;内置防治建议文案库,检测命中即回填面板。 选型用YOLOv8n nano档,参数量约320万、权重约6.2MB,CPU单帧几十毫秒,小样本训练5到8分钟完成。数据由data_gen.py程序化绘制100张叶片图,固定随机种子,重跑分布一致,不依赖公开数据集。依赖全部锁版本,教程第7章整理了19条真实报错及排查方法,第8章给出换模型档、换PlantVillage数据集的迁移路径。 适合做计算机视觉方向课程设计或毕业设计的学生,也适合智慧农业方向想了解检测模型如何落进业务面板的学习者。不需要GPU,不需要系统学过目标检测,教程第3章会按需补齐原理。 使用时先pip install -r requirements.txt装好依赖,download_data.py下载预训练权重,data_gen.py生成样本后train.py训练,完成后用main.py infer批量检测或main.py gui启动界面。

codeforces 293B

#include #define N 55 #define K 11 using namespace std; const int MOD=1e9+7; int jc[K],a[N][N]; int cu[N][N][K]; int cx[K]; int n,m,k,ans,zy; inline int A(int n,int m){ long long tmp=1; for(int i=n;

流水的博客 371

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.youkuaiyun.com/mtl1994

codeforces 283,284(Round #174)题解

2A:暴力即可,有数学方法,答案即为phi(phi(p)),具体证明详见 http://jijiwaiwai163.blog.163.com/blog/static/186296211201261133849397/ 2B:记录'I'的个数a,'A'的个数b,a=0显然答案就是b,a=1答案显然只能为1,a>=2答案显然为0。 2C(1A):由于1~i均加一个值,完全没必要1~i都记录,只需

mlzmlz95的专栏 744

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?.docx

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

CodeForces - 293E Close Vertices(树上点分治 + 树状数组)

题意: 一棵树上 告诉你边权。 问你有多少点对满足的路上的权值之和 小于等于w, 边数小于等于L。 思路: 显然树上的点分治。 和男人八题一样, 只不过多加了一个边数小于等于L的限制。(一维限制变成二维限制) 做法肯定还是一样。 只不过在求经过重心满足要求点对时有点变化 (其余算法 看上一篇文章)。。 分析一下, 因为边权最大1e9, 边数最大1e5 , 因此, 边数这一个

aozil_yang的博客 631

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

分分钟百万条数据的微博爬虫分析

微博爬虫系列2-分析微博接口 大家好,我是W 经过上一篇的分析我们无意中发现了微博的接口,并且不做任何的账号、流量限制可以直接获取最完整的微博数据。接下来我们就通过分析微博粉丝接口查看其中的数据结构顺便看看能不能找到其他api。 分析微博粉丝接口 由微博爬虫系列1可以知道无意间发现的微博粉丝接口可以高频请求数据,并且其返回的数据都是最权威最全的,甚至用户无法查看的数据都可以找到了。接下来我们要分析...

Alian_W的博客 1万+

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

高校技术转移办公室人员如何系统化管理科技成果信息?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Android 用户界面---样式和主…

样式是给View或Window指定外观和格式的属性集合。样式能够指定如高、边距、字体颜色、字体尺寸、背景颜色等属性。样式被定义在一个与布局XML文件分开的XML资源文件中。 Android中的样式与Web设计中的层叠式样表类似,允许与内容分开设计。 例如,通过使用样式,可以把下面这个布局XML转换成引用样式的声明: 不使用样式属性:     android:layout_width="fill

210

科技中介服务机构如何构建标准化、模块化的智能服务工具?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Codeforces 741C 图论

Arpa’s overnight party and Mehrdad’s silent entering time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Note th

black_miracle的博客 897

使用 Python+PaddleOCR 实现图文识别:从入门到精通

在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等。PaddleOCR 是百度开源的一款强大的 OCR 工具包,它集成了多种先进的算法和模型,能够高效准确地进行图文识别。本文将详细介绍如何使用 PaddleOCR 和 Python 实现图文识别,并给出具体的代码和步骤。

爱搬砖的程序猿 5474

告别AT串口线!用STM32F407的USB FS口直连EC800M进行物联网通信

本文介绍了一种创新的物联网通信方案,利用STM32F407的USB FS接口直连EC800M模块,替代传统的AT串口线连接。通过详细的硬件对比、STM32CubeMX配置和USB驱动调试步骤,展示了如何实现更高效的AT指令通信,同时降低硬件复杂度和功耗。

weixin_29189987的博客 706

java多线程之线程间通信

1.多线程之等待与通知机制   1.1什么是等待通知机制?     在生活中,如我们去饭店,服务员拿菜单给我们点菜,然后记录完告诉厨房去做,然后服务员就处于等待状态了。然后厨师把菜做好,就通知服务员把菜端上去。然后服务员被通知之后,就处于被唤醒,然后把菜端过去,这就是一个等待通知的过程。    1.2等待通知机制的实现      1.2.1.等待:      .在调用wait之前,线程必

sunpy 6607

深入GD32/STM32引脚复用:你的JTAG/SWD接口是怎么‘消失’的?一次讲清原理与预防

本文深入解析GD32/STM32调试接口(JTAG/SWD)突然失效的原理与预防措施。通过分析MCU启动流程、引脚复用机制及典型错误代码模式,揭示调试接口'消失'的根本原因,并提供硬件设计检查清单、软件防护代码及开发流程优化方案,帮助开发者有效避免烧录失败问题。

weixin_42532938的博客 369

seata clientID 及channel选择

seata TC 给每个客户端(TM及RM)都会编一个ID,这个ID是在TC端根据RPC context来设置的,无法自行设置,具体相关代码如下: private static String buildClientId(String applicationId, Channel channel) { return applicationId + Constants.CLIENT_I...

weixin_40455124的博客 2728

CVE-2017-7921漏洞深度解析:海康设备明文密码泄露原理与七层防御

网络摄像头安全本质上是嵌入式Web服务安全,其核心在于身份认证机制是否健全。CVE-2017-7921并非传统远程执行漏洞,而是因信任错位导致的未授权API暴露——`/Security/users/1`接口绕过Session校验,直接返回admin明文密码。该问题根植于安防设备早期‘物理隔离+前端可控’的设计假设,在P2P、云平台等新场景下全面失效。技术价值在于揭示了轻量级HTTP服务中路径级访问控制缺失的普遍风险;典型应用场景包括ONVIF协议接管、Telnet后门登录及NVR侧横向移动。本文基于DS-2

weixin_33324197的博客 403

【记录】游戏体验报告怎么写(自我成长篇)

2019年3月更新: 这个倒是不用推翻,我个人虽然写的东西还是有一些偏差的,但是“表哥”说的倒是没毛病的,这篇主要是为了记录用,具体的干货也有,都在图片里,请自行提取 =====18年初原答案 作为一个游戏策划新人,游戏分析可能抓不到点子上,试着总结记录一下游戏体验报告分析的成长(因为水平不同,视野可能也不一样,也许之后几年回头看这些东西都是小儿科或者是错误的,所以只写出当下的想...

eat_human的博客 6万+
下一篇: 算法 | 虚树学习笔记
Averyta
博客等级 码龄7年 1粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值