30,230
社区成员




明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
第 1 行为 1 个正整数,表示所生成的随机数的个数N。
第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。
输出 2 行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。
第 2 行为 M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
示例 1
输入
10
20 40 32 67 40 20 89 300 400 15
输出
8
15 20 32 40 67 89 300 400
#include<iostream>
using namespace std;
int main()
{
int a[1001]={0};
int n,x;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x;
a[x]=1;
}
n=0;
for(int i=1;i<=1000;i++)
{
if(a[i]==1) n++;
}
cout<<n<<endl;
for(int i=1;i<=1000;i++)
{
if(a[i]==1) cout<<i<<" ";
}
return 0;
}
给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母。
元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母。
输入格式:
输入一行,包含一个单词,单词中只包含小写英文字母。单词中的字母个数不超过 100。
输出两行,第一行包含一个整数,表示元音字母的数量。
第二行包含一个整数,表示辅音字母的数量。
示例
输入
lanqiao
输出
4
3
代码:
#include<stdio.h>
#include<string.h>
int main() {
char a[105];
int p = 0, y = 0;
gets(a);
for (int i = 0; i < strlen(a); i++) {
if (a[i] == 'a' || a[i] == 'e' || a[i] == 'i' || a[i] == 'o' || a[i] == 'u' )
y++;
else p++;
}
printf("%d\n%d", y, p);
return 0;
}
输出第一行包含一个整数,表示结果是几点。
第二行包含一个整数,表示结果是几分。
示例 1
输入
3
20
165
输出
6
5
代码:
#include<stdio.h>
int main() {
int a, b, t, s;
scanf("%d\n%d\n%d", &a, &b, &t);
if (a >= 0 && a <= 23) {
s = b + t;
b = s % 60;
if (s >= 60) {
s /= 60;
a += s;
}
}
printf("%d\n%d", a, b);
return 0;
}
上面的题都挺有意思,很easy!!!
给定三个整数数组
A = [A_1, A_2, \cdots A_N]A=[A1,A2,⋯AN],
B = [B_1, B_2, \cdots B_N]B=[B1,B2,⋯BN],
C = [C_1, C_2, \cdots C_N]C=[C1,C2,⋯CN],
请你统计有多少个三元组 (i, j, k)(i,j,k) 满足:
1 \leq i, j, k \leq N1≤i,j,k≤N;
A_i < B_j < C_kAi<Bj<Ck。
第一行包含一个整数 NN。
第二行包含 NN 个整数 A_1, A_2, \cdots A_NA1,A2,⋯AN。
第三行包含 NN 个整数 B_1, B_2, \cdots B_NB1,B2,⋯BN。
第四行包含 NN 个整数 C_1, C_2, \cdots C_NC1,C2,⋯CN。
其中,1 \leq N \leq 10^5, 0 \leq Ai, Bi, Ci \leq 10^51≤N≤105,0≤Ai,Bi,Ci≤105。
输出一个整数表示答案。
示例
输入
3
1 1 1
2 2 2
3 3 3
输出
27
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string.h>
#define ll long long
const int maxn = 100010;
using namespace std;
int main() {
int a[maxn], b[maxn], c[maxn];
int n;
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < n; i++) cin >> b[i];
for (int i = 0; i < n; i++) cin >> c[i];
sort(a, a + n), sort(b, b + n), sort(c, c + n);
ll sum=0;
for (int i = 0; i < n; i++) {
ll x = lower_bound(a, a + n, b[i]) - a;
ll y = n-(upper_bound(c, c + n, b[i]) - c);
sum += x * y;
}
cout << sum ;
return 0;
}
n个砖块排成一排,从左到右编号依次为 1∼n。
每个砖块要么是黑色的,要么是白色的。
现在你可以进行以下操作若干次(可以是 0 次):
选择两个相邻的砖块,反转它们的颜色。(黑变白,白变黑)
你的目标是通过不超过 3n 次操作,将所有砖块的颜色变得一致。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据第一行包含一个整数 nn。
第二行包含一个长度为 n 的字符串 s。其中的每个字符都是 W
或 B
,如果第 ii 个字符是 W
,则表示第 ii 号砖块是白色的,如果第 ii 个字符是 B
,则表示第 ii 个砖块是黑色的。
输出格式
每组数据,如果无解则输出一行 −1。
否则,首先输出一行 kk,表示需要的操作次数。
如果 k>0,则还需再输出一行 kk 个整数,p1,p2,…,pk。其中 pipi 表示第 i 次操作,选中的砖块为 pi和 pi+1 号砖块。
如果方案不唯一,则输出任意合理方案即可。
数据范围
1≤T≤10,
2≤n≤200。
输入样例:
4
8
BWWWWWWB
4
BWBB
5
WWWWW
3
BWB
输出样例:
3
6 2 4
-1
0
2
2 1
难度:简单 |
时/空限制:1s / 64MB |
总通过数:4548 |
总尝试数:8192 |
来源:CF1271B |
算法标签 |
代码:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
int n;
string str;
void update(char& c) {
if (c == 'W') c = 'B';
else c = 'W';
}
bool check(char c) {
vector<int > res;
string s = str;
for (int i = 0; i + 1 < n; i++)
if (s[i] != c) {
update(s[i]);
update(s[i + 1]);
res.push_back(i);
}
if (s.back() != c) return false;
cout << res.size() << endl;
for (int x : res) cout << x + 1 << ' ';
if (res.size()) cout << endl;
return true;
}
int main()
{
int T;
cin >> T;
while (T--) {
cin >> n >> str;
if (!check('B') && !check('W')) puts("-1");
}
return 0;
}
总结:生活不在别处,当下即是全部!!!