cstring

SDNU 1212.判断升序(水题)

偶尔善良 提交于 2020-05-08 07:46:26
Description 实现public static boolean isSorted(int[] table) 判断整数数组元素是否已经按升序排序。 Input 一列数,需要判断的数组元素。 Output 如果已经排序输出YES 如果没有排序输出NO Sample Input 1 2 3 4 5 6 Sample Output YES Hint import java.util.*; public class Main{ public static void main(String args[]){ Scanner cin = new Scanner(System.in); int a, b; b=-1; while (cin.hasNext()){ a = cin.nextInt(); if(??????????){ ????????; ????????????????????; } ????????????; } if(!cin.hasNext()) ???????????????????????? } } Source 数据结构Java版 #include <cstdio> #include <iostream> #include <cmath> #include < string > #include <cstring> #include <algorithm>

动态规划算法介绍,以及和贪心算法的比较

自古美人都是妖i 提交于 2020-05-08 06:34:14
## 问题描述: 1.什么是动态规划算法 2.动态规划算法为何能带来效率上的提升 3. 动态规划算法的特征 ## 解决方案: 问题1: 什么是动态规划算法 回答:大约在60多年前,动态规划算法开始出现并大规模使用,动态规划算法的英文名称为dynamic programming,最初用于解决多阶段决策问题,事实上这正是动态规划算法最经典的模型,在此,给出对动态规划算法的定义,如果某问题可以以时间或空间或其他事物将之划分为多个阶段的任务,并且这些任务在以某种“时序”推进时,满足最优子结构性质和无后效性,则可应用动态规划算法。 问题2: 动态规划算法为何能带来效率上的提升 回答: 动态规划算法并不神奇,实际问题中,往往存在许多的重叠子问题,动态规划算法并不盲目搜索,在求得某个子问题时,记录当前子问题的状态,这样,在需要使用这个子问题时,便能直接得出一部分的结果 问题3: 动态规划算法的特征 回答:许多算法书中都有提到,动态规划算法具有最优子结构性质,这并不够完善,如果我们希望使用动态规划算法解决实际问题,首先需要思考某个大的问题是否可以由多个子问题递推得到,其次,需要检查分解成子问题时,是否存在大量重叠的子问题,即当我们希望使用动态规划算法,首先这个问题应该具有大量重叠子问题,然后考虑以某种“时序”推进,即确定阶段,阶段的划分是困难的,因为我们的阶段划分之后需要满足最优子结构

SDNU 1135.Phone Number(水题)

荒凉一梦 提交于 2020-05-08 06:28:27
Description We know that if a phone number A is another phone number B’s prefix, B is not able to be called. For an example, A is 123 while B is 12345, after pressing 123, we call A, and not able to call B. Given N phone numbers, your task is to find whether there exits two numbers A and B that A is B’s prefix. Input The input consists of several test cases. The first line of input in each test case contains one integer N (0<N<1001), represent the number of phone numbers. The next line contains N integers, describing the phone numbers. The last case is followed by a line containing one zero.

每天一道算法题(2/16—3/10)

本小妞迷上赌 提交于 2020-05-08 06:13:48
考研狗的日常休闲活动。 Update:3/11日停更,刷PAT的题目去了。 2019/2/16 CF 1113A Sasha and His Trip 第一站先把油桶加满,后面每到一站判断油箱内的油能否支持开到最后,不能的话加一升油(花费$i$元)。思路就是尽量在前面站加油。 1 #include < set > 2 #include <map> 3 #include <queue> 4 #include <deque> 5 #include <stack> 6 #include <cmath> 7 #include <cstdio> 8 #include <vector> 9 #include < string > 10 #include <cstring> 11 #include <fstream> 12 #include <iostream> 13 #include <algorithm> 14 using namespace std; 15 16 #define eps 1e-8 17 #define pb push_back 18 #define PI acos(-1.0) 19 #define INF 0x3f3f3f3f 20 #define clr(a,b) memset(a,b,sizeof(a) 21 #define bugc(_) cerr << (#_) <

PAT甲级考前整理(2019年3月备考)之三,持续更新中.....

 ̄綄美尐妖づ 提交于 2020-05-08 05:08:12
PAT甲级考前整理一: https://www.cnblogs.com/jlyg/p/7525244.html ,主要讲了131题的易错题及坑点 PAT甲级考前整理二: https://www.cnblogs.com/jlyg/p/10364696.html ,主要讲了考前注意以及一些常用算法。 1132题:用字符串接收会毕竟快,使用atoi函数转成数字,注意a*b会超出int32。 #include<iostream> #include <cstdio> #include < set > #include <map> #include <vector> #include <iterator> #include <algorithm> #include <cstring> using namespace std; int main() { #ifdef ONLINE_JUDGE #else freopen( " test.txt " , " r " ,stdin); #endif int t; scanf( " %d " ,& t); while (t-- ) { char str[ 20 ]; scanf( " %s " ,str); char str1[ 20 ],str2[ 20 ]; int len = strlen(str); strncpy(str1,str,len /

2019银联高校极客挑战赛 复赛

对着背影说爱祢 提交于 2020-05-08 03:54:47
一直不在状态…… 想着各种事情…… A. 正常的方法是预处理k!和inv(k!),然后每次询问O(1)。 然后某同学的方法是dp,O(n*m)也能过。 f(i,j,0)和f(i,j,1)吗?i<=n,j<=m,0和1分别代表是否已经选择F吗。 B. 对于a,是x的倍数,且不是y的倍数(其中p%x==0,y%x==0,p%y==0) x乘上某个数,这个数除以z(z为不可以使用的约数的乘积,详见代码)为r(计算0~z-1)。 则对于b,是(p/x)的倍数 不好写。。。 时间复杂度: 预处理:k个质因数(<=6),2^k * 对应的大小(<=p) 约数的个数*(k+k) 还有更快的方法 题解:数论方式分析。 a=px+y y*b=p的倍数 则b是p/y的倍数。 然后枚举y。 写得很快。。。 看群里还有使用mobius的,比赛时想过,但没想到。 对于数字a,b gcd(a,p)=d 然后b为p/d的倍数即可。 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cmath> 4 #include <cstring> 5 #include < string > 6 #include <algorithm> 7 #include <iostream> 8 using namespace std; 9 #define ll long long

洛谷 1440 求m区间内的最小值

早过忘川 提交于 2020-05-08 03:10:10
             洛谷 1440  求m区间内的最小值 题目描述 一个含有n项的数列(n<=2000000),求出每一项前的m个数到它这个区间内的最小值。若前面的数不足m项则从第1个数开始,若前面没有数则输出0。 输入输出格式 输入格式: 第一行两个数n,m。 第二行,n个正整数,为所给定的数列。 输出格式: n行,第i行的一个数ai,为所求序列中第i个数前m个数的最小值。 题解: 偷偷告诉你,我超级喜欢暴力的。所以看到这个题的第一反应,就是打暴力 1 // luogu-judger-enable-o2 2 #include<iostream> 3 #include<cstdio> 4 #include<cstdlib> 5 #include<cstring> 6 #include<cmath> 7 using namespace std; 8 int a[ 2000010 ],n,m; 9 int main(){ 10 scanf( " %d%d " ,&n,& m); 11 for ( int i= 1 ;i<=n;i++ ) 12 scanf( " %d " ,& a[i]); 13 cout<< 0 << endl; 14 for ( int i= 2 ;i<=n;i++ ){ 15 int s=i-m,minn= 999999999 ; 16 if (s< 1 )

最小生成树--prim学习笔记

北城余情 提交于 2020-05-07 19:49:00
最小生成树 prim 问题引入:假设要在 n 个城市之间建立通信联络网,则连通 n 个城市需要 n-1 条路线,这是怎么样能在最节省经费的前提下建立这个通信网? 可以用联通网来表示 n 个城市,以及城市间的通信线路。其中顶点代表城市,边代表城市间线路,边的权值表示相应代价。 n 个顶点的联通网可以建立许多不同的生成树,其中要求的便是代价和最小的生成树。也称最小生成树。 构建生成树的算法多数利用了最小生成树的 MST 性质: 假设 N= ( V , E )是一个联通网, U 是顶点集 V 的一个非空子集。若( u , v )是一条具有最小权值的边,其中 u ∈ U , v ∈ V-U ,则必定存在一颗包含边( u , v )的最小生成树 反证法:假设 N 的任何最小生成树都不包含( u , v ),设 T 是联通网上的一颗最小生成树,当将边( u , v )加入 T 中,由生成树的定义, T 中必定包含( u , v )的回路,由于 T 是生成树,则 T 上必存在另一条边( u`,v` ),其中 u` ∈ U , v` ∈ V-U ,且 u 和 u` 之间, v 和 v` 之间均有路径相通。删去边( u` , v` ) , 便可消除上述回路,同时得到另一颗生成树 T` ,因为( u , v )的权值不高于( u` , v` ),则 T` 的权值不高于 T , T` 是包含( u ,

VS2010-MFC(常用控件:树形控件Tree Control 下)

半世苍凉 提交于 2020-05-07 17:38:09
转自: http://www.jizhuomi.com/software/203.html 前面一节讲了 树形控件Tree Control的简介、通知消息以及相关数据结构 ,本节继续讲下半部分,包括树形控件的创建、CTreeCtrl类的主要成员函数和应用实例。 树形控件的创建 MFC 为树形控件提供了CTreeCtrl类,它封装了树形控件的所有操作。 树形控件的创建也是有两种方式,一种是在对话框模板中直接拖入Tree Control控件创建,另一种就是通过CTreeCtrl类的Create成员函数创建。下面主要讲后者。 CTreeCtrl类的Create成员函数的原型如下: virtual BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 此函数的原型与前面讲到的所有控件类的Create函数都类似。dwStyle指定树形控件风格的组合,rect指定树形控件窗口的位置和大小,pParentWnd为指向树形控件父窗口的指针,nID指定树形控件的ID。下面还是主要讲讲树形控件的主要风格以及含义。 TVS_DISABLEDRAGDROP:禁止树形控件发送TVN_BEGINDRAG通知消息,即不支持拖动操作 TVS_EDITLABELS:用户可以编辑节点的标签文本 TVS

天梯L2-001. 紧急救援(25分)

走远了吗. 提交于 2020-05-06 15:15:39
L2-001. 紧急救援 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。 输入格式: 输入第一行给出4个正整数N、M、S、D,其中N(2<=N<=500)是城市的个数,顺便假设城市的编号为0~(N-1);M是快速道路的条数;S是出发地的城市编号;D是目的地的城市编号。第二行给出N个正整数,其中第i个数是第i个城市的救援队的数目,数字间以空格分隔。随后的M行中,每行给出一条快速道路的信息,分别是:城市1、城市2、快速道路的长度,中间用空格分开,数字均为整数且不超过500。输入保证救援可行且最优解唯一。 输出格式: 第一行输出不同的最短路径的条数和能够召集的最多的救援队数量。第二行输出从S到D的路径中经过的城市编号。数字间以空格分隔,输出首尾不能有多余空格。 输入样例: 4 5 0 3 20 30 40 10 0 1 1 1 3 2 0 3 3 0 2 2 2 3 2 输出样例: 2 60 0 1 3 #include