cstring

EZ 2018 02 28 NOIP2018 模拟赛(二)

随声附和 提交于 2020-12-24 06:02:37
  我TM的终于改完了(其实都是SB题)   题目链接: http://211.140.156.254:2333/contest/53   T1送分,T2前40%送分,还有骗分机制在里面,T3暴力50   所以200应该有的吧(事后诸葛亮)   但T2的第一问智障了,但是无解骗分(直接搞一个数再开个根)弄了38分,所以RANK还是蛮高的。   日常膜拜dalao CJJ 终于涨Rating了   T1 很无脑,但有点坑。就是纯的高精度乘法,注意一下0.2输出.2之类的问题就好了   小数点不用管,最后算一下小数部分几位再输出就可以了   CODE #include<cstdio> #include < string > #include <iostream> #include <cstring> using namespace std; string s; int a[ 10 ],b,p,i,j,last[ 200 ],ans[ 200 ],k,len; int main() { // freopen("A.in","r",stdin); freopen("A.out","w",stdout); cin>>s; cin>>b; last[len= 1 ]= 1 ; while (s[ 0 ]== ' 0 ' ) s.erase( 0 , 1 ); while (s[s.size()

hdu3306 Another kind of Fibonacci【矩阵快速幂】

只谈情不闲聊 提交于 2020-12-20 07:02:43
转载请注明出处: http://www.cnblogs.com/KirisameMarisa/p/4187670.html 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3306 Another kind of Fibonacci Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1720 Accepted Submission(s): 667 Problem Description As we all known , the Fibonacci series : F(0) = 1, F(1) = 1, F(N) = F(N - 1) + F(N - 2) (N >= 2).Now we define another kind of Fibonacci : A(0) = 1 , A(1) =1,A(N) = X * A(N - 1) + Y * A(N - 2) (N >= 2).And we want to Calculate S(N) , S(N) = A(0) 2 +A(1) 2 +……+A(n) 2 . Input There are several test cases

Codeforces Round #471 (Div. 2)A. Feed the cat

耗尽温柔 提交于 2020-12-19 11:10:02
After waking up at hh : mm , Andrew realised that he had forgotten to feed his only cat for yet another time (guess why there's only one cat). The cat's current hunger level is H points, moreover each minute without food increases his hunger by D points. At any time Andrew can visit the store where tasty buns are sold (you can assume that is doesn't take time to get to the store and back). One such bun costs C roubles and decreases hunger by N points. Since the demand for bakery drops heavily in the evening, there is a special 20% discount for buns starting from 20: 00 (note that the cost

C++11 标准库笔记1

≡放荡痞女 提交于 2020-12-19 11:01:32
STL(standard template library,标准模板库) 初始化:int values[] {1, 2, 3} 引入 range-based for 循环: for (decl: coll) { statement } // 打印某集合内所有元素,这里不用 & 会产生 copy template <typename T> void printElements (const T& coll) { for (const auto& elem : coll) { std::cout << elem << std::endl; } } 拿 lambda 当作 inline 函数使用 [] () -> double { return 42; } 4、命名空间(Namespace)std 当你采用不同的模块或程序库时,经常会出翔名称冲突现象,这是因为不同的模块和程序库可能对不同的对象使用相同的标识符。Namespace 正是用来解决这个问题的。所谓 namespace 是指标识符的某种可见范围。和 class 不同, namespace 具有可扩展开放性,可发生于任何源码文件上。因此你可以使用一个 namespace 来定义若干组件,而它们可散布于多个实质模块内。这类组件的典型例子就是 C++ 标准库,因为 C++ 标准库使用了一个 namespace. 5、通用工具 Pair

CDQ分治

大憨熊 提交于 2020-12-19 06:47:47
CDQ分治 CDQ分治:用于解决离线或不强制在线问题中简化一层树结构的实用性分治算法 其实可以这样说,如果CDQ分治的题空间开大一点,基本树套树都可以搞定,但是树套树的空间复杂度是O(nlog~nlog^2n),而CDQ分治一般是O(n)级别的,因此,有些CDQ分治的题目并不能用树套树解决。并且,一般来说写一个CDQ分治都要比普通的树套树要容易的多,除了主席树+树状数组... CDQ分治主要思想还是分治的思想,即递归处理小范围信息,之后将处理的信息合并上传。一般来说,都是先处理左区间,之后用左区间更新右区间,顺便更新答案,然后处理右区间,之后再将两个区间的信息合并。 通常来说,为了简化时间复杂度与常数,有几种方法可以参考 (1)在分治之前先按照某一关键字排序,之后在分治过程中,将信息按照时间分成前后两部分,这样避免了多次排序。 (2)在分治过程中,利用归并排序的方式将两个有序序列合并,将O(nlog)的排序变为O(n)的归并。 (3)在分治过程中,利用树状数组解决问题,除非必须用到别的东西。 (4)在分治过程中,利用有序的性质可以发现,逆序也是有序的,并且满足一些正好与正序相反,这样可以避免重复排序。 (5)在分治之前尽可能的简化不必要的信息,这样能减少整个代码的常数。 (6)另外,在更新右区间或者合并的时候,尽量选择常数与时间复杂度较小的算法,比如说能用单调队列就不要用斜率优化

POJ1065(Wooden Sticks)--贪心

。_饼干妹妹 提交于 2020-12-19 04:50:22
木棍 时间限制: 1000MS 内存限制: 10000K 提交总数: 27336 接受: 11857 描述 有一堆木棍。每根杆的长度和重量是预先已知的。这些木棍将由木工机器逐一加工。它需要一些时间,称为设置时间,以便机器准备处理棒。设置时间与清洁操作以及更换机器中的工具和形状相关联。木工机械 的安装时间如下: (a)第一根木棒的安装时间为1分钟。 (b)在加工长度为l且重量为w的棒之后,如果l <= 1'且w <= w',则机器将不需要设置长度l'和重量w'的设定时间。否则,需要1分钟进行设置。 你要找到处理一堆n根木棍的最短安装时间。例如,如果您有五根长度和重量对分别为(9,4),(2,5),(1,2),(5,3)和(4,1),那么最小设置时间应该是2分钟,因为存在一对(4,1),(5,3),(9,4),(1,2),(2,5)的序列。 输入 输入由T个测试用例组成。测试用例(T)的数量在输入文件的第一行中给出。每个测试用例由两行组成:第一行有一个整数n,1 <= n <= 5000,表示测试用例中木棒的数量,第二行包含2n个正整数l1,w1,l2, w2,...,ln,wn,每个幅度最多10000,其中li和wi分别是第i个木棍的长度和重量。2n个整数由一个或多个空格分隔。 产量 输出应包含最小设置时间(以分钟为单位),每行一个。 样本输入 3 5 4 9 5 2 2 1 3 5

子网掩码

半腔热情 提交于 2020-12-18 06:40:21
问题 A: 子网掩码 时间限制: 1 Sec 内存限制: 32 MB 提交: 146 解决: 86 [ 提交 ][ 状态 ][ 讨论版 ] 题目描述 子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。 最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单。 请看以下示例: 运算演示之一: IP地址  192.168.0.1 子网掩码  255.255.255.0 转化为二进制进行运算: IP地址  11010000.10101000.00000000.00000001 子网掩码 11111111.11111111.11111111.00000000 AND运算:      11010000.10101000.00000000.00000000 转化为十进制后为:       192.168.0.0 运算演示之二: IP地址  192.168.0.254 子网掩码  255.255.255.0 转化为二进制进行运算: IP地址  11010000.10101000.00000000.11111110 子网掩码 11111111.11111111.11111111.00000000 AND运算:      11010000.10101000

P1002 过河卒

左心房为你撑大大i 提交于 2020-12-15 08:52:25
题目描述 棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表示, A点 (0,0) 、 B 点 (n,m) ( n, m为不超过 2020 2 0的整数),同样马的位置坐标是需要给出的。 现在要求你计算出卒从 A点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。 输入输出格式 输入格式: 一行四个数据,分别表示 B 点坐标和马的坐标。 输出格式: 一个数据,表示所有的路径条数。 输入输出样例 输入样例#1: 复制 6 6 3 3 输出样例#1: 复制 6 说明 结果可能很大! 分析:dp就可以,, A 0 0 0 0 0 0 0 0 X 0 X 0 0 0 X 0 0 0 X 0 0 0 0 M 0 0 0 0 X 0 0 0 X 0 0 0 X 0 X 0 0 0 0 0 0 0 0 B --------------》 1 1 1 1 1 1 1 1 2 X 1 X 1 2 1 X 0 1 1 X 2 1 1 1 M 1 1 3 1 X 1 1 0 X 3 1 1 X 1 X 0 3 1 2 2 3 3 3 6 这样动态方程就可以很容易求出来了,dp[i][j]=dp[i-1][j]+dp

高精度除法——高精度除以高精度

我的梦境 提交于 2020-12-13 21:51:10
1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 int a[ 101 ],b[ 101 ],c[ 101 ],i; 5 // 输入函数 6 void init( int a[]){ 7 string s; 8 cin>> s; 9 a[ 0 ]= s.length(); 10 for (i= 1 ;i<=a[ 0 ];i++ ) 11 a[i]=s[a[ 0 ]-i]- ' 0 ' ; // 减法倒序存储 12 } 13 // 输出函数 14 void print( int a[]){ 15 int i; 16 if (a[ 0 ]== 0 ){ 17 cout<< 0 << endl; 18 return ; 19 } 20 for (i=a[ 0 ];i> 0 ;i-- ) 21 cout<< a[i]; 22 cout<< endl; 23 return ; // 函数执行完毕回到主程序 24 } 25 // 比较函数 26 int compare( int a[], int b[]){ 27 int i; 28 if (a[ 0 ]>b[ 0 ]) 29 return 1 ; 30 if (a[ 0 ]<b[ 0 ]) 31 return - 1 ; 32 for (i=a[ 0 ];i>

CF 1083 A. The Fair Nut and the Best Path

房东的猫 提交于 2020-12-13 12:44:08
A. The Fair Nut and the Best Path https://codeforces.com/contest/1083/problem/A 题意:   在一棵树内找一条路径,使得从起点到终点的最后剩下的油最多。(中途没油了不能再走了,可以在每个点加wi升油,减少的油量为路径长度)。 分析:   dfs一遍可以求出子树内所有点到子树根节点的最大的路径和次大的路径,然后可以直接合并取max,并且和从根节点出发的路径取max。   两条最大的和次大的合并可能不合法的。从最大的走上来后,不一定可以从根节点在走回去。但是即使不合法的取max是没有影响的,这样的路径一定不是更优的。 代码: 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #include<iostream> 5 #include<cmath> 6 #include<cctype> 7 #include< set > 8 #include<queue> 9 #include<vector> 10 #include<map> 11 using namespace std; 12 typedef long long LL; 13 14 inline int read() { 15 int x= 0 ,f= 1 ; char ch