tl

Codeforces - 1203D2 - Remove the Substring (hard version) - 双指针

帅比萌擦擦* 提交于 2020-04-01 06:21:58
https://codeforces.com/contest/1203/problem/D2 上次学了双指针求两个字符串之间的是否t是s的子序列。但其实这个双指针可以求出的是s的前i个位置中匹配t的最长的前缀。反过来求一次可以得到最长的后缀。 然后怎么找要删除的位置呢?暴力n^2肯定可以,然后线性写挂到自闭。 枚举位置[i,j),注意j可以取相等,所以预处理前后缀的时候把n位置的后缀也算好。 去除子串[i,j),那么剩下的就是[0,i-1]和[j,n-1]两个子串,他们匹配的长度加起来超过tl就是合法。 #include<bits/stdc++.h> using namespace std; int dpprefix[200005]; int dpsuffix[200005]; char s[200005], t[200005]; int sl, tl; void prefix() { int i = 0, j = 0; while(i < sl || j < tl) { if(i < sl && j < tl) { if(s[i] == t[j]) { dpprefix[i] = j + 1; ++i, ++j; } else { dpprefix[i] = j; ++i; } } else if(j == tl) { dpprefix[i] = tl; ++i; } else

[TL] 杂项费用

泪湿孤枕 提交于 2020-03-13 07:20:06
【MarkupTrans 表结构】 TransTableId Table 的tableId TransRecId RecId 先来大概分析下表结构。此表是个大杂烩,采购,销售,发票关于杂项费的都被记录到其中。主要考以下了两个字段作为区分。 此表和其他关联表是一对多的关系。比如一条采购对应多条杂项费用。 MarkupCode 杂项费用代码 代码由【MarkupTable 】主表关联。 【业务】 1. 杂项费可以分摊,比如PO,头上分摊到每个行上。一旦分摊后MarkupTrans的表中记录将发生变化。TransTableId和TransRecId记录为Line的Id 2.同样当开票后,MarkupTrans也发生变化TransTableId和TransRecId记录为Invoice的Id. 3.分摊杂项费是必须的。只有分摊后才能做过账动作。 4. 当分批开票时,只要过了第一次发票后,MarkupTrans表中关于Line的所有记录都将发生变化。 *以上针对不同的业务做同样的动作。比如Purch—>VendInvoice;Sales—>CustInvoice 粗略先写这些。 来源: https://www.cnblogs.com/JackySong/archive/2011/06/14/2081056.html

Java:清空文件内容

我们两清 提交于 2020-03-06 00:55:25
文章来源: https://www.cnblogs.com/hello-tl/p/9139432.html import java.io.*; public class FileBasicOperation { /** * 清空文件内容 * @param fileName */ public static void clearInfoForFile(String fileName) { File file =new File(fileName); try { if(!file.exists()) { file.createNewFile(); } FileWriter fileWriter =new FileWriter(file); fileWriter.write(""); fileWriter.flush(); fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } 文章来源: https://www.cnblogs.com/hello-tl/p/9139432.html 来源: https://www.cnblogs.com/hello-tl/p/9139432.html

**python中列表 元组 字典 集合

天大地大妈咪最大 提交于 2020-02-04 20:27:07
列表 元组 字典 集合的区别是python面试中最常见的一个问题。这个问题虽然很基础,但确实能反映出面试者的基础水平。 1.列表   列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔。   列表的特点:有序,数据可变,数据可重复,数据类型可不同,可嵌套。   创建 一个列表:tl = [1, 'Hello', 1, "你好", [2, 'World']]   初步可以看到它的语法、数据可重复、数据类型可不同、可嵌套等特点,如果用print函数多输出几次就会发现它是有序的,下面我们看一下列表的常用操作,同时也证明列表数据可变。 (1)list.append()追加成员,添加到末尾 tl = [1, 'Hello', 1, "你好", [2, 'World']] print(tl) tl.append('test') print(tl)   输出: [1, 'Hello', 1, '你好', [2, 'World']] [1, 'Hello', 1, '你好', [2, 'World'], 'test'] (2)list.pop(i)删除第i个成员,并可将删除的数据赋值给变量 tl = [1, 'Hello', 1, "你好", [2, 'World']] print(tl) a = tl.pop(3) print(tl) print(a)   输出: [1, 'Hello'

Luogu P3157 [CQOI2011]动态逆序对

妖精的绣舞 提交于 2020-02-01 14:49:46
CDQ分治 首先可以将答案分为之前有的逆序对数量+此操作产生的逆序对数量 那么最后前缀和即可 由于题目直接给出的是删除操作,并且加上初始序列的插入操作 有两种不同会对答案造成影响的操作,不容易处理 那么考虑从后往前考虑,那么删除操作就变成插入操作 先将所有要删的数删完剩下的数,把它们作为初始序列 然后进行CQD分治 产生逆序对要求是 $time_{i}<time_{j},val_{i}<val_{j},pos_{i}>pos_{j}$ 或$time_{i}<time_{j},val_{i}>val_{j},pos_{i}<pos_{j}$ 三维偏序问题 在CDQ分治过程中,正的扫一遍,倒着扫一遍即可 1 #include <bits/stdc++.h> 2 #define int long long 3 using namespace std; 4 const int N=1e5+100; 5 int n,m,a[N],b[N],ans[N]; 6 int p[N],w,dfn,tree[N],ti[N]; 7 struct node 8 { 9 int ti,pos,val,id; 10 }sh[N]; 11 node t[N]; 12 int lowbit(int x) 13 { 14 return x&(-x); 15 } 16 void change(int x,int v

在报表中录入数据时如何实现行列转换

僤鯓⒐⒋嵵緔 提交于 2020-01-16 08:32:19
应用场景及需求: 某电力集团在实际应用中需要在填报数据时将数据库中的字段以更符合业务人员使用习惯的方式进行呈现,其中就有行列转换的情况。在常规的应用开发中,一般都是通过专门设计的数据界面进行录入,然后再通过程序转换存入数据库。而现在有了集算器支持的润乾填报表,就能够处理各种有关数据结构的填报需求了,这种行列转换自然也不在话下。 首先,我们来看一下行列转换的准确含义: 在一些企业应用中,一些指标项在数据库存储时会做为不同的字段存储,这样数据结构会更加清晰,但是在报表展示或填报表数据录入时,又需要将列转换成行的形式,从而更加符合业务人员的使用习惯,这就是行列转换。首先看一个报表展示页面: 需求一:这个填报表是月度报表,要求按照月份查询某公司下各项目以及机组信息数据,并且能够对数据进行修改。 需求二:工具栏中增加两个按钮:“报表保存”保存当前页面数据,“报表锁定”能够对当前页面数据进行保存并对数据锁定,锁定后用户再次访问该月份数据就无法再修改了。 需求三:报表第二列是项目名称。用户系统结构比较特殊,页面中每个项目名称都是数据库表中的字段名称,第三列和第四列为机组信息数据,在数据库中每个机组为一条记录,也就是说数据存放在数据库中两个表中,分别是 rep_tl_config 表和 rep_tl_yb 表,取数或回写时要根据项目名称从不同表中取数或回写。 下面是这些需求的实现过程。 解决方案:

英文常识

房东的猫 提交于 2020-01-13 06:38:25
文章目录 TL;DR RTFM copyleft TL;DR Too long;Don't read (太长,请不要看) or Too long;Didn't read (太长,所以没有看) 常用在英文长文中的摘要标题,显示整篇文章的 精华 或 总结 。 RTFM Read The Fucking Manual RTFM - 百度百科 RTFM和STFW的意思 copyleft 著佐权 - 百度百科 必须知道!什么是 Copyleft ? 什么是Copyleft? - GNU工程 - 自由软件基金会 来源: CSDN 作者: qq_43363200 链接: https://blog.csdn.net/qq_43363200/article/details/103802221

刷题篇-栈

末鹿安然 提交于 2020-01-11 23:27:55
一、设计一个最小栈 题目要求 :设计一个支持push,pop,top等操作并且可以在 O ( 1 ) O(1) O ( 1 ) 时间内检索出最小元素的堆栈。 push(x)–将元素x插入栈中 pop()–移除栈顶元素 top()–得到栈顶元素 getMin()–得到栈中最小元素 样例 : MinStack minStack = new MinStack ( ) ; minStack . push ( - 1 ) ; minStack . push ( 3 ) ; minStack . push ( - 4 ) ; minStack . getMin ( ) ; -- > Returns - 4. minStack . pop ( ) ; minStack . top ( ) ; -- > Returns 3. minStack . getMin ( ) ; -- > Returns - 1. 来源 :剑指offer 思路 :主要是完成最后一个功能getMin()–得到栈中最小元素,其他三个功能正常栈中都有。可以用两个栈来完成,一个栈是正常的栈,另一个保存前i个数的最小值。例如原栈 stack<int> s={-1, 3, -4} ,则辅助栈 stack<int> t={-1, -1, -4} 。 当插入 x x x 时, s={-1, 3, -4, x}, t = {-1, -1,

[SDOI2011]染色

◇◆丶佛笑我妖孽 提交于 2020-01-07 04:03:33
染色 给定一棵有n个节点的无根树和m个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c; 2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段), 如“112221”由3段组成:“11”、“222”和“1”。 请你写一个程序依次完成这m个操作。 Input 第一行包含2个整数n和m,分别表示节点数和操作数; 第二行包含n个正整数表示n个节点的初始颜色 下面n-1行每行包含两个整数x和y,表示x和y之间有一条无向边。 下面m行每行描述一个操作: “C a b c”表示这是一个染色操作,把节点a到节点b路径上所有点(包括a和b)都染成颜色c; “Q a b”表示这是一个询问操作,询问节点a到节点b(包括a和b)路径上的颜色段数量。 Output 对于每个询问操作,输出一行答案。 Sample Input 6 5 2 2 1 2 1 1 1 2 1 3 2 4 2 5 2 6 Q 3 5 C 2 1 1 Q 3 5 C 5 1 2 Q 3 5 Sample Output 3 1 2 思路: 树链剖分模板,存下一段中的左边界 \(\And\) 右边界 \(\And\) 出现段数 \(\mathfrak{Talk\ is\ cheap,show\ you\ the\ code.}\) // #pragma GCC optimize(2) #include

【HDU4578 Transformation】线段树

一曲冷凌霜 提交于 2020-01-03 00:51:47
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4578 题意:有一个序列,有四种操作: 1:区间[l,r]内的数全部加c。 2:区间[l,r]内的数全部乘c。 3:区间[l,r]内的数全部初始为c。 4:询问区间[l,r]内所有数的P次方之和。 思路:比较复杂的线段树操作。只有一个询问操作,那就是询问[l,r]之间数的p次方之和,我们不可能全部查询的节点,会TLE,最好的情况就是查询到一段[a,b],这段区间内所有的值都相等,那么返回(b-a+1)*val 的值即可。 根据询问操作我们即可意识到我们要维护的是区间内所有值都相同的情况的区间。对于覆盖和加乘操作,我开始以为向下传递两层即可,这样是错误的,因为即可传递下去两层,还是有可能同时存在加乘操作。所以我们可以分两种情况讨论:1、当为覆盖操作时,直接覆盖区间即可,并且把标记的加乘操作赋为初始值。2、当为加乘操作时,先判断当前区间段是否为相同的值,是的话直接加乘,维护这个相同的值即可。如果不相同,看区间是否已有加乘标记,把这个加乘标记一直传递下去,知道遇见那个区间段区间所有值的相同停止。最后把这个加乘赋给最开始的区间段。简单的说就是,覆盖操作可直接维护,不是覆盖操作的话,区间只能保留一个加乘操作。 1 #include<iostream> 2 #include<cstdio> 3