getchar

COGS 2685. 迷妹

故事扮演 提交于 2020-01-24 16:56:12
★ 输入文件: fans.in 输出文件: fans.out 简单对比 时间限制:1 s 内存限制:256 MB 【题目描述】 小钟、小皓和小曦都是著名偶像派OI选手,他们都有很多迷妹。 现在,有n个妹子排成了一行,从左到右编号为1到n。这些妹子中,任意一个都是其中一个人的迷妹。 现在,蒟蒻wyz有Q个问题,第i个问题为:编号在l[i]到r[i]范围内的妹子中,分别有几个小钟的迷妹、小皓的迷妹、和小曦的迷妹。 【输入格式】 输入到fans.in 第一行2个正整数n,Q。 第2行到第n+1行每行一个正整数a[i],描述了第i个妹子是谁的迷妹。a[i]=1表示小钟的迷妹,a[i]=2表示小皓的迷妹,a[i]=3表示小曦的迷妹。 第n+2行到第n+Q+1行,每行2个整数,表示第i个问题。 【输出格式】 输出到fans.out 共Q行,每行3个用空格分开的整数,分别表示对于第i个问题,有多少小钟、小皓、小曦的迷妹。 【样例输入】 6 3 2 1 1 3 2 1 1 6 3 3 2 4 【样例输出】 3 2 1 1 0 0 2 0 1 【提示】 【数据范围】 对于10%的数据,保证1<=n<=10,Q<=10, 对于25%的数据,保证1<=n<=100,Q<=100, 对于45%的数据,保证1<=n<=1000,Q<=1000, 对于100%的数据,保证1<=n<=100,000,Q<

锵锵锵,又来了——冒泡排序

我的未来我决定 提交于 2020-01-24 16:44:23
虽然桶排序很方便,但是它非常浪费空间!!!在多大范围就要开多大的空间,seriously?! 所以,推出了一种新的算法:冒泡排序! 其思想就是比较相邻的两个元素,如果与题目不符就交换 如上图就是利用冒泡每次都与相邻的比较,最后在最后一位的就是最大的数,依次排列完成想法! 比较相邻的元素,如果前一个比后一个大,交换之。 第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。 第二趟将第二大的数移动至倒数第二位 最后需要n-1次 #include <stdio.h> int main() { int a[100],i,j,t,n; scanf("%d",&n); //输入一个数n,表示接下来有n个数 for(i=1;i<=n;i++) //循环读入n个数到数组a中 scanf("%d",&a[i]); //冒泡排序的核心部分 for(i=1;i<=n-1;i++) //n个数排序,只用进行n-1趟 { for(j=1;j<=n-i;j++) //从第1位开始比较直到最后一个尚未归位的数。 { if(a[j]<a[j+1]) //比较大小并交换 { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } for(i=1;i<=n;i++) //输出结果 printf("%d ",a[i]);

rt

不问归期 提交于 2020-01-22 09:24:25
#include<bits/stdc++.h> #define ll long long using namespace std; const int mod=1e9+7; inline int rd(register int x=0,register char ch=getchar(),register int f=0){ while(!isdigit(ch)) f=ch=='-',ch=getchar(); while(isdigit(ch)) x=(x<<1)+(x<<3)+ch-48,ch=getchar(); return f?-x:x; } ll mgml(ll a,ll b,ll ans=1){ for(;b;b>>=1,a=a*a%mod) if(b&1) ans=ans*a%mod; return ans; } int n,m,k; int main(){ n=rd();m=rd();k=rd(); if(n+m-1>k) return puts("0")&0; if(n==1){ ll ans=1; for(int i=k;i>=k-m+1;--i) ans=ans*i%mod; return printf("%lld\n",ans)&0; } return 0; } /*//萎了。。。 #include<bits/stdc++.h> #define ll

CF2

喜欢而已 提交于 2020-01-21 23:32:20
热烈庆祝我马力大进步能调出计算几何了…… A A 阅读理解+ \(map\) #include<bits/stdc++.h> using namespace std; namespace red{ #define y1 qwq #define int long long #define eps (1e-6) inline int read() { int x=0;char ch,f=1; for(ch=getchar();(ch<'0'||ch>'9')&&ch!='-';ch=getchar()); if(ch=='-') f=0,ch=getchar(); while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return f?x:-x; } int n,maxn,tot,x[1010]; string win,s[1010]; map<string,int> q,q1; inline void main() { n=read(); for(int i=1;i<=n;++i) { cin>>s[i]>>x[i]; q[s[i]]+=x[i]; } for(int i=1;i<=n;++i) { if(q[s[i]]==maxn) ++tot; if(q[s[i]]>maxn) maxn=q[s[i]],tot

数独游戏代码

折月煮酒 提交于 2020-01-21 15:40:42
//数独游戏c++ class CSudoku { int map[9][9]; int blanks; int smod; int solves; int check(int,int,int*); void dfs(); public: enum{ANY=0,ALL=1}; CSudoku(int); CSudoku::CSudoku(int *data); void SudokuGenerator(int); //随机生成数独,n越大越难 void SudokuGenerator(int *data);//人工指定数独 //virtual ~CSudoku(); void display();//显示数独 int resolve(int mod=ALL);//解数独 void analyze(); }; #include "stdio.h" #include "stdlib.h" #include "time.h" #include "iostream" #include "iomanip" //要用到格式控制符 using namespace std; CSudoku::CSudoku(int n){ int j; j=rand()%3; blanks=n+j; SudokuGenerator(blanks); cout<<endl<<"随机数独: --->(Y轴)[x

CF235B Let\'s Play Osu!

早过忘川 提交于 2020-01-21 10:06:34
传送门 题目大意 求出总得分的期望值。 思路 还没有学习数学期望的 小朋友 赶紧去学一下数学期望,这里只提供公式: $E\left ( x \right )=\sum_{k=1}^{\infty }x_{k}p_{k}$ 其中$x_{k}$表示对应的值,$p_{k}$表示对应的概率。 从题意中很容易看出只有 O 才会对答案做出贡献,设之前连续 O 的长度为 x ,则每次多出一个 O 造成的贡献就是$\left ( x+1 \right )^{2}-x^{2}=2*x+1$,因此我们可以用两个数组,一个是$l_{i}$,表示线性期望,另一个是$ans_{i}$,表示到 i 的期望得分,很容易得到 $l_{i}=\left(l_{i-1}+1\right)*p$ $ans_{i}=ans_{i-1}+\left(2*l_{i-1}+1 \right )*p$ 这里显然可以空间优化,这里不多说明。 AC代码 #include <cstdio> #define RI register int using namespace std; template <class T> inline void read(T &x) { T f = 1; x = 0; char c = getchar(); while(c > '9' || c < '0') { if(c == '-') f = -f; c

CCF-CSP 201912-3化学方程式

人盡茶涼 提交于 2020-01-21 01:36:45
CCF-CSP 201912-3化学方程式 满分代码: #include <bits/stdc++.h> #define FOR(i,s,t) for(int i=(s);i<=(t);i++) #define ROF(i,s,t) for(int i=(s);i>=(t);i--) #define pb push_back #define mp make_pair #define eb emplace_back #define fi first #define se second #define endl '\n' using namespace std; typedef unsigned long long ull; typedef long long ll; const int maxn = 1e3 + 6; const ll mod = 1e9 + 7; const int inf = 0x3f3f3f3f; const ll INF = 0x3f3f3f3f3f3f3f3f; int readInt(){ int x=0; bool sign=false; char c=getchar(); while(!isdigit(c)){ sign=c=='-'; c=getchar(); } while(isdigit(c)){ x=x*10+c-'0'; c=getchar(

CF235B Let\'s Play Osu!

↘锁芯ラ 提交于 2020-01-20 23:51:16
传送门 题目大意 求出总得分的期望值。 思路 如果不知道期望的小朋友,赶紧去学一下期望,只给出求期望的公式: 表示取值, 表示概率。 从题意中,很明显看出只有O才会对答案做出贡献。 因为 ,所以每次多一个O就会多出 的贡献。 我们设 表示线性期望, 表示答案,得到 , 则 。 AC代码 #include <cstdio> #define RI register int using namespace std; template <class T> inline void read(T &x) { T f = 1; x = 0; char c = getchar(); while(c > '9' || c < '0') { if(c == '-') f = -f; c = getchar(); } while(c >= '0' && c <= '9') { x = x * 10 + c - '0'; c = getchar(); } x *= f; } int n; double l, ans, p; int main() { read(n); for(RI i = 1; i <= n; i++) { scanf("%lf", &p); ans += (l * 2 + 1) * p; l = (l + 1) * p; } printf("%lf\n", ans); return 0;

Codeforces Round #614 (Div. 2)

橙三吉。 提交于 2020-01-20 20:26:32
Rank1696。 Cytus II好评。 因为下晚自习了所以D没调出来身败名裂。 A 签到题。 #include<bits/stdc++.h> using namespace std; unordered_set<int>S; int min(int a,int b){return a<b? a:b;} int read(){int x=0,c=getchar();while(!isdigit(c))c=getchar();while(isdigit(c))x=x*10+c-48,c=getchar();return x;} int main() { for(int T=read();T;--T) { S.clear(); int n=read(),s=read(),k=read(); for(int i=1;i<=k;++i) S.insert(read()); int up=1e9,dw=1e9; for(int p=s;p<=n;++p) if(!S.count(p)) {up=p-s;break;} for(int p=s;p;--p) if(!S.count(p)) {dw=s-p;break;} printf("%d\n",min(up,dw)); } } B 简单结论题 #include<bits/stdc++.h> using namespace std;

轻工业大学OJ 1068

China☆狼群 提交于 2020-01-20 13:39:25
本题较简单,关键是了解秦九韶算法,还有一个点是了解gets()函数和getchar()函数的区别。 作用是: gets()用于从标准输入流stdin读入一个整行(以’\n’或EOF)结束,写入ptr指向的字符数组,并返回这个指针;出错或遇到文件结束时则返回NULL。行末的’\n’从流中取出,但不写入数组。gets()不检查被写入的数组大小。 getchar()用于从标准输入流stdin读入一个字符,并返回这个字符。如果读到文件结尾,则返回EOF。注意到EOF不能用char类型表示,所以getchar()函数返回的是一个int型的数。使用时也应该注意这一点。 getchar()函数 得到一个字符 gets()函数 得到一个字符串 题目如下: 代码如下: # include <stdio.h> int main ( ) { int ch , d ; d = 0 ; while ( ch = getchar ( ) , ch != '\n' ) d = d * 2 + ( ch - '0' ) ; printf ( "%d\n" , d ) ; return 0 ; } 来源: CSDN 作者: 赤旗的世界 链接: https://blog.csdn.net/weixin_45588493/article/details/104050440