Codeforces Round #654 (Div. 2) E F
E1 Asterism (Easy Version)
题意: 有n个敌人,编号从1到n,每个人手中有ai 个糖果。yuzhu手中一开始有x个糖果,他会先决定一个从1到n的排列P,然后他会按照排列P的顺序分别与编号为Pi 的敌人决斗,如果yuzhu手中的糖果数大于等于敌人手中的糖果数,那么yuzhu获得胜利,并且获得一个糖果,否则他会失败,并且什么也不会获得,能够使yuzhu赢得所有决斗的排列称为有效排列。 Akari根据上述观点提出了以下问题:定义 F ( x ) F(x) F ( x ) 表示x的有效排列数。给你n,p以及ai ( 2 ≤ p ≤ n ≤ 2000 , 1 ≤ a i ≤ 2000 ) (2 \le p \le n \le 2000,1 \le a_i \le 2000) ( 2 ≤ p ≤ n ≤ 2 0 0 0 , 1 ≤ a i ≤ 2 0 0 0 ) ,其中p是一个质数,要求你找出满足 F ( x ) % p ≠ 0 F(x)\%p\neq0 F ( x ) % p = 0 ,即 F ( x ) F(x) F ( x ) 和p互质这一条件的x的数量。
思路: 首先,对于任意的x和ai ,将敌人编号按照ai 大小递增排序的排列P是最有可能是有效排列的。在这个排列的基础上,如果要赢得第i次决斗(i从0开始) 那就有 x + i ≥ a i x+i \ge a_i x + i ≥ a i ,对这个式子变形就可以得到 i ≥ a i − x i \ge a_i-x i ≥ a i − x ,也就是说,在满足 x + i ≥ a i x+i \ge a_i x + i ≥ a i ,即能够成功进行到第i次决定的条件下,原本i位置上的这个数字是可以变动到 a i − x a_i-x a i − x 到i-1这些位置上去的。于是就可以开一个数组b来记录每个位置上的能够出现的数字的数目,最后符合要求的排列总数就是 ∏ b i \prod b_i ∏ b i 。 显然当 x ≥ max ( a i ) x \ge \max(a_i) x ≥ max ( a i ) 时, F ( x ) = n ! F(x)=n! F ( x ) = n ! ,由于 p ≤ n p \le n p ≤ n ,此时 F ( x ) % p = 0 F(x)\%p=0 F ( x ) % p = 0 必然成立。由于ai 的范围不大(1 ≤ a i ≤ 2000 \le a_i \le 2000 ≤ a i ≤ 2 0 0 0 ),于是可以直接暴力枚举x(1 ≤ x ≤ 2000 \le x \le 2000 ≤ x ≤ 2 0 0 0 )来求每个 F ( x ) F(x) F ( x ) 。先对ai 序列按升序排序,从前往后遍历,如果不满足 x + i ≥ a i x+i \ge a_i x + i ≥ a i 则说明 F ( x ) = 0 F(x) =0 F ( x ) = 0 ,即不存在一个有效序列,自然也不可能与p互质,直接看x+1。对于每个i,求出 a i − x a_i-x a i − x ,在 b [ a i − x ] b[a_i-x] b [ a i − x ] 上加1,若 x > a i x \gt a_i x > a i ,则在 b [ 0 ] b[0] b [ 0 ] 上加1。通过前面的思路可以发现,我们现在的bi 并不是我上一段中所说的那个bi ,要得到上一段定义的bi ,应该是求 b [ i ] b[i] b [ i ] 的累加和,然后减去多加的一部分,即i前面位置的那些数,共i个,于是第i位上能够出现的数字数目为 ∑ 0 i b [ i ] − i \sum_0^ib[i]-i ∑ 0 i b [ i ] − i 。之后从前往后遍历一遍b数组,因为p是质数,故不需要求出总数目,只需看乘数中是否出现了p的倍数,即判断 ( ∑ 0 i b [ i ] − i ) % p (\sum_0^ib[i]-i)\%p ( ∑ 0 i b [ i ] − i ) % p 是否等于0即可,每一位都与p互质的即为满足条件的,记录下来以便之后输出。
代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define ull unsigned long long
#define PI acos(-1.0)
#define pii pair
#define fi first
#define se second
using namespace std;
const int N=2e3+100;
const int mod=1e9+7;
int n,p,a[N],b[N];
int main()
{
int T;
T=1;
// scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&p);
for(int i=0;i res;
for(int x=1;x<=2000;x++)
{
int flag=0;
memset(b,0,sizeof(b));
for(int i=0;i=n)
{
flag=1;
break;
}
else b[a[i]-x]++;
}
}
if(flag) continue;
for(int i=0;i0) b[i]+=b[i-1];
if((b[i]-i)%p==0)
{
flag=1;
break;
}
}
if(!flag) res.push_back(x);
}
printf("%d\n",res.size());
for(int i=0;i
E2 Asterism (Hard Version)
题意: 题意与E1相同,区别在于数据范围扩大了 ( 2 ≤ p ≤ n ≤ 1 e 5 , 1 ≤ a i ≤ 1 e 9 ) (2 \le p \le n \le 1e5,1 \le a_i \le 1e9) ( 2 ≤ p ≤ n ≤ 1 e 5 , 1 ≤ a i ≤ 1 e 9 ) 。
思路: 假设m是一个小于等于n的数,继承E1的思路可以推出, F ( x ) F(x) F ( x ) 一定是m!乘上(n-m)个小于等于m的数得到的,于是如果 F ( x ) % p = 0 F(x)\%p=0 F ( x ) % p = 0 ,那么 F ( x + 1 ) % p = 0 F(x+1)\%p=0 F ( x + 1 ) % p = 0 也一定成立(想一想,然后写几个例子就明白了)。那么就说明满足条件的 F ( x ) F(x) F ( x ) 一定是连续出现的,只要找到左右边界就可以直接输出了。左边界就是要对于任意的i满足 x + i ≥ a i x+i \ge a_i x + i ≥ a i ,则有 x ≥ a i − i x \ge a_i-i x ≥ a i − i ,即 x m i n = max ( a i − i ) x_{min}=\max(a_{i}-i) x m i n = max ( a i − i ) 。对于xmax 有从xmin 到xmax 都满足条件,从xmax +1到1e9都不满足条件,于是可以通过二分查找找出这个点,check的方法就可以参考上面E1的方法。
代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define ull unsigned long long
#define PI acos(-1.0)
#define pii pair
#define fi first
#define se second
using namespace std;
const int N=1e5+100;
const int mod=1e9+7;
int n,p,a[N],b[N];
int main()
{
int T;
T=1;
// scanf("%d%*c",&T);
while(T--)
{
scanf("%d%d",&n,&p);
for(int i=0;i res;
int mmin=a[0];
for(int i=1;i>1;
int flag=0;
memset(b,0,sizeof(b));
for(int i=0;i0) b[i]+=b[i-1];
if((b[i]-i)%p==0)
{
flag=1;
break;
}
}
if(flag) r=x;
else l=x+1;
}
if(mmin>=r) printf("0\n");
else
{
printf("%d\n",r-mmin);
for(int i=mmin;i
F Raging Thunder
题意: 有n个编号从1到n的传送带,每台输送机都有一个状态“<”或“>”。第i个传送带的初始状态取决给定的字符串的第i个字符。有n+1个编号从0到n的洞,第0号洞在1号传送带左边,其余所有洞i在传送带i的右边。 如果一个球在传送带i上,则它会按照如下规则移动。 如果传送带i的状态为"<": 1.如果i=1,球进入洞0; 2.如果传送带i-1状态为"<",球移动到传送带i-1; 3.如果传送带i-1状态为">",球进入洞i-1; 如果传送带i的状态为">": 1.如果i=n,球进入洞0; 2.如果传送带i+1状态为">",球移动到传送带i+1; 3.如果传送带i+1状态为"<",球进入洞i; 现在有n个询问,每个询问给出一个l,r,将区间[l,r]的传送带状态反转,然后在这些传送带上分别放一个球,问球最多的那个洞中的球的数量是多少,其中前面询问引起的传送带的反转会影响后面的询问,前面询问中的球不会累加到后面的询问中。
思路: 线段树分类讨论。这个问题的难点主要就在于区间合并和区间修改以及pushdown。 我的做法是将一段连续有关的区间看做一个块,如<<>><就可以看成<<和>><两个块。在线段树中记录最左块的长度,最右块的长度,最长中间块的长度(形如><的就叫中间块),最左块的朝向,最右块的朝向(向内走还是向外走),区间左右端点,区间是否朝向一致,区间块数量。 区间合并:
1.形如>|< 最长中间块=max(左右的中间块最大值,左区间最右块加右区间最左块) 如果左区间不全为>,则最左块=左区间最左块,否则最左块=左区间长度+右区间最左块长度 右区间同理 最左朝向=左区间最左朝向 最右朝向=右区间最右朝向 块数量=左块数量+右块数量-1 区间朝向肯定不一致,左右端点不用说了
2.形如>|> 如果右区间不全为>,则最长中间块=max(左右的中间块最大值,左区间最右块加右区间最左块),否则最长中间块=左右的中间块最大值 如果左区间不全为>,则最左块=左区间最左块,否则最左块=左区间长度+右区间最左块长度 如果右区间块数量=1,则最右块=左区间最右块+右区间长度,否则最右块=右区间最右块 最左朝向=左区间最左朝向 最右朝向=右区间最右朝向 块数量=左块数量+右块数量-1 左右区间朝向均一致则朝向一致,左右端点不用说了
3.形如<|< 与2同理
4.形如<|> 最简单的一种情况 最长中间块=左右的中间块最大值 最左块=左区间最左块 最右块=右区间最右块 最左朝向=左区间最左朝向 最右朝向=右区间最右朝向 块数量=左块数量+右块数量-1 区间朝向肯定不一致,左右端点不用说了
区间修改: 可以直接存正反两套信息,修改时就把两套信息互换即可,设一个lazy标记表示该区间是否需要反转,每次修改将指定区间的lazy异或1。
pushdown: 如果lazy标记为1则把该区间两套信息交换,再把标记向下传播,即把左右两个儿子的lazy标记异或1。
写的很麻烦,写着写着自己就晕了,肯定还有更简便的方法。
代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define ull unsigned long long
#define PI acos(-1.0)
#define pii pair
#define fi first
#define se second
using namespace std;
const int N=5e5+100;
const int mod=1e9+7;
int n,q;
char a[N];
struct Node
{
int l,r,lazy,all[2],cnt[2],ln[2],rn[2],mn[2],fl[2],fr[2];
}tr[4*N];
void pushup(Node &u,Node &l,Node &r)
{
for(int i=0;i<=1;i++)
{
u.mn[i]=max(l.mn[i],r.mn[i]);
u.ln[i]=l.ln[i];
u.rn[i]=r.rn[i];
u.fl[i]=l.fl[i];
u.fr[i]=r.fr[i];
u.cnt[i]=l.cnt[i]+r.cnt[i];
//cout<>1;
build(u<<1,l,mid);
build(u<<1|1,mid+1,r);
pushup(u);
}
}
void modify(int u,int l,int r)
{
if(tr[u].l>=l&&tr[u].r<=r)
{
tr[u].lazy^=1;
swap(tr[u].all[0],tr[u].all[1]);
swap(tr[u].cnt[0],tr[u].cnt[1]);
swap(tr[u].ln[0],tr[u].ln[1]);
swap(tr[u].rn[0],tr[u].rn[1]);
swap(tr[u].mn[0],tr[u].mn[1]);
swap(tr[u].fl[0],tr[u].fl[1]);
swap(tr[u].fr[0],tr[u].fr[1]);
}
else
{
pushdown(u);
int mid=tr[u].l+tr[u].r>>1;
if(l<=mid) modify(u<<1,l,r);
if(r>mid) modify(u<<1|1,l,r);
pushup(u);
}
}
Node query(int u,int l,int r)
{
if(tr[u].l>=l&&tr[u].r<=r) return tr[u];
else
{
pushdown(u);
int mid=tr[u].l+tr[u].r>>1;
if(r<=mid) return query(u<<1,l,r);
else if(l>mid) return query(u<<1|1,l,r);
else
{
Node t1=query(u<<1,l,r);
Node t2=query(u<<1|1,l,r);
Node res={t1.l,t2.r,0};
pushup(res,t1,t2);
return res;
}
}
}
int main()
{
int T;
T=1;
// scanf("%d%*c",&T);
while(T--)
{
scanf("%d%d%*c",&n,&q);
scanf("%s",a+1);
build(1,1,n);
for(int i=1;i<=q;i++)
{
int l,r;
scanf("%d%d",&l,&r);
modify(1,l,r);
// for(int i=1;i<=9;i++)
// cout<
你可能感兴趣的:(codeforces,线段树,逻辑,思维,数据结构)
数据结构奇妙旅程之深入解析快速排序
山间漫步人生路
数据结构 排序算法 算法
快速排序(QuickSort)是一种高效的排序算法,它使用了分治法的策略来将一个数组排序。其基本思想是选择一个基准元素,通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比基准元素小,另一部分的所有数据都比基准元素大,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。工作原理选择基准:从待排序的序列中选一个元素作为基准(pivo
浙江女大学生“卖淫日记”曝光,震惊全网:背后还藏着一个真相
地球上的星星_272e
作者/在风来源/微信公众号:自黑思维最近,一个新闻震碎无数人的三观:在浙江农林大学,有一位女大学生,在网上公开自己的“卖淫日记”,无论是文字还是图片,都非常露骨。而目前关于这事的瓜,都已经被删得七七八八,但我有保留截图的习惯,所以才有了这篇文章。首先,必须要强调的一点,就是这事不是谣传,是真的,学校已经出来证实过。只是学校表示该名女学生有精神病。但到底是不是真的精神有问题?我们可以从她的日记里,略
#D174-读书会作业-《财务自由之路》3
白洲笔记
最近沉迷于写作营,一直就没时间去弄读书会的作业,书的第二遍也就看了个开头,趁着日更的时间,赶紧把作业做了,这次是15到21课。【1.印象最深刻的部分】(本周所读内容中印象最深刻的部分)*活在未来,最正确的方法是什么?用正确的方法做正确的事情,判断什么是正确的?逻辑。学会思考。"作对事情"永远比“把事情作对“重要的多。”长远思考,耐心验证,小心总结提炼“证明自己正确并不是学习的任务和目标,时刻成长,
OpenCV 如何使用 XML 和 YAML 文件的文件输入和输出
愚梦者
深度学习 人工智能 计算机视觉 c++ opencv
返回:OpenCV系列文章目录(持续更新中......)上一篇:如何利用OpenCV4.9离散傅里叶变换下一篇:目标本文内容主要介绍:如何使用YAML或XML文件打印和读取文件和OpenCV的文本条目?如何对OpenCV数据结构做同样的事情?如何为您的数据结构执行此操作?使用OpenCV数据结构,例如cv::FileStorage,cv::FileNodeorcv::FileNodeIterato
【奶茶剧本杀】玩吧《梨园醉》剧本杀凶手是谁剧透+真相答案复盘解析攻略
VX搜_奶茶剧本杀
本文为玩吧剧本杀《梨园醉》剧本杀测评+部分真相复盘,获取完整真相复盘只需两步:①、关注微信公众号【奶茶剧本杀】→②、回复玩吧剧本杀《梨园醉》即可获取查看玩吧剧本杀《梨园醉》剧本杀真相答案复盘+凶手剧透:以下是玩家评测+部分关键证据,凶手,时间线,复盘解析,推理逻辑--------------------------------------------------------------------
【数据结构】实验一 实现顺序表各种基本运算的算法
张鱼·小丸子
数据结构实验 c++ 数据结构
题目:实现顺序表各种基本运算的算法要求:1、建立一个顺序表,输入n个元素并输出;2、查找线性表中的最大元素并输出;3、在线性表的第i个元素前插入一个正整数x;4、删除线性表中的第j个元素;5、将线性表中的元素按升序排列;6、将线性表中的元素就地逆序(只允许用一个暂存单元);#include#defineSIZE1000usingnamespacestd;typedefstruct{int*a;//
如何成为思维的高手?
明安包装闫慧玲
六项精进训练营Day2复盘20210112湖北荆州学习靠氛围,成长靠圈子1.关于金钱认知金句:1.当今世界,非钱不行2.有钱能使鬼推磨3.金钱是万恶之本4.时间就是金钱5.金钱不是万能的,但是没有钱是万万不能的6.谈钱伤感情,谈感情伤钱道德系统→好人→美德→回流利益系统→好好生活天下熙熙皆为利来,天下攘攘皆为利往出自西汉著名史学家、文学家司马迁《史记》的第一百二十九章“货殖列传”。这句话意思是说天
十分钟自由写作
知意zy
主题:我缺乏的东西自从加入2022年弘丹写作学院,感觉每天的生活都忙碌了起来,我要上班,要学习。所以我每天都必须拼尽全力向前奔跑,才追得上小伙伴们的脚步。在写作学院,我学会了反省自己的不足,我的想法多,缺乏的东西也太多。比如:写作的文笔,写作逻辑,底层自信心……看到社群里那么多优秀的小伙伴,我感觉自己越来越自卑,我这么一个平庸的人,会完成今年的写作目标吗?我开始不停怀疑自己是否能坚持下去。而弘丹老
风险管理和采购管理核心考点梳理
WorkLee
PMP PMP 风险管理 采购管理
个人总结,仅供参考,欢迎加好友一起讨论PMP-风险管理和采购管理核心考点梳理风险管理风险是一个中性词,包括机会和威胁。风险管理的子过程非常多,但是相对来说子过程之间的逻辑非常清晰,整个风险管理的过程都是在维护一个非常重要的工件-风险登记册。风险管理是项目管理全生命周期都要开展的。1)规划风险管理风险管理计划包含哪些内容?解析:风险管理计划是描述如何安排与实施风险管理活动。(风险管理计划中无风险)包
Numpy、Pandas库的使用
貮叁
量化投资分析 python python 数据分析
目录Numpy1、概述2、基础操作2.1生成一个numpy的array数组:2.2自定义一个新的数据类型:np.dtype()3、并行化思想4、量化分析应用4.1索引选取和切片选择4.2数据转换与规整4.3逻辑条件进行数据筛选4.4通用序列函数4.5文件保存与读取Pandas1、简介2、Series和DataFrame的使用2.1Series2.2DataFrame3、量化分析应用3.1形成一个p
分享
Jiemina
借助分享每一位父母必须为孩子做的最重要的一件事就是——帮助孩子培养出能够有效照顾自己人生的能力!具体为:1、生活的能力;2、思维的能力;3、面对与解决问题的能力;4、有效与人相处的能力;5、接受和欣赏自己的能力;6、不断自我提升的能力;7、未来策划的能力。
Java中HashMap底层数据结构及主要参数?
山间漫步人生路
java 数据结构 开发语言
在Java中,HashMap的底层数据结构主要基于数组和链表,同时在Java8及以后的版本中,当链表长度超过一定阈值时,链表会转换为红黑树来优化性能。这种结构结合了数组和链表的优点,既提供了快速的随机访问,又允许动态地扩展存储桶的大小。HashMap的主要参数包括:初始容量(InitialCapacity):这是HashMap在创建时设定的桶数组的大小。默认值为16。这个值可以根据预计存储的键值对
C语言pthread互斥锁(mutex)和可重入锁(递归锁recursive)的演示
嫦娥妹妹等等我
开发语言 c语言
实验理论参考:1一旦共享资源被互斥锁锁定,则其余线程想访问共享资源必须等待,直到锁被释放2使用normal属性的互斥锁,一旦发生重入逻辑,则阻塞,成为死锁需要将属性改为recursive成为可重入的,递归的代码功能:1命令行传参1model=1演示异步未上锁之乱序演示count在数据竞态(RaceCondition)下的错误值2命令行传参2model=2演示使用互斥锁后线程的执行顺序演示count
Linux初学(十)shell脚本
王依硕
Linux linux 运维 服务器
一、for循环1.1循环的格式for变量in列表do代码代码....done循环的逻辑:将列表中的每个元素逐一赋值给变量每赋值一次,do和done之间的代码就会执行一次1.2列表的生成方式方法1:直接给出列表元素【用空格分隔多个元素】133129hahabaidu方法2:用通配符来生成元素/home/a*方法3:用命令来生成元素ls/etc/方法4:用{}展开的形式生成元素{3..7}{a..e}
爱情真的能永恒吗?
作家雪漠
爱情真的能永恒吗?◈|作者:雪漠★一位哲学家曾说:“人不能两次踏入同一条河流。”为什么这么说呢?因为当你第二次踏入某条河流的时候,它已经不是你第一次踏入的那条河了,河中不断流动的水早已发生了变化。同理,人也不能两次接触同一个人。因为,每时每刻,人身上的细胞都在发生着变化,想法、心念、心情、思维都在时时刻刻发生着变化。有些人老是埋怨自己的女朋友说话不算数,因为她老是食言,昨天答应的事,今天就变了,但
2021-08-19
飞翔快乐
今天早上去上班,我谨记当下的注意力,而且不要把思维局限在相貌上,所以早上去单位的感觉还是不错的。到了单位后,来的还挺早,自己的精力还算充沛,上午虽然感觉和菁菁相处地有些距离,与其他人的相处比昨天好不少。上午在会议室将相框安装了一下,可能在会议室一个人操作时间有些长,情绪开始低沉。后来孟总进到会议室里,没有怎么跟我说话。后来临近中午的时候,梦君到办公室里,跟我说某位同样是科大的同学要来我们公司,这让
OpenCV图像像素逻辑操作
苍天饶过谁?
OpenCV学习 opencv 人工智能 计算机视觉 c++
cv::Matm1=cv::Mat::zeros(Size(256,256),CV_8UC3);cv::Matm2=cv::Mat::zeros(Size(256,256),CV_8UC3);rectangle(m1,Rect(100,100,80,80),Scalar(255,255,0),-1,LINE_8,0);rectangle(m2,Rect(150,150,80,80),Scalar(
list.sort()&&Collections.sort()深入理解
有点野的程序猿
经验总结 list java 数据库 开发语言
list.sort()&&Collections.sort()文章目录list.sort()&&Collections.sort()背景相关代码代码一代码二原理举一反三业务场景考虑背景业务中经常用到List的sort()方法,但是对于其中return的-1,0,1理解不到位,导致业务出现错误;网上对于-1,0,1的表述并不是很清楚,今天详细聊一聊。相关代码先分享两段代码业务逻辑:通过student
数字逻辑不可能涌现出智能
dog250
人工智能
先看一系列竖式乘法的步骤:相乘的两个数数位越大,步骤越多。如果不纠结数制,二进制运算也是这回事,把单个步骤用一个晶体管表达(其实一个步骤不止一个晶体管),数位越大,所需的晶体管越多。先说结论,所有基于n进制的逻辑运算都不可扩展。硅基时序电路可如此巧妙完成精确计算,开启了数字化时代,人们试图将AI构建在这二进制世界。但若二进制运算不可扩展,基于数字逻辑的人工智能就不可能。前面提到过,二进制运算本质上
java中栈和队列的解释和使用
。。。。。96
java 开发语言
一、栈在Java中,栈(Stack)是一种基于后进先出(LIFO)原则的数据结构,用于存储和管理对象。栈通常用于方法调用、表达式求值、历史记录管理等场景。在Java中,栈的常用方法包括:push(Eitem):将元素压入栈顶。pop():移除并返回栈顶元素。peek():查看栈顶元素,但不移除它。empty():检查栈是否为空。search(Objecto):查找特定元素在栈中的位置,返回相对于栈
《命不该绝》剧本杀复盘/凶手/剧透/真相/答案/攻略
VX搜_小燕子复盘
为了你获得更好的游戏体验,本文仅显示《命不该绝》剧本杀部分真相复盘,获取完整真相复盘只需两步①【微信关注公众号:集美复盘】②回复【命不该绝】即可查看获取哦﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎1、剧本杀《命不该绝》角色介绍大雄案:玩家认为只有茶水博士和大雄有过交集所以凶手是茶水博士,同样是合理的逻辑,视情况来进行追问。静香案:玩家须推理出书柜的转动,然后知道书柜转动的
我们正在进入一个这样的时代——个性化时代
北斗书院
大家可能都知道斯芬克斯之谜,斯芬克斯是希腊神话中一个长着狮子躯干、女人头面的有翼怪兽,谓之一人千面。1949年,神话学大师约瑟夫·坎贝尔《千面英雄》(Theherowithathousandfaces)封山之作诞生,斯芬克斯被写进了书里。70年之后,我们似乎重新洞察到了神话与现实之间的玄机。现代商业社会,品牌进入到了满足任何细枝末节的微不足道的需求阶段,于是,在品牌的市场逻辑里面,由千人一面进化到
如何做已有功能的优化?
三旬老郑丶
功能点的优化是最基础的工作1、对功能点的不断优化就是迭代2、不要期望用新加功能来解决老的功能问题3、功能优化和新功能的设计有什么区别?(1)反应速度不同:邮件、甚至口头搞定(2)开发难度不同:一般都是1-3天/人的工作量(3)评判标准不同:更强调效果对比分析产品功能的现状与逻辑1、用户:都有哪些用户会用到这个页面/功能2、流程:用户的使用流程是如何的?3、逻辑:产品底层逻辑(业务流程)是如何的?现
稻盛和夫“经营十二条实践”,第38天
46e4fb8aa306
重视独创性:“独创”包含“个人独有的发明创造”、即“别人不愿意做”或“做不了”的事。这不仅意味着困难和高水平,还包括麻烦、又脏又善及看似赚不到钱的工作。“做其他人不肯做的工作”其实是一种思维方式。它是孙子的“不战而胜”“胜于易胜”的原则在实际生活中的应用。刻苦钻研,爱上工作:想必大家对自己喜欢的事时时刻刻都会放在心上,昼思夜想,乐此不疲吧?只要我们爱上工作,就会像爱上打高尔夫球一样,情不自禁地想方
日精进177天
管西芹
敬爱的李老师,智慧的班主任,亲爱的跃友们大家好:2019年1月7号我是(管西芹),我的日精进行动第177天和大家分享我今天的进步,我们互相勉励,携手前行。每天进步一点点,距离成功便不远。分享自己的快乐。1.比学习:读书思路决定出路,学习经济法。2、比改变:所有的改变都是内心的态度,和主动的去做。说到不如做到。心变世界就变。观世界才有世界观。利他思维。3、比付出:付出是一种美德。换种思维发现所有的事
数据结构——单向链表(C语言版)
GG Bond.ฺ
数据结构 链表 c语言
在数据结构和算法中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在C语言中,我们可以使用指针来实现单向链表。下面将详细介绍如何用C语言实现单向链表。目录1.定义节点结构体2.初始化链表3.插入节点4.删除节点5.遍历链表6.主函数1.定义节点结构体首先,我们需要定义表示链表节点的结构体。每个节点包含一个数据域和一个指向下一个节点的指针域。typedefst
要件诉讼九步法
lafitebash
一、要件诉讼九步法的基本逻辑1)基本逻辑法律适用坚持“以事实为依据,以法律为准绳”,凡是起诉必先有事实根据,有事实根据才能寻找请求基础,有请求基础就能划分法律要件,有法律要件必有其相对应的要件事实。在诉讼中,当事人对其要件事实进行主张、证明和论证:在起诉答辩阶段,当事人对其要件事实进行主张;在法庭调查阶段,当事人对其有争议的主张进行举证证明;在法庭辩论阶段,当事人对其证明的主张符合法律要件进行论证
悟空本事练成记,跟吴承恩学写小说系列之二
孙老师的教育观
点击上方“俊斋说书”,关注后重温经典名著小故事,记得分享噢!导读:孙少不自量力,试图用全新的视角解读西游,是从小说的行文逻辑和做人做事的启示等方面入手的。今天我们来谈谈《西游记》第二回的读书心得。原著第二回的题目叫“悟彻菩提真妙理,断魔归本合元神。”这是四百多年前那会的人写小说最流行的起名方式。时移境迁,到今天我们基本上已不知道是什么意思了。孙少根据第二回的主要内容给它起了个通俗易懂的名字,叫“悟
--Ynow Kourself 《所以,一切都是童年的错吗?》
桃夭夭啊啊啊啊
如何主动,有意地提升人格?1,改变思维模式,停止标签化、固化自己2,设置具体的目标3,设置具体的计划4,如果你还不能真正做到,先“假装”自己可以做到5,给自己留出一些用来“崩溃”的时间6,把自己扔到新环境中7,写日记图片发自App
数据结构之有序表
普通的一个普通猿
数据结构 数据结构
目录一简介二抽象数据类型描述三有序表的存储结构三有序表的基本运算一简介有序表是一种线性数据结构,其中元素按照特定顺序排列,每个元素具有一个唯一的键值,并且该键值在表中的位置反映了其相对大小关系。在有序表中,可以根据键值快速查找、插入和删除元素,常见的有序表包括有序数组和平衡二叉搜索树等结构。通过维护元素间的有序性,有序表提供了高效的检索服务,例如可以在对数时间内完成查找、插入和删除操作。二抽象数据
java线程Thread和Runnable区别和联系
zx_code
java jvm thread 多线程 Runnable
我们都晓得java实现线程2种方式,一个是继承Thread,另一个是实现Runnable。
模拟窗口买票,第一例子继承thread,代码如下
package thread;
public class ThreadTest {
public static void main(String[] args) {
Thread1 t1 = new Thread1(
【转】JSON与XML的区别比较
丁_新
json xml
1.定义介绍
(1).XML定义
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标
c++ 实现五种基础的排序算法
CrazyMizzz
C++ c 算法
#include<iostream>
using namespace std;
//辅助函数,交换两数之值
template<class T>
void mySwap(T &x, T &y){
T temp = x;
x = y;
y = temp;
}
const int size = 10;
//一、用直接插入排
我的软件
麦田的设计者
我的软件 音乐类 娱乐 放松
这是我写的一款app软件,耗时三个月,是一个根据央视节目开门大吉改变的,提供音调,猜歌曲名。1、手机拥有者在android手机市场下载本APP,同意权限,安装到手机上。2、游客初次进入时会有引导页面提醒用户注册。(同时软件自动播放背景音乐)。3、用户登录到主页后,会有五个模块。a、点击不胫而走,用户得到开门大吉首页部分新闻,点击进入有新闻详情。b、
linux awk命令详解
被触发
linux awk
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
awk处理过程: 依次对每一行进行处理,然后输出
awk命令形式:
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
[-F|-f|-v]大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=val
各种语言比较
_wy_
编程语言
Java Ruby PHP 擅长领域
oracle 中数据类型为clob的编辑
知了ing
oracle clob
public void updateKpiStatus(String kpiStatus,String taskId){
Connection dbc=null;
Statement stmt=null;
PreparedStatement ps=null;
try {
dbc = new DBConn().getNewConnection();
//stmt = db
分布式服务框架 Zookeeper -- 管理分布式环境中的数据
矮蛋蛋
zookeeper
原文地址:
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
安装和配置详解
本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网 http://hadoop.apache.org/zookeeper/来获取,Zookeeper 的安装非常简单,下面将从单机模式和集群模式两
tomcat数据源
alafqq
tomcat
数据库
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。
没有使用JNDI时我用要这样连接数据库:
03. Class.forName("com.mysql.jdbc.Driver");
04. conn
遍历的方法
百合不是茶
遍历
遍历
在java的泛
linux查看硬件信息的命令
bijian1013
linux
linux查看硬件信息的命令
一.查看CPU:
cat /proc/cpuinfo
二.查看内存:
free
三.查看硬盘:
df
linux下查看硬件信息
1、lspci 列出所有PCI 设备;
lspci - list all PCI devices:列出机器中的PCI设备(声卡、显卡、Modem、网卡、USB、主板集成设备也能
java常见的ClassNotFoundException
bijian1013
java
1.java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory 添加包common-logging.jar2.java.lang.ClassNotFoundException: javax.transaction.Synchronization
【Gson五】日期对象的序列化和反序列化
bit1129
反序列化
对日期类型的数据进行序列化和反序列化时,需要考虑如下问题:
1. 序列化时,Date对象序列化的字符串日期格式如何
2. 反序列化时,把日期字符串序列化为Date对象,也需要考虑日期格式问题
3. Date A -> str -> Date B,A和B对象是否equals
默认序列化和反序列化
import com
【Spark八十六】Spark Streaming之DStream vs. InputDStream
bit1129
Stream
1. DStream的类说明文档:
/**
* A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous
* sequence of RDDs (of the same type) representing a continuous st
通过nginx获取header信息
ronin47
nginx header
1. 提取整个的Cookies内容到一个变量,然后可以在需要时引用,比如记录到日志里面,
if ( $http_cookie ~* "(.*)$") {
set $all_cookie $1;
}
变量$all_cookie就获得了cookie的值,可以用于运算了
java-65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
bylijinnan
java
参考了网上的http://blog.csdn.net/peasking_dd/article/details/6342984
写了个java版的:
public class Print_1_To_NDigit {
/**
* Q65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999
* 1.使用字符串
Netty源码学习-ReplayingDecoder
bylijinnan
java netty
ReplayingDecoder是FrameDecoder的子类,不熟悉FrameDecoder的,可以先看看
http://bylijinnan.iteye.com/blog/1982618
API说,ReplayingDecoder简化了操作,比如:
FrameDecoder在decode时,需要判断数据是否接收完全:
public class IntegerH
js特殊字符过滤
cngolon
js特殊字符 js特殊字符过滤
1.js中用正则表达式 过滤特殊字符, 校验所有输入域是否含有特殊符号function stripscript(s) { var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"
hibernate使用sql查询
ctrain
Hibernate
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transa
linux shell脚本中切换用户执行命令方法
daizj
linux shell 命令 切换用户
经常在写shell脚本时,会碰到要以另外一个用户来执行相关命令,其方法简单记下:
1、执行单个命令:su - user -c "command"
如:下面命令是以test用户在/data目录下创建test123目录
[root@slave19 /data]# su - test -c "mkdir /data/test123" 
好的代码里只要一个 return 语句
dcj3sjt126com
return
别再这样写了:public boolean foo() { if (true) { return true; } else { return false;
Android动画效果学习
dcj3sjt126com
android
1、透明动画效果
方法一:代码实现
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.fragment_main, container, fals
linux复习笔记之bash shell (4)管道命令
eksliang
linux管道命令汇总 linux管道命令 linux常用管道命令
转载请出自出处:
http://eksliang.iteye.com/blog/2105461
bash命令执行的完毕以后,通常这个命令都会有返回结果,怎么对这个返回的结果做一些操作呢?那就得用管道命令‘|’。
上面那段话,简单说了下管道命令的作用,那什么事管道命令呢?
答:非常的经典的一句话,记住了,何为管
Android系统中自定义按键的短按、双击、长按事件
gqdy365
android
在项目中碰到这样的问题:
由于系统中的按键在底层做了重新定义或者新增了按键,此时需要在APP层对按键事件(keyevent)做分解处理,模拟Android系统做法,把keyevent分解成:
1、单击事件:就是普通key的单击;
2、双击事件:500ms内同一按键单击两次;
3、长按事件:同一按键长按超过1000ms(系统中长按事件为500ms);
4、组合按键:两个以上按键同时按住;
asp.net获取站点根目录下子目录的名称
hvt
.net C# asp.net hovertree Web Forms
使用Visual Studio建立一个.aspx文件(Web Forms),例如hovertree.aspx,在页面上加入一个ListBox代码如下:
<asp:ListBox runat="server" ID="lbKeleyiFolder" />
那么在页面上显示根目录子文件夹的代码如下:
string[] m_sub
Eclipse程序员要掌握的常用快捷键
justjavac
java eclipse 快捷键 ide
判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键盘一是为了输入代码(当然了,也包括注释),再有就是熟练使用快捷键。 曾有人在豆瓣评
《卓有成效的程序员》:“人有多大懒,才有多大闲”。之前我整理了一个
程序员图书列表,目的也就是通过读书,让程序员变懒。 写道 程序员作为特殊的群体,有的人可以这么懒,懒到事情都交给机器去做,而有的人又可
c++编程随记
lx.asymmetric
C++ 笔记
为了字体更好看,改变了格式……
&&运算符:
#include<iostream>
using namespace std;
int main(){
int a=-1,b=4,k;
k=(++a<0)&&!(b--
linux标准IO缓冲机制研究
音频数据
linux
一、什么是缓存I/O(Buffered I/O)缓存I/O又被称作标准I/O,大多数文件系统默认I/O操作都是缓存I/O。在Linux的缓存I/O机制中,操作系统会将I/O的数据缓存在文件系统的页缓存(page cache)中,也就是说,数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。1.缓存I/O有以下优点:A.缓存I/O使用了操作系统内核缓冲区,
随想 生活
暗黑小菠萝
生活
其实账户之前就申请了,但是决定要自己更新一些东西看也是最近。从毕业到现在已经一年了。没有进步是假的,但是有多大的进步可能只有我自己知道。
毕业的时候班里12个女生,真正最后做到软件开发的只要两个包括我,PS:我不是说测试不好。当时因为考研完全放弃找工作,考研失败,我想这只是我的借口。那个时候才想到为什么大学的时候不能好好的学习技术,增强自己的实战能力,以至于后来找工作比较费劲。我
我认为POJO是一个错误的概念
windshome
java POJO 编程 J2EE 设计
这篇内容其实没有经过太多的深思熟虑,只是个人一时的感觉。从个人风格上来讲,我倾向简单质朴的设计开发理念;从方法论上,我更加倾向自顶向下的设计;从做事情的目标上来看,我追求质量优先,更愿意使用较为保守和稳妥的理念和方法。
&