文章目录
202012-1 期末预测之安全指数
#include <iostream>
using namespace std;
int Judge(int sum)
{
if(sum > 0)
return sum;
else
return 0;
}
int main()
{
int n, score, w, sum;
sum = 0;
cin >> n;
while(n--){
cin >> score >> w;
int t = score * w;
sum += t;
}
//cout << sum << endl;
/*
if(sum > 0)
cout << sum;
else
cout << "0";
*/
cout << Judge(sum) << endl;
return 0;
}
202009-1 称检测点查询
70,第一次考试紧张吧,没写好,后来发现挺简单的,考试还是把人家规定的4个小时坐完再走啊。
#include <iostream>
#include <string>
#include <cstring>
#define N 200
using namespace std;
void bubblesort(int s[], int);
void bubblesort(int s[], int n)
{
int i, j;
for(i = n - 1; i > 0; i--)
for(j = 1; j <= i; j++)
if(s[j - 1] > s[j])
{
int temp = s[j - 1];
s[j - 1] = s[j];
s[j] = temp;
}
}
int sub[N + 1], sub1[N + 1];
int main()
{
int n, x0, y0, i, x, y, cnt = 0;
scanf("%d%d%d", &n, &x0, &y0);
for(i = 0; i < n; i++)
{
scanf("%d%d", &x, &y);
sub[i] = (x - x0) * (x - x0) + (y - y0) * (y - y0);
}
for(i = 0; i < n; i++)
sub1[i] = sub[i];
bubblesort(sub, n);
if(sub[0] == sub[1] && sub[0]== sub[2])
{
for(i = 0; i < n; i++)
if(sub[0] == sub1[i])
if(cnt != 3)
{
printf("%d\n", i + 1);
cnt++;
}
}
else if(sub[0] == sub[1])
{
for(i = 0; i < n; i++)
if(sub[0] == sub1[i])
{
printf("%d\n", i+1);
cnt++;
}
for(i = 0; i < n; i++)
if(sub[2] == sub1[i])
if(cnt != 3)
{
printf("%d\n", i+1);
cnt++;
}
}
else
{
for(i = 0; i < n; i++)
if(sub[0] == sub1[i])
printf("%d\n", i+1);
for(i = 0; i < n; i++)
if(sub[1] == sub1[i])
printf("%d\n", i+1);
for(i = 0; i < n; i++)
if(sub[2] == sub1[i])
printf("%d\n", i+1);
}
return 0;
}
#include <stdio.h>
#include <limits.h>
#define N 1000
int l[N + 1];
int main()
{
int n, x0, y0, i, j, x, y;
scanf("%d%d%d", &n, &x0, &y0);
for (i = 0; i < n; i++) {
scanf("%d%d", &x, &y);
l[i] = (x0 - x) * (x0 - x) + (y0 - y) * (y0 - y);
}
for (i = 0; i < 3; i++)
{
int min = INT_MAX;
for (j = 0; j < n; j++)
if (l[j] < min)
min = l[j];
for(j = 0; j < n; j++)
if (min == l[j])
{
printf("%d\n", j + 1);
l[j] = INT_MAX;
break;
}
}
return 0;
}
202006-1 线性分类器
自己写的只有50分
#include <iostream>
using namespace std;
const int N = 1000;
int main()
{
int n, m, t1, t2, t3, d1, d2, judge = 0, i, j = 0, i1 = 0, i2 = 0;
char c;
int a1[N], a2[N], b1[N], b2[N];
bool ju, is = true;
cin >> n >> m;
for (i = 0; i < n; i++)
{
cin >> d1 >> d2 >> c;
if (c == 'A')
judge = 1;
if (c == 'B')
judge = 2;
switch (judge)
{
case 1:
a1[i1] = d1;
a2[i1] = d2;
i1++;
break;
case 2:
b1[i2] = d1;
b2[i2] = d2;
i2++;
break;
default:
break;
}
}
for (i = 0; i < m; i++)
{
cin >> t1 >> t2 >> t3;
ju = (t1 + t2 * a1[j] + t3 * a2[j]) > 0;
for (j = 0; j < i1; j++)
if (ju == (t1 + t2 * a1[j] + t3 * a2[j]) > 0)
is = true;
else {
is = false;
break;
}
if (is == true)
{
j = 0;
ju = (t1 + t2 * b1[j] + t3 * b2[j]) > 0;
for (j = 0; j < i2; j++)
if (ju == (t1 + t2 * b1[j] + t3 * b2[j]) > 0)
is = true;
else {
is = false;
break;
}
}
if (is)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}
参考了一下题解,修改后的:
#include <iostream>
using namespace std;
const int N = 1000;
int a1[N], a2[N];
char s[N];
int main()
{
int n, m, t1, t2, t3, i, judge;
char ju_fir, ju_sec;
cin >> n >> m;
for (i = 0; i < n; i++)
cin >> a1[i] >> a2[i] >> s[i];
for (int j = 0; j < m; j++)
{
judge = 1;
ju_fir = 'm'; ju_sec = 'n';
cin >> t1 >> t2 >> t3;
for (i = 0; i < n; i++) {
if (t1 + t2 * a1[i] + t3 * a2[i] > 0)
ju_fir = s[i];
else
ju_sec = s[i];
if (ju_fir == ju_sec) {
judge = 0;
break;
}
}
if (judge)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}
201912-1 报数
#include <iostream>
using namespace std;
int isseven(int); // 声明函数,作用是判断一个数里面有7或能被7整除
int isseven(int n) // 定义函数
{
int i = n, j;
while (i) // 判断这个数里面有7
{
j = i % 10;
if (j == 7)
return 1;
i /= 10;
}
if (n % 7 == 0) // 判断一个数能被7整除
return 1;
else
return 0;
}
int main()
{
int n, i, j, ju, jia, yi, bin, ding;
jia = yi = bin = ding = 0; // 初始化四个数均为0
cin >> n;
for(i = 1, j = 1; i <= n; i++, j++)
if (isseven(j)){
i--; // 有一个人不报数就不会算进报的数里面
ju = j % 4; // ju的作用就是判断谁不报数
switch (ju)
{
case 1:
jia++;
break;
case 2:
yi++;
break;
case 3:
bin++;
break;
default:
ding++;
break;
}
}
cout << jia << endl << yi << endl << bin << endl << ding << endl;
return 0;
}
201909-1 小明种苹果
#include <iostream>
#include <math.h>
#include <limits>
using namespace std;
int apple[1234][1234];
int s[1234]; // 每棵树的疏果个数
int main()
{
int n, m, t, k, p, max;
cin >> n >> m;
// 输入每颗苹果树上的果子数和它们分别的疏果数目
for(int i = 0; i < n; i++)
for (int j = 0; j < m + 1; j++)
cin >> apple[i][j];
// 初始化t和k为0
t = 0, k = 0;
// t是没有进行疏果时的苹果总数
for (int i = 0; i < n; i++)
t += apple[i][0];
max = INT_MIN; // max代表疏果最多的果树的疏果数
// 算出每棵树分别的疏果个数,最多疏果的果树个数为p
for (int i = 0; i < n; i++)
for (int j = 1; j < m + 1; j++)
{
s[i] += abs(apple[i][j]);
if (s[i] > max)
max = s[i];
}
p = max;
// 找到疏果最多果树的编号为k
for (int i = 0; i < n; i++)
if (s[i] == max){
k = i + 1;
break;
}
// 减去疏果数就是最后的总果数
for (int i = 0; i < n; i++)
t -= s[i];
cout << t << " " << k << " " << p << endl;
return 0;
}
201903-1 小中大
#include <iostream>
#define N 100000
using namespace std;
int s[N + 1];
int main()
{
int n, max, min, ju;
double mm;
cin >> n;
// 这里最好用 for循环一次性全赋值,单独给max和min可能会把自己搞蒙
for (int i = 0; i < n; i++)
cin >> s[i];
max = s[0]; min = s[n - 1];
if (n & 1)
mm = s[n / 2];
else
mm = ((double)s[n / 2] + s[n / 2 - 1]) / 2;
if (max < min)
{
int t = max;
max = min;
min = t;
}
ju = mm;
if(mm == ju)
printf("%d %d %d", max, ju, min);
else
printf("%d %.1lf %d", max, mm, min);
return 0;
}
201812-1 小明上学
#include <iostream>
using namespace std;
int main()
{
int r, y, g, n, sum = 0, k, t;
// 输入三个数,分别是红灯、黄灯和绿灯
cin >> r >> y >> g;
// 输入条件个数
cin >> n;
while (n--)
{
cin >> k >> t;
switch (k) // 判断k以确定红绿灯的颜色
{
case 0:
sum += t;
break;
case 1:
sum += t;
break;
case 2: // 黄灯的时候,要再等一个红灯
sum += t + r;
break;
default: // 绿灯不需要等待
break;
}
}
// 输出小明用的时间
cout << sum << endl;
return 0;
}
201809-1 卖菜
#include <iostream>
#define N 1000
using namespace std;
// 确定两个数组,分别是前一天和后一天的菜价。
int s[N + 1], r[N + 1];
int main()
{
int n;
cin >> n; // n代表着有几家菜店
for (int i = 1; i <= n; i++)
cin >> s[i];
// 把第一家菜店和最后一家的分别按照特殊情况计算
r[1] = (s[1] + s[2]) / 2;
r[n] = (s[n] + s[n - 1]) / 2;
// 计算相邻三家店的平均值
for (int i = 2; i < n; i++)
r[i] = (s[i - 1] + s[i] + s[i + 1]) / 3;
// 输出每家店的菜价
for (int i = 1; i <= n; i++)
cout << r[i] << " ";
return 0;
}
201803-1 跳一跳
#include <stdio.h>
int main()
{
int i, sum = 0, j, a, p = 2;
for (i = 0;; i++)
{
scanf("%d", &j);
if (j == 1) {
p = 2;
sum += 1;
a = 1;
}
else if (j == 2 && i == 0 || j == 2 && a == 1) {
sum += p;
a = 2;
p += 2;
}
else if (j == 2 && a == 2) {
sum += p;
p += 2;
}
else if (j == 0)
break;
}
printf("%d", sum);
return 0;
}
201712-1 最小差值
#include <stdio.h>
#include <limits.h>
#define N 1000
int s1[N + 1], s2[N + 1];
void bubblesort(int s[], int);
void bubblesort(int s[], int n)
{
int i, j;
for(i = n - 1; i > 0; i--)
for(j = 1; j <= i; j++)
if (s[j - 1] > s[j])
{
int t = s[j];
s[j] = s[j - 1];
s[j - 1] = t;
}
}
int main()
{
int n, i, min;
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &s1[i]);
bubblesort(s1, n);
for (i = 0; i < n - 1; i++)
s2[i] = s1[i + 1] - s1[i];
min = INT_MAX;
for(i = 0; i < n - 1; i++)
if (min > s2[i])
min = s2[i];
printf("%d", min);
return 0;
}
201312-1 出现次数最多的数
#include <iostream>
#include <string.h>
// 在CSP认证中要写明这个头文件,不然memset会报错,可以用cstring,而且不能用string,本地IDE不需要
#define N 10000
using namespace std;
int main()
{
int n, t, max = 0, max_c = 0;
// 这里将s数组定义为全局变量可以不用初始化s,而且能够减少一个警告使用栈太大,同时不必使用string.h头文件
int s[N + 1];
memset(s, 0, sizeof(s)); // 将数组中所有元素初始化为0
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> t;
s[t]++; // 这里的意思是把重复出现的越多s[t]的大小就会越大。
}
for (int i = 1; i <= 10000; i++)
// 这里i代表的才是输入数据,所以小的先被判断
// 后面即使出现了s[i] == max_c也不会换数据,实现输出最小的一个
if (s[i] > max_c)
{
max = i; // 确定众数是几
max_c = s[i];
}
cout << max << endl;
return 0;
}