cstring

杭电多校第七场 1010 Sequence(除法分块+矩阵快速幂)

空扰寡人 提交于 2021-01-12 04:23:22
Sequence Problem Description Let us define a sequence as below f1=A f2=B fn=C*fn-2+D*fn-1+[p/n] Your job is simple, for each task, you should output F n module 10 9 + 7 . Input The first line has only one integer T , indicates the number of tasks. Then, for the next T lines, each line consists of 6 integers, A , B , C , D , P , n . 1 ≤ T ≤ 20 0 ≤ A , B , C , D ≤ 10 9 1 ≤ P , n ≤ 10 9 Sample Input 2 3 3 2 1 3 5 3 2 2 2 1 4 Sample Output 36 24 题意:题目给出ABCDPn,第一项是A,第二项是B,然后还有个递推式,问第n项是多少 思路:如果我们按照他的递推式去推得答案的话,n的范围是1e9肯定会超时,但是我们又必须要用到这个式子,我们就想有没有加快的方法,其实做多了题会发现这是矩阵快速幂的形式 矩阵快速幂就是把你原有的递推式再加快执行, 但是 fn

一周工作小结之CString以及GetPrivateProfileString()相关知识

纵然是瞬间 提交于 2021-01-11 10:28:48
一周工作小结之CString以及GetPrivateProfileString()相关知识 本周在老板的带领下开始了对相关业务代码的尝试,主要工作内容还是在VC 6.0下进行MFC的相关开发,主要内容为获取本地机器与柜台机器的网络通信内容,具体来说就是对字符串的操作以及牵扯到相关MFC控件的使用,下面对这一周以来的开发内容进行相应的总结,主要体现在两个方面,一是CString的使用,二是对 GetPrivateProfilesString() 这一函数的相关理解。 一、CString的相关知识 首先介绍一下,CString是MFC下自带的类,类似于String类,在实际工作过程中主要运用到CString的截取以及CString与LPCTSTR、LPSTR的相关转化问题。首先来说明CString的截取方法:Left(),Right(),Mid()。 eg.CString str = "aabbccdd"; str.Left(4) = "aabb";//从左起第一位开始往右截取四位 str.right(4) = "ccdd";//截取字符串的后4位 str.mid(2)="bbccdd";//从字符串索引位2的位置往右截取 str.mid(2,3) = "bbc";//从字符串索引为2的位置向后截取3位 下面说明CString与LPCTSTR、LPSTR的相互转化: 首先

轮廓线DP学习笔记

不羁岁月 提交于 2021-01-10 14:57:52
轮廓线DP 不会 题目 POJ2411 题面 用1*2的骨牌覆盖N*M的棋盘的方案数 题解 代码如下: #include<cstdio> #include <iostream> #include <cstring> using namespace std; inline int read() { int f= 1 ,x= 0 ; char ch; do { ch = getchar(); if (ch== ' - ' ) f=- 1 ; } while (ch< ' 0 ' ||ch> ' 9 ' ); do { x =(x<< 3 )+(x<< 1 )+ch- ' 0 ' ; ch = getchar(); } while (ch>= ' 0 ' &&ch<= ' 9 ' ); return f* x; } int n,m; int cur; long long dp[ 2 ][ 1 << 17 ]; inline void calc( int x, int y) { if ((y&( 1 <<(m)))) dp[cur][y^( 1 <<m)]+=dp[cur^ 1 ][x]; } int main() { while (scanf( " %d%d " ,&n,&m)== 2 ) { if (n== 0 &&m== 0 ) return 0 ; if (n< m) swap(n

shunting-yard 调度场算法、中缀表达式转逆波兰表达式

心不动则不痛 提交于 2021-01-09 10:00:53
中缀表达式 1*(2+3) 这就是一个中缀表达式,运算符在数字之间,计算机处理前缀表达式和后缀表达式比较容易,但处理中缀表达式却不太容易,因此,我们需要使用shunting-yard Algorithm(调度场算法)来将中缀表达式转换为后缀表达式(即逆波兰表达式),然后求解。 上面的中缀表达式转后缀表达式后为: 1 2 3 + * 调度场算法 为了将中缀表达式转为后缀表达式,使用调度场算法,算法思想如下:   准备两个栈,一个用于存放数字,一个用于存放操作符。   从左到右遍历表达式,如果是数字,直接入栈。(注意数字可能是多位数甚至小数)   如果是符号:     如果栈为空,或者当前符号为‘ ( ’,或者栈顶为' ( ',直接入栈。     如果当前运算符优先级高于栈顶运算符的优先级,则入栈。(注意是高于,等于也不行)     如果当前运算符优先级不高于栈顶运算符,先 从存符号的栈中取出一个操作符,从存数据的栈中取出两个数字,将它们做一次运算并将结果压入数据栈 ,最后再把当前运算符压入符号栈。     如果当前符号是' ) ',不断重复上面划线部分的操作,直到取出的操作符是' ( '为止。   表达式遍历完后,不断重复上面划线部分的操作,直到符号栈为空,此时数据栈还有一个数字,那就是原表达式的值。 这样就基本完成了。 这里再来讨论一下负号的处理,如何判断 ' - '

凸包(壳)算法小结

情到浓时终转凉″ 提交于 2021-01-09 02:49:15
凸包专题大概是我做的最 吃shi 考验代码能力的专题…… 然后……大概我们的凸包可以分为静态凸包和动态凸包,从功能上可以分为决策性的凸包和计算几何性的凸包 其实没有多少区别,打就好了 静态凸包啥的我就不介绍怎么打了…… 然后我推荐在弹栈的时候用叉积而不是暴力算斜率,那样讨论好多啊…… 另外,一般我们不会被卡弹栈……但如果被卡时间的话,我们可以考虑二分弹栈,这样并没有什么问题…… 然后我们来看看凸包可以干什么: 题目1:bzoj2402 然后我一开始想歪了……我想直接把(x,y)和(p,q)当作点的坐标然后去凸壳查找 但是这样的决策点是无法定义最优的……在不同的询问点中最优是不同的……很是尴尬 然后我这么弱当然%了题解啊…… 所以我们可以考虑01分数规划,二分答案k,把原来的式子变形得到 $ y_{i}-k*x_{i}+q_{i}-k*p_{i}>=0 $ 然后询问的时候,我们这就是维护一个上凸壳拿一条直线卡一下 可以联系一下高中线性规划的知识 然后我们可以用熟练剖分来解决这个问题,对于链上log次询问我们取最优的最优点即可 这样的复杂度……是$mlog^{4}n$的,但是由于没啥常数,并且数据范围还很小,所以说可以过30000的全部数据 代码: 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4

C++11非受限联合体(union)

喜欢而已 提交于 2021-01-07 11:12:46
在 C/ C++ 中,联合体(Union)是一种构造数据类型。在一个联合体内,我们可以定义多个不同类型的成员,这些成员将会共享同一块内存空间。老版本的 C++ 为了和C语言保持兼容,对联合体的数据成员的类型进行了很大程度的限制,这些限制在今天看来并没有必要,因此 C++11 取消了这些限制。 C++11 标准规定,任何非引用类型都可以成为联合体的数据成员,这种联合体也被称为非受限联合体。例如: class Student{public: Student(bool g, int a): gender(g), age(a) {}private: bool gender; int age;};union T{ Student s; // 含有非POD类型的成员,gcc-5.1.0 版本报错 char name[10];};int main(){ return 0;} 上面的代码中,因为 Student 类带有自定义的构造函数,所以是一个非 POD 类型的,这导致编译器报错。 这种规定只是 C++ 为了兼容C语言而制定,然而在长期的编程实践中发现,这种规定是没有必要的。 关于 POD 类型稍后我们会讲解,大家先不要着急。 接下来,我们具体看一下 C++11 对 C++98 的改进。 1. C++11 允许非 POD 类型 C++98 不允许联合体的成员是非 POD 类型,但是 C++1 1

HDU 1240 Asteroids! 题解

匆匆过客 提交于 2021-01-06 15:45:22
Asteroids! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6174 Accepted Submission(s): 3876 Problem Description You're in space. You want to get home. There are asteroids. You don't want to hit them. Input Input to this problem will consist of a (non-empty) series of up to 100 data sets. Each data set will be formatted according to the following description, and there will be no blank lines separating data sets. A single data set has 5 components: Start line - A single line, "START N", where 1 <= N <= 10. Slice list - A series of N slices.

【编译原理】c++实现自上而下语法分析器

孤者浪人 提交于 2021-01-06 10:37:39
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:http://www.cnblogs.com/acm-icpcer/p/8964342.html   使用递归下降子程序实现的PL/0语言的算术表达式的自上而下语法分析。该语言的其他语法实现思想与此一致,故不赘述。   运行此程序前,必须先将代码通过: 【编译原理】c++实现词法分析器 的词法分析,生成词法表(词法表是txt文件,为了语法分析成功,务必删除文件中最后空着的一行,即文件末尾不可以留空白行)。生成的该词法表为此程序的必要输入。 /* this code was first initiated by TZ,COI,HZAU contact email:xmb028@163.com personal website:wnm1503303791.github.io personal blogs:www.cnblogs.com/acm-icpcer/ this code has been posted on my personal blog,checking url:www.cnblogs.com/acm-icpcer/p/8964342.html Copyright 2018/4

【编译原理】c++实现自下而上语法分析器

∥☆過路亽.° 提交于 2021-01-06 10:37:11
写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:http://www.cnblogs.com/acm-icpcer/p/9107838.html   基于C++语言实现的PL/0语言的算术表达式的自下而上的语法分析程序。该语言的其他语法实现思想与此一致,故不赘述。   运行此程序前,必须先将代码通过: 【编译原理】c++实现词法分析器 的词法分析,生成词法表(词法表是txt文件,为了语法分析成功,务必删除文件中最后空着的一行,即文件末尾不可以留空白行)。生成的该词法表为此程序的必要输入。   产生式:   S->X(AX)*|AX(AX)* X->Y(MY)* Y->I|N|(S) A->+|- M->*|/ C->=|#|<|<=|>|>=   进行自下而上的语法分析一定比自上而下要难。我们知道,做自下而上的语法的分析的核心在于“寻找可归约串”(即术语所说的“句柄”),而且要有一定的“向前展望性”,以防止在可以归约但却不应该归约的地方进行归约动作而不是继续移进下一个终结符或者非终结符。所以编译原理的语法分析做LR分析的核心目标就是能精确地控制计算机程序对待分析、编译的程序代码语句进行正确的、无二义的、符合编程者原目的的语法分析

Atcoder 2159 連結 / Connectivity(并查集+map乱搞)

陌路散爱 提交于 2021-01-05 18:08:40
問題文 N 個の都市があり、K 本の道路と L 本の鉄道が都市の間に伸びています。 i 番目の道路は pi 番目と qi 番目の都市を双方向に結び、 i 番目の鉄道は ri 番目と si 番目の都市を双方向に結びます。 異なる道路が同じ 2 つの都市を結ぶことはありません。同様に、異なる鉄道が同じ 2 つの都市を結ぶことはありません。 ある都市から別の都市に何本かの道路を通って到達できるとき、それらの都市は道路で連結しているとします。また、すべての都市はそれ自身と道路で連結しているとみなします。 鉄道についても同様に定めます。 全ての都市について、その都市と道路・鉄道のどちらでも連結している都市の数を求めてください。 制約 2≦N≦2*105 1≦K,L≦105 1≦pi,qi,ri,si≦N pi<qi ri<si i≠j のとき、(pi,qi)≠(pj,qj) i≠j のとき、(ri,si)≠(rj,sj) 入力 入力は以下の形式で標準入力から与えられる。 N K L p1 q1 : pK qK r1 s1 : rL sL 出力 N 個の整数を出力せよ。i 番目の数は i 番目の都市と道路・鉄道の両方で連結している都市の数である。 入力例 1 4 3 1 1 2 2 3 3 4 2 3 出力例 1 1 2 2 1 1,2,3,4 番目の都市は全て互いに道路で連結しています。