scanf

杭电oj2078

烈酒焚心 提交于 2020-02-14 23:34:32
#include <stdio.h> #include <string.h> #include using namespace std; int main() { int n, dif[50]; scanf_s("%d", &n); while (n–) { int t, m, eff; scanf_s("%d%d", &t, &m); for (int i = 0; i < t; i++) { scanf_s("%d", &dif[i]); } sort(dif, dif + t); eff = pow(100 - dif[0], 2); for (int i = 1; i < m; i++) { int k = pow(dif[i] - dif[i - 1], 2); if (k > eff) { eff = k; } } printf("%d\n", eff); } while (1); return 0; } 来源: CSDN 作者: qq_37659800 链接: https://blog.csdn.net/qq_37659800/article/details/104317640

Educational Codeforces Round 45 (Rated for Div. 2)

╄→尐↘猪︶ㄣ 提交于 2020-02-14 20:49:16
A. C ommentary Boxes 水题 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long LL; 4 5 int main() { 6 LL n, m, a, b; 7 cin >> n >> m >> a >> b; 8 n %= m; 9 LL ans = min(b * n, (m - n) * a); 10 cout << ans << endl; 11 return 0; 12 } Aguin B. M icro-World 双指针 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 2e5 + 10; 4 int a[maxn]; 5 6 int main() { 7 int n, k, ans = 0; 8 scanf("%d %d", &n, &k); 9 for(int i = 1; i <= n; ++i) scanf("%d", a + i); 10 sort(a + 1, a + 1 + n); 11 int p = 1; 12 for(int i = 1; i <= n; i++) { 13 while(p < i && a[p] < a[i] - k) p++; 14

浙江省赛真题2018

早过忘川 提交于 2020-02-14 20:31:25
只做了签到题,菜就是菜,找啥理由; 但失败了总要得到一些教训; A - Peak ZOJ - 4024 题意:就是给你一个序列让你判断是不是先增加后减少的,签到; #include<bits/stdc++.h> using namespace std; #define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++) #define per(i,j,k) for(int i=(int)k;i>=(int)j;i--) #define pb push_back #define fi first #define se second typedef long long ll; typedef unsigned long long ull; typedef long double ldb; ll a[100005]; int main(){ int t,n; scanf("%d",&t); while(t--){ scanf("%d",&n); int flag=1; int max=-1,maxi; for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); if(a[i]>max){ max=a[i]; maxi=i; } } if(maxi==n||maxi==1)flag=0; for(int i=1;i<maxi;i

Codeforces Round #619 (Div. 2):A. Three Strings

好久不见. 提交于 2020-02-14 18:25:17
Discription You are given three strings a, b and c of the same length n. The strings consist of lowercase English letters only. The i-th letter of a is ai, the i-th letter of b is bi, the i-th letter of c is ci. For every i (1≤i≤n) you must swap (i.e. exchange) ci with either ai or bi. So in total you’ll perform exactly n swap operations, each of them either ci↔ai or ci↔bi (i iterates over all integers between 1 and n, inclusive). For example, if a is “code”, b is “true”, and c is “help”, you can make c equal to “crue” taking the 1-st and the 4-th letters from a and the others from b. In this

[Updating]点分治学习笔记

拜拜、爱过 提交于 2020-02-14 18:18:10
[Updating]点分治学习笔记 Upd \(2020/2/14\) ,补了一道例题LuoguP3085 [USACO13OPEN]阴和阳Yin and Yang To Do List 待填 LuoguP2664 树上游戏 动态点分治。 这个看心情写吧......是贞德不想写qwq 嘛...上个世纪学的...好像全忘了....来写一下吧 这个应该算树上路径类问题的一类trick吧... che dan环节 点分治嘛,顾名思义,先抓树上一个点算它对答案贡献,然后把这个点割掉,会变成几棵小一点的树,然后递归算就好了。 那么问题来了,点要怎么选呢? rand一个 如果说他是一条链的话从上往下选点就被卡 \(n^2\) 了 默默码起手中的暴力 ,随便rand又有被针对的风险... 在分治递归的时候,每一层递归的总复杂度我们不想管它,我们要控制的就是每一次选点使得递归的层数变少。 树上有一个名词叫做 重心 详见CSP-2019 D2T3 ,重心旁边的子树大小最大是不会超过 \(n/2\) 的,所以我们每次点分治的时候先找当前分治到的这一联通块内的重心,然后算重心对答案的贡献在把重心割掉,分治就好了。 这样做递归的层数是不会超过 \(\log n\) 的,具体的算一点对答案的贡献针对题目来看。 那怎么找重心呢?重心的定义,对于一棵树,其重心的最大子树大小一定是最小的,所以对树 \(Dfs\)

codeforces-1163 (div2)

落花浮王杯 提交于 2020-02-14 00:26:27
想开div3开成div2了,比赛的时候还以为我又菜了。 赛后经验:关爱视力 从我做起 A.删除第一个点的时候断环成链,不产生贡献,后面每隔一个拆一个点都会让联通块最终答案 + 1 没有可以产生贡献的点的时候就需要删联通块,此时产生反向贡献答案 - 1 #include <map> #include <set> #include <ctime> #include <cmath> #include <queue> #include <stack> #include <vector> #include <string> #include <cstdio> #include <cstdlib> #include <cstring> #include <sstream> #include <iostream> #include <algorithm> #include <functional> using namespace std; #define For(i, x, y) for(int i=x;i<=y;i++) #define _For(i, x, y) for(int i=x;i>=y;i--) #define Mem(f, x) memset(f,x,sizeof(f)) #define Sca(x) scanf("%d", &x) #define Sca2(x,y) scanf

C语言程序设计100例之(26):二进制数中1的个数

有些话、适合烂在心里 提交于 2020-02-13 10:34:53
例26 二进制数中1的个数 问题描述 如果一个正整数m表示成二进制,它的位数为n(不包含前导0),称它为一个n位二进制数。所有的n位二进制数中,1的总个数是多少呢? 例如,3位二进制数总共有4个,分别是4(100)、5(101)、6(110)、7(111),它们中1的个数一共是1+2+2+3=8,所以所有3位二进制数中,1的总个数为8。 输入格式 一个整数T,表示输入数据的组数,接下来有T行,每行包含一个正整数 n(1<=n<=20)。 输出格式 对于每个n ,在一行内输出n位二进制数中1的总个数。 输入样例 3 1 2 3 输出样例 1 3 8 (1)编程思路1。 对于输入的n,n位二进制数m是位数为n并且首位为1的二进制数,且满足:     2 n-1 ≤ n位二进制数m < 2 n   因为首位为1,n位二进制数的个数就是n-1位的0和1的组合数,即2 n-1 个。   第1位必须为1,所以第1位的1的个数为2 n-1 个。   其他n-1位,总位数为(n-1)* 2 n-1 。其中0和1的个数是一半对一半,所以1的个数为(n-1)* 2 n-1 /2。   合计1的位数为:2 n-1 +(n-1)* 2 n-1 /2。 因此,n位二进制数中1的个数直接用上式计算出来。计算时,用移位运算来计算2的n次方是一种快速的计算方法。 即n位二进制数中1的个数为 :1<<(n-1)+

Codeforces Educational Codeforces Round 54 题解

天涯浪子 提交于 2020-02-13 03:48:17
题目链接: https://codeforc.es/contest/1076 A. Minimizing the String 题意:给出一个字符串,最多删掉一个字母,输出操作后字典序最小的字符串。 题解:若存在一个位置 i 满足 a[i] > a[i+1],若不删除 a[i] 则后续操作不可能更优。 1 #include <bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 #define ull unsigned long long 5 #define mst(a,b) memset((a),(b),sizeof(a)) 6 #define mp(a,b) make_pair(a,b) 7 #define pi acos(-1) 8 #define pii pair<int,int> 9 #define pb push_back 10 const int INF = 0x3f3f3f3f; 11 const double eps = 1e-6; 12 const int MAXN = 2e5 + 10; 13 const int MAXM = 2e5 + 10; 14 const ll mod = 1e9 + 7; 15 16 char s[MAXN]; 17 18 int main() { 19

Educational Codeforces Round 82 (Rated for Div. 2)

守給你的承諾、 提交于 2020-02-13 01:45:31
A 题意: 一串01字符串,求最少删掉几个0,使得1连续 思路: 找1的l,r,数出区间0的个数 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 #define il inline 5 #define it register int 6 #define inf 0x3f3f3f3f 7 #define lowbit(x) (x)&(-x) 8 #define mem(a,b) memset(a,b,sizeof(a)) 9 #define mod 998244353 10 const int maxn=1e6+10; 11 int n,k; 12 char s[200]; 13 int main(){ 14 scanf("%d",&n); 15 while(n--){ 16 scanf("%s",s); 17 int l1=strlen(s),sum=0,l=-1,r=-1; 18 for(it i=0;i<l1;i++){ 19 if(s[i]=='1' && l==-1){ 20 l=i; 21 } 22 else if(s[i]=='1'){ 23 r=i; 24 } 25 } 26 for(it i=l;i<=r;i++){ 27 if(s[i]=='0'){sum++;}

编程中出现的问题

微笑、不失礼 提交于 2020-02-13 01:32:14
一. 第一个scanf()函数可以正常使用,后续的scanf()函数无法再次输入 可能原因:缓存被占据 使用fflush(stdin)清除缓存 二.在连续输入字符时注意使用getchar()清除空格 来源: https://www.cnblogs.com/Yshun/p/11370199.html