王红元高级讲师
专注移动开发领域,多年iOS开发和教学经验,曾经带领团队开发出众多款 优秀APP作品。
国内知名视频聊天软件 < 新浪秀场 > 就出自王老师之手,王老师全 面负责 < 新浪秀场 > iOS客户端的设计和开发,并参与了 < 新浪秀场 > Android、Windows 、web端
开发。同时王老师还曾兼职担任过多家公司技术顾问,帮助其解决开发中的 重点难题。
除此之外,王老师还主导开发了< 智慧城市 > < 天翼看交通 > < 公交wifi > 等热门APP。王老师开发过的作品涉及旅游、交通、社交、视频等方面,对即时聊天、流媒体等技术有深入研究。
王老师不但开发经验丰富,授课风趣幽默,且激情四射。擅长以各种生活中 的案例出发,帮助学生理解消化学习中的各种难点。另外,王老师教学总是以学生角度思考讲解,备受学生喜爱。
Java工程师的工资待遇怎么样?
Java工程师的工资待遇怎么样?
Java软件工程师一般月薪范围在4000-10000元,远远超过了应届毕业生月薪 2500元的平均水平。通常来说,有一年工作经验的Java高级软件工程师的薪酬大致在年薪10—13万左右。
从Java的应用领域来分,Java语言的应用方向主要表现在以下三个方面:首 先是大中型的商业应用;其次是桌面应用,就是常说的C/S应用;再次是移动领域应用。
综上而言JAVA就业方向为:可以从事JSP网站开发、Java编程、Java游戏开 发、Java桌面程序设计,以及其他与Java语言编程相关的工作。可进入电信、银行、保险专业软件开发公司等从事软件设计和开发工作。
数据库关键技术
.数据库关键技术
-
01Mysql 基础
-
1.Mysql的安装和使用
-
2.图解Mysql程序结构
-
3.Mysql服务器的配置
-
4.Mysql 客户端使用
-
5.用户权限管理
-
6.Mysql数据库的使用
-
02SQL基础
-
1.SQL语句的三种类型
-
2.DML、DDL、DCL的应用
-
3.数据处理
-
4.子查询
-
5.创建和管理表
-
6.约束与分页
-
03JDBC
-
1.JDBC概述
-
2.获取数据库连接
-
3.数据库连接池C3P0 与 DBCP
-
4.使用JDBC 完成数据库DML操作
-
5.大数据的操作
-
6.批量处理与元数据
-
04DBUtils
-
1.使用QueryRunner
-
2.可插拔式结果集处理
-
3.批量处理
-
4.大数据结果集处理
-
5.自定义结果集处理
-
6.利用DBUtils编写通用 DAO
食物链 洛谷2024 并查集
>
题目描述
动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。 现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道 它到底是哪一种。 有人用两种说法对这 N 个动物所构成的食物链关系进行描述: **种说法是“1 X Y”,表示 X 和 Y 是同类。 第二种说法是“2 X Y”,表示 X 吃 Y 。 此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真 的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。 ? 当前的话与前面的某些真的话冲突,就是假话 ? 当前的话中 X 或 Y 比 N 大,就是假话 ? 当前的话表示 X 吃 X,就是假话 你的任务是根据给定的 N 和 K 句话,输出假话的总数。
输入输出格式
输入格式:
从 eat.in 中输入数据 **行两个整数,N,K,表示有 N 个动物,K 句话。 第二行开始每行一句话(按照题目要求,见样例)
输出格式:
输出到 eat.out 中 一行,一个整数,表示假话的总数。
输入输出样例
输入样例#1:
100 7 1 101 1 2 1 2 2 2 3 2 3 3 1 1 3 2 3 1 1 5 5
输出样例#1:
3
说明
1 ≤ N ≤ 5 ? 10^4 1 ≤ K ≤ 10^5
Analysis
把动物关系分成三类,a是它本身,a n是它吃什么,a n n是什么吃它
然后就各种判断啊,同一类的合并,例如a吃b,那么a n和b实际上是同一类动物,合并,以此类推 switch要用break啊记住记住要死要死 这题似乎是初二要求做的例题?现在补上
Code
#include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <iostream> #include <algorithm> #include <string> #include <vector> #include <deque> #include <list> #include <set> #include <map> #include <stack> #include <queue> #include <numeric> #include <iomanip> #include <bitset> #include <sstream> #include <fstream> #define debug puts("-----") #define rep(i, st, ed) for (int i = st; i <= ed; i = 1) #define drp(i, st, ed) for (int i = st; i >= ed; i -= 1) #define fill(x, t) memset(x, t, sizeof(x)) #define min(x, y) x<y?x:y #define max(x, y) x>y?x:y #define PI (acos(-1.0)) #define EPS (1e-8) #define INF (1<<30) #define ll long long #define db double #define ld long double #define N 100001 #define E N * 8 1 #define MOD 100000007 #define L 255 using namespace std; int fa[N * 3 1]; inline int read(){ int x = 0, v = 1; char ch = getchar(); while (ch < 0 || ch > 9 ){ if (ch == - ){ v = -1; } ch = getchar(); } while (ch <= 9 && ch >= 0 ){ x = (x << 1) (x << 3) ch - 0 ; ch = getchar(); } return x * v; } inline int getFather(const int &now){ return now == fa[now]? now: fa[now] = getFather(fa[now]); } inline int merge(const int &x, const int &y){ int fx = getFather(x), fy = getFather(y); if (fx ^ fy){ fa[fx] = fy; return 1; } return 0; } int main(void){ int n = read(), k = read(); int ans = 0; rep(i, 1, n n n){ fa[i] = i; } rep(i, 1, k){ int opt = read(), x = read(), y = read(); if (x > n || y > n){ ans = 1; // PRintf("in %d\n", i); }else{ switch (opt){ case 1:{ if (x ^ y){ if (getFather(x) == getFather(y n) || getFather(x) == getFather(y n n)){ ans = 1; // printf("in %d\n", i); }else{ merge(x, y); merge(x n, y n); merge(x n n, y n n); } } break; } case 2:{ if (getFather(x) == getFather(y) || getFather(x n n) == getFather(y)){ ans = 1; // printf("in %d\n", i); }else{ merge(x, y n n); merge(x n, y); merge(x n n, y n); } break; } } } } printf("%d\n", ans); return 0; }
相关推荐: