tmp

BSOJ 4490 避难向导

谁说我不能喝 提交于 2019-11-26 14:15:31
题目大意:树上的每一个节点都有一个d[i],定义为离最远节点的距离,还有一个s[i]=(d[i]+a)×b%c,再m次询问,每次询问给定(x,y,q),要求求出(x,y)路径上距x最近的一个点,且满足当前点的s[i]≥q。 emm...这一看就是两道题强行拼起来的,先求出s[i],然后在处理路径上的询问。 显然对于任意点,距离它最远的点一定是直径的两个端点之一,可以用两次DFS把直径的两端求出来,再把两个距离取个max就行了,算完d[i]后就可以算出s[i]啦。 一看到路径上的询问,我就想起了树剖,但冷静后再想想,这是一道静态问题!直接树上倍增乱搞就行了。 我的思路是这样的: p[i][j]表示i的第2 k 个祖先,g[i][j]表示i到它的第2 k 个祖先中s[i]的最大值(不包含i本身) 对于任意一条路径,都可以从LCA(x,y)中拆开(如图) 分为两段(x,LCA(x,y)),(LCA(x,y),y)讨论 在(x,LCA(x,y))上时,设Ask(x,k,q)为x到2 k 祖先中第一个s[i]≥q的i(不含x),通过二分的思想: Ask(x,k,q)=-1 (g[i][k]<q) Ask(x,k,q)=p[x][0] (g[i][0]≥q && k=0) Ask(x,k,q)=Ask(x,k-1,q) Ask(x,k,q)=Ask(p[x][k-1],k-1,q) (Ask

题解——八数码难题

走远了吗. 提交于 2019-11-26 14:05:43
思路 由明确的两种状态可以想到 D(double)BFS即双向BFS 输入的是个 283104765 然而 凡是搜索都有个标记即vis[] 但 按题意3 * 3的地图不好标记(也许用map可以) 于是直接用一维dir数组改成 int dir[4] = {1,-3,-1,3}; 但九位数也是开不了的 就有一个cantor展开式 状态压缩一下 inline int cantor(int a[]) { int i,j,ans = 0; for(i = 0;i < 9;i++) { int s = 0; for(j = i + 1;j < 9;j++) if(a[j] < a[i]) s++; ans += s * fac[8 - i]; } return ans; } 然后就行了 DBFS直接套板子啊 优化 其实就上面的好像就可以过了 但还有个优化 与 逆序对 有关 将3 * 3 的图 弄成序列 可以得出结论:初始状态的逆序对模2必须等于目标状态的逆序对模2,否则无法达成,输出-1 证明 可以转为 初始状态无论如何改变其奇偶性不变 位置图 1 2 3 4 5 6 7 8 9 将3 * 3 的图 弄成序列 1 2 3 4 5 6 7 8 9 注意 0 不算入队列 所以上面实际上是8个 ~~ 2 8 3 1 0 4 7 6 5 可见 当位置5的0与位置8的6交换会有几种情况 位置n的数

Linux sed命令详解

≯℡__Kan透↙ 提交于 2019-11-26 13:05:50
sed是一种常见的流编辑器,可依照脚本的命令来处理、编辑文本文件,并且完美匹配正则表达式,功能强大。 1、sed命令语法: sed [option] 'SCRIPTS' FILE... sed [-hHV][-e<script>][-f<script文件>][文本文件] 2、sed命令功能: [option] -e //--> -f //--> -h或H显示帮助。 -n 取消默认的完整输出,仅显示script处理后的结果。 -V 显示版本信息。 [动作命令] a 新增,a后接字串,并在新一行出现。 ,“a” 最后一行新增字串。 c 取代,用此符号后的新文本替换当前行中的文本。 d 删除行 i 插入,i 的后面可以接字串。 p 打印,常与“sed -n"连用。 s 取代,与g连用,常与正则表达式搭配使用,例如例如1,20s/old/new/g。 n 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理。 q 结束或退出sed。 w 将所选的行写入文件。 r 从文件中读取输入行。 y 将字符替换为另一字符,正则表达式除外。 l 列出非打印字符,包括控制字符。 -iSUFFIX 修改源文件,同时创建一个备份文件。例如:sed -i.bak '1,10d' test,生成一个test.bak备份文件。 高级语法 h/H 复制拷贝/追加模式空间(缓冲区)到存放空间 g/G 粘贴

Fishes题解

一世执手 提交于 2019-11-26 12:06:14
Fishes题解 我们考虑每一条鱼的贡献, 显然是能被选中的矩形的个数/矩形总数 可知,我们普通的鱼能被选中的矩形个数为r*r[从上至下r,从左至右r], 但是有时会受到矩形大小的限制, 此时x-r+1<1或者x+r-1>n或者y-r+1<1或者y+r-1>m, 能选矩形的下界为min(n-r+1,x),上界为max(1,n-r+1),上下长度为min(n-r+1,x)-max(1,x-r+1)+1=min(n-r+1,x)-max(0,x-r), 同理,左右长度为min(m-r+1,y)-max(0,y-r),个数即为(min(n-r+1,x)-max(0,x-r))×(min(m-r+1,y)-max(0,y-r))。 矩形总数为:(n-r+1)*(n-r+1); 选出k条鱼的方案使期望最大,即是选出前k大期望的正方形格子,越在中间,肯定越不受矩形边界的限制,我们不妨从最中间起,向四周拓展。 代码: #include<bits/stdc++.h> using namespace std; const int N=100006,f[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; map<int,int> ha[N]; int n,m,r,k; double ans=0.000; struct xd{ int x,y; double z; bool

php:: how long to tmp files stay?

拜拜、爱过 提交于 2019-11-26 10:57:08
问题 I am working on an upload script. If a user uploads a file and it already exists I want to warn the user (this is all through ajax) and give them the option to replace it, or cancel. Instead of moving the file, I was curious if I could just leave the file in tmp and pass back the path to that file in the ajax response. If they user says overwrite the old file in that ajax request pass the path back to php which continues to work on the file. For this to work however I need to know how long a

排序汇总

和自甴很熟 提交于 2019-11-26 10:20:55
快排,归并,堆排汇总 #快排1 def quick_sort1(arr): if len(arr)<=1: return arr target=arr[0] return quick_sort1([i for i in arr[1:] if i<=target])+[target]+quick_sort1([i for i in arr[1:] if i>target]) print(quick_sort1([5,7,8,9,6,5,4])) ####################################################### #快排2,原数组修改,无返回值 def quick_sort2(arr,start,end): if start<end: p1,p2=out_sort(arr,start,end) quick_sort2(arr,start,p1) quick_sort2(arr,p2,end) return def out_sort(arr,start,end): p1,p2=start-1,end+1 cur,target=start,arr[start] while cur<p2: if arr[cur]<target: arr[cur],arr[p1+1]=arr[p1+1],arr[cur] p1+=1 cur+=1 elif arr

Shell:Day02.笔记

雨燕双飞 提交于 2019-11-26 09:04:23
重定向和管道符: 1、重定向 程序 = 指令 + 数据 命令 变量 在程序中,数据如何输入?有如何输出? 数据输入:键盘 -- 标准输入,但是并不是唯一输入方式; --stdin echo "123456"|passwd --stdin"username" 例如:功能添加用户 useradd.sh user.txt文本文档1000个用户 ./useradd.sh a ./useradd.sh b ... ./useradd.sh < user.txt while line;do 循环体 $line done < /etc/passwd 数据输出:显示器 -- 标准输出,但是并不是唯一输出方式 ls /etc/ > a.txt fd文件标识符 0-9 -- 相当于给文件分类; 0 1 2 0 -- 标准输出 1 -- 标准输入 2 -- 错误输入输出 常见重定向符号 1、标准输出 > 覆盖重定向、非常危险 set -C 关闭覆盖重定向功能 >| 强制重定向 >> 追加重定向 2.标准输入 < tr 替换文件内容 tr set1[set2] < file.txt tr abc ABC /etc/passwd tr abc ABC /etc/passwd > /etc/passwd 将passwd文件中的a、b、c替换成A、B、C << 多行数据同时输入 cat >>a.txt<<EOF

给HP UX安装bash

[亡魂溺海] 提交于 2019-11-26 09:04:09
HP UX默认shell是ksh,很不好用,果断换成bash! 确认HP UX版本和架构 运行uname -a,会显示版本号(比如B.11.31)和架构(比如ia64),然后去下面的地址搜bash http://hpux.connect.org.uk/hppd/hpux/ 下载与自己版本号与架构相同的bash版本,注意同时还要下载其依赖组件gettext、libiconv和termcap,这些在bash的Runtime dependencies里都有,依次下下来; 将这四个gz文件解压,得到四个depot文件,上传到服务器(比如/tmp/bash目录下),安装这些组件。最好是按照下面的顺序来: #swinstall –s /tmp/bash/gettext-0.18.1.1-ia64-11.31.depot #swinstall –s /tmp/bash/libiconv-1.13.1-ia64-11.31.depot #swinstall –s /tmp/bash/termcap-1.3.1-ia64-11.31.depot #swinstall –s /tmp/bash/bash-4.1.007-ia64.11.31.depot 注意在swinstall –s命令后面必须输入depot文件的full path! swinstall可能有些童鞋不会用

JZ初中OJ 1566. [GDKOI]幸运锁

隐身守侯 提交于 2019-11-26 08:56:01
input: lucky.in output: lucky.out 时间限制: 2000 ms 空间限制: 256000 KB 具体限制 题目描述 有一把幸运锁,打开它将会给你带来好运,但开锁时需要输入一个正整数(没有前导0)。幸运锁有一种运算,对于一个正整数,返回他的相邻两位数字间的差,如1135,运算结果为22(会去掉前导0)。 现在已知只有经过反复运算最终结果为7的数才能打开这把锁,给你一个区间[a,b],问该区间中有多少个能打开幸运锁的幸运数。 输入 第一行两个整数a,b。 输出 一个整数K,表示共有多少个这样的数。 样例输入 1 10 样例输出 1 数据范围限制 【限制】 1<=a<=b<=10^9。 30%的数据有b<=10^6。 1 #include <bits/stdc++.h> 2 using namespace std; 3 int readint() { 4 int x = 0; 5 char c = getchar(); 6 for (; c < '0' || c > '9'; c = getchar()); 7 for (; c >= '0' && c <= '9'; c = getchar()) x = (x * 10) + (c - '0'); 8 return x; 9 } 10 long long toVal(string s) { 11 long

laravel 的orm 打印sql

拟墨画扇 提交于 2019-11-26 08:12:24
dump($query->getBindings()); dump($query->toSql()); // $sql = $query->toSql(); $tmp = str_replace('?', '"'.'%s'.'"', $query->toSql()); $tmp = vsprintf($tmp, $query->getBindings()); echo $tmp; exit; 来源: https://blog.csdn.net/zfj915752851/article/details/98770739