down

Airport HDU - 5046

此生再无相见时 提交于 2019-11-29 04:13:25
The country of jiuye composed by N cites. Each city can be viewed as a point in a two- dimensional plane with integer coordinates (x,y). The distance between city i and city j is defined by d ij = |x i - x j | + |y i - y j |. jiuye want to setup airport in K cities among N cities. So he need your help to choose these K cities, to minimize the maximum distance to the nearest airport of each city. That is , if we define d i (1 ≤ i ≤ N ) as the distance from city i to the nearest city with airport. Your aim is to minimize the value max{d i |1 ≤ i ≤ N }. You just output the minimum. InputThe first

Android View事件分发源码分析

▼魔方 西西 提交于 2019-11-29 03:58:59
今天通过源码分析下Android事件分发机制,分别从Activity、ViewGroup、View进行分析 Activity的事件分发 当点击屏幕,MetionEvent.MOVE_DOWND的时候,首先会调用dispatchTouchEvent(),其源码如下: public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { onUserInteraction(); } if (getWindow().superDispatchTouchEvent(ev)) { return true; } return onTouchEvent(ev); } 当按下操作的时候会调用onUserInteraction()方法,该方法进入发现是空实现,其翻译: 每当将按键、触摸或轨迹球事件发送到活动。如果您希望知道用户在活动运行时以某种方式与设备交互。此回调和@link onUserLeaveHint旨在帮助活动智能地管理状态栏通知;具体来说,帮助活动确定取消通知的适当时间 /** * Called whenever a key, touch, or trackball event is dispatched to the * activity.

从源码角度理解Android View的事件分发机制(一)

时间秒杀一切 提交于 2019-11-29 03:56:25
开个头 事件分发机制,应该有很多android开发者都望而却步。心里大概都知道事件分发机制不就是各种手势事件从父布局,传到了View中。但是一旦面试的时候,让你谈一谈事件分发机制,就愣住了,感觉没什么好说的,或者说不出来个12345。接下来,让我们从源码看看这个事件分发到底是怎么分发的。 标题叫做View的事件分发机制,有很多人叫android的事件分发机制。其实这个事件分发主要还是对View来说的,因为只有View才能监听各种点击或者滑动事件,所以,我们大可叫他View的事件分发机制。 事件的传递规则 首先我们要知道三个方法 //字面意思了解一下,分发触摸事件。在View和ViewGroup里面都有这个方法 //1、在View类里,是用来判断View是否是把一个事件(运动事件,事件,手势事件都差不多一个意思)消耗掉了。 //消耗掉了的意思就是,这个事件GG了,不会继续往下传或者往上穿了。 //2、在ViewGropup里,是判断,要不要拦截这个事件,要不要发放给他的子View。 public boolean dispatchTouchEvent (MotionEvent event){} //字面意思了解一下,拦截触摸事件。只有ViewGroup里面有这个方法,并且默认返回false //这个方法就是ViewGroup在dispatchTouchEvent方法里判断

源码解析Android中的事件处理

强颜欢笑 提交于 2019-11-29 03:54:49
一,事件处理 Android提供了两套事件处理机制: 1.基于监听的事件处理。 2.基于回调的事件处理。 基于回调的事件处理用于处理一些具有通用性的事件,基于监听的事件处理用于处理与具体业务相关的事件。 基于监听的事件处理 基于监听的事件处理是在指定view组件上绑定指定的监听器。比如点击事件: 可以以匿名内部类形式绑定监听器: button.setOnClickListener( new View.OnClickListener() { @Override public void onClick (View view) { } }); 或者: // Create an anonymous implementation of OnClickListener private OnClickListener mCorkyListener = new OnClickListener() { public void onClick(View v) { // do something when the button is clicked } }; protected void onCreate(Bundle savedValues) { ... // Capture our button from layout Button button = (Button)findViewById(R

LeetCode59. 螺旋矩阵2 (Java实现)

陌路散爱 提交于 2019-11-29 00:14:07
题目描述: 给定一个数 n n n ,生成一个以1~ n 2 n^2 n 2 的二维数组,数组中的元素按照顺时针旋转方式依次排放。 如:给定数字 n = 3 n=3 n = 3 , 生成的矩阵为: 解题思路: 这个顺时针循环旋转的方式,其实就是每次从左至右放入元素,在从上至下放入最后一列元素, 之后,从右至左放入最后一行元素,再从下至上放入第一列元素,依次循环。如下图: 整个过程的重点在于对第一行,最后一列,最后一行以及第一列的遍历。 设置四个参数分别表示这四个参数,up, right, down, left。当第一行遍历完成后,up加一。之后遍历最后一列,完成后,right减一。再遍历最后一行,完成后,down减一。最后遍历第一列,完成后,left加一。依次进行,直到 u p > d o w n up>down u p > d o w n 或 l e f t > r i g h t left>right l e f t > r i g h t ,则停止遍历。 代码如下: public int [ ] [ ] generateMatrix ( int n ) { int [ ] [ ] matrix = new int [ n ] [ n ] ; int left = 0 ; int up = 0 ; int right = n - 1 ; int down = n - 1 ;

数据结构模板

爷,独闯天下 提交于 2019-11-28 16:02:44
这里主要收录一些数据结构的模板 啊我还是太弱了居然要收录模板 1.树状数组 1 //树状数组 2 int a[],t[]//原数组,对应的树状数组 3 int lowbit(int x) 4 { 5 return x&(-x); 6 } 7 void modify(int x,int y)//单点修改a[x]加上y 8 { 9 for(int i=x;i<=n;i+=lowbit(i)) 10 { 11 t[i]+=y; 12 } 13 } 14 int query(int x)//区间求和a[1]....a[x] 15 { 16 int ans=0; 17 for(int i=x;i>=1;i-=lowbit(i)) 18 { 19 ans+=t[i]; 20 } 21 return ans; 22 } 23 int sum(int l,int r)//区间求和a[l]....a[r] 24 { 25 return query(r)-query(l-1); 26 } 树状数组 以及稍稍的变种 1 //区间修改,单点查询的树状数组,利用差分思想 2 #include<iostream> 3 #include<cstdio> 4 #include<cstring> 5 #include<cmath> 6 #include<algorithm> 7 using namespace

The Problem to Slow Down You

醉酒当歌 提交于 2019-11-28 13:14:47
The Problem to Slow Down You 输入:t个测试样例,每个样例输入两个字符串 输出:这两对字符串的回文串可以组成多少对本质不同的回文串 题意:给你两个字符串,然后问你这两字符串中 有多少对本质不同的字符串子序列 #include<iostream> #include<stdio.h> #include <algorithm> #include <string> #include<string.h> #include<math.h> #define ll long long using namespace std; const int MAXN = 300005 ; const int N = 26 ; char s[MAXN],ss[MAXN];//输入的要处理的字符串 ll ans=0; struct Palindromic_Tree { int next[MAXN][26] ;//next指针,next指针和字典树类似,指向的串为当前串两端加上同一个字符构成 int fail[MAXN] ;//fail指针,失配后跳转到fail指针指向的节点 //回文树里面的一个节点就代表一个回文串 int cnt[MAXN] ;//表示第i个节点代表的回文串出现的次数 int num[MAXN] ; //表示以节点i表示的最长回文串的最右端点为回文串结尾的回文串个数。

Python监听鼠标键盘事件

纵然是瞬间 提交于 2019-11-28 09:34:02
# -*- coding: utf-8 -*- import pythoncom import pyHook import win32api import win32con import time import threading import random VK_CODE = { 'backspace': 0x08, 'tab': 0x09, 'clear': 0x0C, 'enter': 0x0D, 'shift': 0x10, 'ctrl': 0x11, 'alt': 0x12, 'pause': 0x13, 'caps_lock': 0x14, 'esc': 0x1B, 'spacebar': 0x20, 'page_up': 0x21, 'page_down': 0x22, 'end': 0x23, 'home': 0x24, 'left_arrow': 0x25, 'up_arrow': 0x26, 'right_arrow': 0x27, 'down_arrow': 0x28, 'select': 0x29, 'print': 0x2A, 'execute': 0x2B, 'print_screen': 0x2C, 'ins': 0x2D, 'del': 0x2E, 'help': 0x2F, '0': 0x30, '1': 0x31, '2': 0x32, '3':

as3.0 在一个范围之内拖动

早过忘川 提交于 2019-11-28 03:39:51
import flash.events.MouseEvent; import flash.geom.Point; import flash.display.MovieClip; //假设你的黑色元件是black,粉色元件是powder //此变量指示当前鼠标左键是否按下 var down:Boolean = false; //此变量可以保存点击黑色元件的位置 var point:Point=new Point(); //侦听事件 var black:MovieClip black.addEventListener(MouseEvent.MOUSE_DOWN,handle); stage.addEventListener(MouseEvent.MOUSE_UP,handle); //移动事件用stage侦听,也可以侦听ENTER_FRAME事件; stage.addEventListener(MouseEvent.MOUSE_MOVE,handle); function handle(e:MouseEvent):void { if (e.type == MouseEvent.MOUSE_DOWN) { down = true; black.startDrag(false) } else if (e.type==MouseEvent.MOUSE_UP) { down = false;

hdu 6681 Rikka with Cake(扫描线)

≯℡__Kan透↙ 提交于 2019-11-28 01:07:51
题意:给你一个n*m的的矩形框 现在又k条射线 问这个矩形框会被分为多少个区域 思路:之前的想法是枚举边界然后线段树扫一遍计算一下矩形个数 复杂度果断不行 后面发现其实答案就是交点数+1 然后就用线段树上下扫两边 #include <bits/stdc++.h> using namespace std; const double pi = acos(-1.0); const int N = 1e5+7; const int inf = 0x3f3f3f3f; typedef long long ll; const ll mod = 1e7+9; struct tree{ int l,r,v; }; tree t[N<<2]; struct node{ int x,y,z; }up[N],down[N]; int xx[N]; bool cmp1(node a,node b){ return a.y<b.y; //升 } bool cmp2(node a,node b){ return a.y>b.y; //降 } void build(int p,int l,int r){ t[p].l=l; t[p].r=r; t[p].v=0; if(l==r){ return ; } int mid=(l+r)>>1; build(p<<1,l,mid); build(p<<1|1,mid