scanf

C语言综合运用-------------编写 < 通讯录 >

半城伤御伤魂 提交于 2020-04-07 13:29:18
// // main.c // 通讯录项目 // // Created by Elkins.Zhao on 15/3/24. // Copyright (c) 2015年 elkins. All rights reserved. // #include <stdio.h> // 导入头文件 #include <string.h> // 定义宏(联系人数组的长度,姓名长度,电话号码长度) #define LEN 100 #define NAME_LEN 22 #define TELNUM_LEN 16 // 定义联系人结构体 typedef struct { // 定义联系人姓名 char name[NAME_LEN]; // 定义联系人电话号码 char telNum[TELNUM_LEN]; } Person; // 给结构体起别名 // 定义联系人数组 Person contacts[LEN]; // 定义变量保存联系人数量 int totalContactCount = 0; // 初始化为0,表示通讯录没有人 // 定义变量保存文件名称 char *filePath = "telbook.data"; // 定义函数并声明 void doAdd(); // 添加联系人 void doDelete(); // 删除联系人 void doUpdate(); // 更新联系人

NOIp 2018 前的图论板子总结

∥☆過路亽.° 提交于 2020-04-07 07:25:05
存图 存边 直接开一个结构体数组存边 struct Edge { int begin, end, weight; } edge[10010]; int edge_count; inline void AddEdge(const int &u, const int &v, const int &w) { edge[edge_count++] = Edge {u, v, w}; } 应用: Kruskal's algorithm Adjacency matrix 用二维数组 adj[i][j] 表示 \(i\) 与 \(j\) 的关系 int adj[1010][1010]; #define ADD_EDGE(u, v, w) adj[u][v] = w 应用: Floyd-Warshall algorithm Hangarian algorithm Kuhn-Munkres algorithm Adjacency list 有几种形式, 以 adj[i] 表示以 \(i\) 为开头的边 应用: 各种图论算法 vector 优点: 访问方便, 存图方便 缺点: 消耗空间, 容易 \(MLE\) ; 删边速度慢 struct Edge { int destination, weight; }; std::vector<Edge> adj[1010]; 加边 #define ADD

骚猪队的模板

南笙酒味 提交于 2020-04-07 07:23:32
Cww97 Code Library 2017.07.05 East China Normal University Chen WeiWen - Software Engineering Cao ZhiJie - Computer Science Zhu XuLiang - Mathematics 常用STL map的Upperbound map<int,int>::iterator se = mp.upper_bound(mid); 返回迭代器 优先队列 priority_queue<int>Q;//采用默认优先级构造队列 priority_queue<int,vector<int>,cmp1>que1;//最小值优先 priority_queue<int,vector<int>,cmp2>que2;//最大值优先 Q.push(x); int x = Q.top(); Q.pop(); multiset begin() 返回指向第一个元素的迭代器 clear() 清除所有元素 count() 返回某个值元素的个数 empty() 如果集合为空,返回 true end() 返回指向最后一个元素的迭代器 erase() 删除集合中的元素 ( 参数是一个元素值,或者迭代器) find() 返回一个指向被查找到元素的迭代器 insert() 在集合中插入元素 size()

poj_3281Dining(网络流+拆点)

删除回忆录丶 提交于 2020-04-07 06:27:53
poj_3281Dining(网络流+拆点) 标签: 网络流 题目链接 题意: 一头牛只吃特定的几种食物和特定的几种饮料,John手里每种食物和饮料都只有一个,问最多能够满足几头牛的需求(水和食物都必须和他们的胃口)。 题解: 网络流 建图:从源点向每个食物连一条边,容量为1, 将牛拆成两个点牛,牛',中间连边,容量为1 从食物向牛连边,容量为1 连牛'和饮料,容量为1 连饮料和汇点,容量为1 网络流三种算法的理解和代码实现以及相应的模板 先介绍一个定理: 最大流最小割定理: 割:去掉某几条边使得源点和汇点不再联通,那么这几条边就叫一个割,这几条边的边权和最小的就叫做最小割。 一个图的最大流就是这个图对应的最小割,可以看做是一个沙漏,最大流是要求这个沙漏每个时刻最大的流量,那就相当于是求沙漏最细的地方的流量。而最小割就相当于是用一个刀子将这个沙漏一分为二,然后找横截切面最小的就是这个沙漏最细的地方。 再介绍一些网络流的一些基本性质 流网络G的流(flow)是一个实值函数 f :V ×V → R,且满足下列三个性质 (1) 容量限制:对于∀u,v∈V ,要求 f (u,v) ≤ c(u,v)。 (2) 反对称性:对于∀u,v∈V ,要求 f (u,v) = −f (v,u)。 (3) 流守恒性:对于∀u,v∈V −{s,t},要求∑f (u,v) =0。 f(u,v)即为u到v的流

第四周编程总结

纵然是瞬间 提交于 2020-04-07 04:01:22
题目1.A乘以B 看我没骗你吧 —— 这是一道你可以在10秒内完成的题:给定两个绝对值不超过100的整数A和B,输出A乘以B的值。 1). 实验代码 #include<stdio.h> int main(void) { int A,B,Z; scanf("%d %d",&A,&B); Z=A*B; printf("%d",Z); return 0; } 2). 设计思路 第一步:输入变量 第二步:调用scanf()函数输入A,B 第三步:进行A乘B的计算 第四步:调用printf()函数输出A乘B的值 3).本题调试过程碰到的问题及解决方法 问题:输入变量与输出变量不同 解决方法:将变量更换过来了 4).运行结果截图 题目2 .日期格式化 世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。 1)实验代码 #include <stdio.h> int main() { int y, m, d; //定义三个整型变量 scanf("%02d-%02d-%04d", &m, &d, &y); //调用scanf()函数输入日期 printf("%04d-%02d-%02d", y, m, d); //调用printf()函数输出答案 return 0; } 2).设计思路

第七周作业

丶灬走出姿态 提交于 2020-04-06 20:35:44
要求一:pta已完成。 要求二: 1、求交错序列前N项和 #include<stdio.h> int main() { int i=1,flag=1,x=1,n; double sum=0,item; scanf("%d",&n); while(i<=n){ item=flag*i*1.0/x; sum=sum+item; i=i+1; x=2*i-1; flag=-flag; } printf("%.3f",sum); return 0; } 2.设计思路: (1)主要描述题目算法 第一步:本题要求交错序列前N项和,观察给出的式子,分子和分母都有变化,分子一次加一,分母一次加二,且每增加一个数正负都有变化。 第二步:先思考如何表示每次变化的值,在不考虑正负的情况下item=i1.0/(2i-1),为了方便循环可以让x=2i-1,然后将其中的相关变量进行定义。 第三步:将i,x定义成整型函数,item定义成浮点型函数,定义一个变量flag实现正负的交换,让flag=1,还需要定义一个限制量n,使i大于n的时候实现循环的结束。再定义一个输出的和sum。 第四步:利用while进行循环,循环体内需要进行的式子:item=flagi1.0/x, sum=sum+item;,i=i+1, x=2*i-1, flag=-flag。当i大于n时结束循环 3.流程图: 4

LOJ分块⑨题汇总

こ雲淡風輕ζ 提交于 2020-04-06 16:16:47
从零开始的分块学习系列(感谢hzwer) 题目顺序是我建议的做题顺序 先说一句:分块的核心思想(其实本身分块就可以说是一种思想)是:均摊(或者说平衡/权衡?)复杂度,同时这种思想本身不只局限于序列分块(前一篇解题里有提到) 序列分块之① 区间加法+单点查询 分块入门题 知道分块的思想之后应该都会做,对整块打标记,对不超过块大小的零散区间暴力修改;查询的时候就是原数+所在块的标记 1 #include<cmath> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 const int N=50005,Sq=230; 7 int a[N],blo[N],laz[Sq],pts[Sq][2]; 8 int n,m,t1,t2,t3,t4,cnt,sqr; 9 int main() 10 { 11 scanf("%d",&n),m=n; 12 pts[cnt=1][0]=1,sqr=sqrt(n)+10; 13 for(int i=1;i<=n;i++) 14 { 15 scanf("%d",&a[i]); 16 blo[i]=(i-1)/sqr+1; 17 if(i%sqr==0) 18 { 19 pts[cnt++][1]=i; 20 pts[cnt][0]=i+1

拓展欧几里得 专题

放肆的年华 提交于 2020-04-06 11:32:23
大神orz (具体参考请点这) 我根据个人感觉弄了一下自己的思路 ZOJ 3609 : http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4712 求最小逆元,坑点就是对m=1的特判 /************************************************************** Problem:zoj 3609 User: youmi Language: C++ Result: Accepted Time:0s Memory:272kb ****************************************************************/ //#pragma comment(linker, "/STACK:1024000000,1024000000") //#include<bits/stdc++.h> #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <map> #include <stack> #include <set> #include <sstream> #include <cmath> #include <queue>

KMP,Trie,AC自动机题目集

放肆的年华 提交于 2020-04-06 08:47:44
字符串算法并不多,KMP,trie,AC自动机就是其中几个最经典的。字符串的题目灵活多变也有许多套路,需要多做题才能体会。这里收集了许多前辈的题目做个集合,方便自己回忆。 KMP题目: https://blog.csdn.net/qq_38891827/article/details/80501506 Trie树题目: https://blog.csdn.net/qq_38891827/article/details/80532462 AC自动机:模板 https://www.luogu.org/blog/42196/qiang-shi-tu-xie-ac-zi-dong-ji AC自动机题目集: https://www.cnblogs.com/kuangbin/p/3164106.html KMP: LuoguP3375 KMP模板 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int N=1000000+10; char a[N],b[N]; int n,m,nxt[N],f[N],g[N]; void get_next() { nxt[1]=0; for (int i=2,j=0;i<=n;i++) { while (j>0 && a[j+1]!=a[i]) j

bitset骚操作

て烟熏妆下的殇ゞ 提交于 2020-04-05 23:17:50
bitset的用途挺多的,是一个比较骚的常数优化 一.很多位数的二进制数 poj 2443 http://poj.org/problem?id=2443 直接开个1万位的二进制数,求交就行了。 有关集合求并交的时候可以考虑biset优化 #include<bitset> #include<cstdio> #define REP(i, a, b) for(register int i = (a); i < (b); i++) #define _for(i, a, b) for(register int i = (a); i <= (b); i++) using namespace std; const int MAXN = 1e3 + 10; const int MAXM = 1e4 + 10; bitset<MAXN> s[MAXM]; int main() { int n; scanf("%d", &n); _for(i, 1, n) { int m, x; scanf("%d", &m); _for(j, 1, m) { scanf("%d", &x); s[x][i] = 1; } } int q; scanf("%d", &q); while(q--) { int a, b; scanf("%d%d", &a, &b); if((s[a] & s[b]).any())