scanf

字符串和格式化输入输出

人盡茶涼 提交于 2020-03-07 22:18:06
第四章 字符串和格式化输入/输出 4.1 前导程序 4.2 字符串简介 字符串(character string)是一个由一个或多个字符的序列,例如 "Good luck!" 其中双引号不是字符串的一部分,它用来告诉编译器它括起来的是字符串 4.2.1 char类型数组和null字符 C语言没有专门储存字符串的变量类型,字符串都被储存在 char 类型的数组中。数组是同类型元素的有序序列。 例如 G o o d l u c k ! \0 数组末尾的字符 \0 是空字符(null),C语言用它标记字符串的结束,它是非打印字符,它的ASCII码是0.C语言字符串一定以null结尾,意味着数组容量至少比待存储的字符数多1。 计算机在其中 自动处理 的细节有 创建数组 把字符串中的字符逐个放入数组 在末尾加上一个 \0 4.2.2 使用字符串 根据 %s 转换说明, scanf() 在遇到第一个空白(空格,制表符或换行符)时就自动停止,它只能读取一个单词,而非一整句话。 字符串和字符 字符’x’是基本类型 char ,由一个字符组成 x 字符串"x"是派生类型 char 数组,由两个字符组成 x \0 4.2.3 strlen() 函数 strlen() 和 sizeof 运算符的区别 sizeof 运算符,以字节为单位给出对象; strlen() 函数给出字符串中的字符长度,空字符不计入

Subsequence UVA - 1121

二次信任 提交于 2020-03-07 19:28:32
问题 https://vjudge.net/problem/UVA-1121 分析 记录前缀和,然后利用相减的方法求序列和 # include <iostream> # include <cstdio> # include <cmath> # include <cstring> # include <map> # include <string> # include <vector> # include <algorithm> # include <queue> using namespace std ; typedef long long LL ; const int maxn = 100000 + 5 ; int n , s , kase = 0 , a [ maxn ] , b [ maxn ] ; int main ( void ) { while ( scanf ( "%d%d" , & n , & s ) == 2 ) { int ans = maxn , lim = n + 1 , j = 0 ; b [ 0 ] = 0 ; for ( int i = 1 ; i < lim ; ++ i ) { scanf ( "%d" , & a [ i ] ) ; b [ i ] = a [ i ] + b [ i - 1 ] ; if ( b [ i ] - b [ j ]

Codeforces Round #574 (Div. 2)

谁都会走 提交于 2020-03-07 13:36:33
目录 Contest Info Solutions A. Drinks Choosing B. Sport Mafia C. Basketball Exercise D1. Submarine in the Rybinsk Sea (easy edition) D2. Submarine in the Rybinsk Sea (hard edition) E. OpenStreetMap Contest Info Practice Link Solved A B C D1 D2 E F 6/7 O O O O O Ø - O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 - 没有尝试 Solutions A. Drinks Choosing 题意: 有 \(n\) 个人,每个人喜欢吃第 \(k_i\) 种糖果,现在商店售卖的糖果是一盒两个的,要买最少数量的盒数,即 \(\left\lceil \frac{n}{2} \right\rceil\) 盒,并且使得尽量多的人吃上自己喜欢吃的糖果 思路: 将喜欢吃同一种糖果的人放在一起,每次贪心取两个给他们一盒,这样他们的贡献是满的。 剩下的肯定是每种糖果最多只有一个人喜欢吃,那么贡献就是剩余的盒数。 代码: #include <bits/stdc++.h> using namespace std; #define N 1010 int

湖南雅礼培训 1.2

…衆ロ難τιáo~ 提交于 2020-03-07 08:29:50
模拟赛 串(string) 【题目描述】 给定一个由小写字母组成的字符串 s,每次你可以删去它的一个非回文子串, 求删成空串的最小次数。 【输入数据】 第一行一个整数 t 表示数据组数。 每组数据第一行一个整数 n 表示字符串长度,第二行一个字符串 s。 【输出数据】 每组数据输出一行一个整数表示答案,如果无法删成空串输出-1。 【样例输入】 2 7 abcdcba 3 xxx 【样例输出】 2 -1 【样例解释】 对于第一个样例,一种最优方案为 abcdcba->adcba->空串。 【数据范围】 对于 30%的数据,n<=10。 对于 60%的数据,n<=100。 对于 100%的数据,t<=20,n<=10^5。 #include<iostream> #include<cstdio> #include<cstring> #define maxn 110 #define INF 0x7fffffff using namespace std; int ans; struct node{ string s; int len; }; void solve(node now,int step){//已经进行了step次 if(step>=ans)return; for(int l=0;l<now.len;l++){ for(int r=l+1;r<now.len;r++){ int

hdu 2093 考试排名使用 sscanf () 用于判断输入有没有括号

帅比萌擦擦* 提交于 2020-03-07 07:49:46
http://acm.hdu.edu.cn/showproblem.php?pid=2093 #include < cstdio > #include < cstdlib > #include < cstring > #define MAX 1000 typedef struct { char name[ 11 ]; int sum; int total; }credit; int cmp( const void * a, const void * b) { if (( * (credit * )a).total != ( * (credit * )b).total) return ( * (credit * )a).total - ( * (credit * )b).total; else if (( * (credit * )b).sum != ( * (credit * )a).sum) return ( * (credit * )b).sum - ( * (credit * )a).sum; else return strcmp(( * (credit * )b).name, ( * (credit * )a).name); } int main() { int res, t, f; int i, n, m, j; char style[ 10 ]; credit c

hdu 2602 dp 01背包

坚强是说给别人听的谎言 提交于 2020-03-07 07:16:42
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2602 这题是非常标准的01背包,没啥特殊的地方,很简单 代码: #include <bits/stdc++.h> #define MAXS 1006 using namespace std; int value[MAXS]; int main () { int T; int n,m_v,v; int f[MAXS] ; cin >> T; while(T--) { memset(f,0,sizeof(f)); scanf ("%d%d",&n,&m_v); for (int i=0;i<n;++i) scanf("%d",&value[i]); for (int i = 0;i<n;++i) { scanf("%d",&v); for (int j = m_v; j>= v;--j) f[j] = max (f[j],f[j-v] + value[i]); } printf("%d\n", f[m_v]); } return 0; } 来源: https://www.cnblogs.com/yuluoluo/p/8900805.html

CF Round #625 Div1

旧巷老猫 提交于 2020-03-06 03:58:15
我的第 100 场参与排名的 Codeforces 记录一下 contest id 1320 A. Journey Planning 给一个长度为 \(n\) 的序列 \(b\) ,求子序列中满足原下标差与序列两项差相等的最大和 就是说有个序列 \(b\) ,求出一个子序列 \(x\) ,它在原序列中的下标依次为 \(c\) ,则对每个 \(i\) 都有 \(c_{i+1}-c_i = b_{c_{i+1}}-b_{c_i}\) 求 \(\sum x\) 的最大值 显然对于 \(i-b_i\) 相同的值都是可以放在同一个子序列中的,贪心丢进去就行了,图方便没有去判断正负直接用 \(map\) 储存差值即可 /*================================================================ * * 创 建 者: badcw * 创建日期: 2020/3/1 * ================================================================*/ #include <bits/stdc++.h> #define ll long long using namespace std; const int maxn = 2e5+50; const int mod = 1e9+7; ll qp(ll

CodeCraft-20 (Div. 2)

烈酒焚心 提交于 2020-03-06 03:25:02
比赛链接: CodeCraft-20 (Div. 2) A. Grade Allocation 题意:啊懒得说了 分析:啊懒得分析了 #include<bits/stdc++.h> #define pb push_back using namespace std; typedef long long ll; const int maxn=2e5+7; const int mod=1e9+7; const ll INF=1e18; int a[maxn]; void rua() { int n,m,sum=0;scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]),sum+=a[i]; int ans=min(sum,m); ans=max(a[1],ans); printf("%d\n",ans); } int main() { int t;scanf("%d",&t); while(t--) rua(); return 0; } B. String Modification 题意:相邻的1..n位反转,求反转后字典序最小的; 分析:手画一下就知道,反转后的字符串就是先后面一段,根据奇偶决定前面的一段是正着还是倒着姐在后面; #include<bits/stdc++.h> #define pb push_back

关于scanf的使用

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-06 02:43:10
用scanf_s() 代替scanf()。 教材里用的scanf(),其实在目前Visual Studio版本中已经弃用了,用scanf_s()函数代替了. scanf() 函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。其调用格式为:scanf("<格式化字符串>",<地址表>)。 scanf_s() 的功能虽然与scanf() 相同,但却比 scanf() 安全,因为 scanf_s() 是针对“ scanf()在读取字符串时不检查边界,可能会造成内存泄露”这个问题设计的。scanf_s()用于读取字符串时,必须提供一个数字以表明最多读取多少位字符,以防止溢出。 来源: CSDN 作者: 悸动C 链接: https://blog.csdn.net/weixin_44738957/article/details/104683582

Codeforces Edu Round 66 A-E

僤鯓⒐⒋嵵緔 提交于 2020-03-06 00:50:52
A. From Hero to Zero 通过取余快速运行第一步即可。由于 \(a \% b (a >= b) <= \frac{a}{2}\) 。所以总复杂度不超过 \(O(log_2n)\) 。 #include <cstdio> #include <iostream> using namespace std; typedef long long LL; int main(){ int T; scanf("%d", &T); while(T--){ LL n, k, ans = 0; scanf("%lld%lld", &n, &k); while(n){ if(n % k) ans += n % k, n -= n % k; if(n)n /= k, ans++; } printf("%lld\n", ans); } return 0; } B. Catch Overflow! 循环本质其实是栈的思想,可以用 \(loop\) 表示这层要循环多少次。注意如果直接乘可能爆 \(long\ long\) 。 其实当 \(loop > 2 ^ {32} - 1\) ,后面的只要有 \(add\) 都不行了,所以只要用个 \(flag\) 记录就行了... #include <cstdio> #include <iostream> #include <string> #include