'commit'
This commit is contained in:
40
C++专题课程/NOIP算法总结/枚举/排座椅/P1056.cpp
Normal file
40
C++专题课程/NOIP算法总结/枚举/排座椅/P1056.cpp
Normal file
@@ -0,0 +1,40 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
struct point {
|
||||
int x, n;//x表示要分离线所在的行或列 n指这条线能分开说话人的数量
|
||||
} y[1001], x[1001];//x是行 y为列
|
||||
bool cmp1(point a, point b) {
|
||||
return a.n > b.n;//排序时将分离数量大的放前面保证最优
|
||||
}
|
||||
|
||||
bool cmp2(point a, point b) {
|
||||
return a.x < b.x;//出答案时要求列数(行数)小的在前
|
||||
}
|
||||
|
||||
int main() {
|
||||
int m, n, k, l, d;//同题
|
||||
scanf("%d %d %d %d %d", &m, &n, &k, &l, &d);
|
||||
int x1, y1, p1, q1;//同题
|
||||
for (int i = 1; i <= d; i++) {//
|
||||
scanf("%d %d %d %d", &x1, &y1, &p1, &q1);
|
||||
if (x1 == p1) {//辨别是纵向还是横向,若横向相同则分离线为纵向
|
||||
y[min(y1, q1)].x = min(y1, q1);//标记分离线所在列数
|
||||
y[min(y1, q1)].n++;//y[min(y1,q1)].x保证相同列数分离线叠加
|
||||
}
|
||||
if (y1 == q1) {//同理
|
||||
x[min(x1, p1)].x = min(x1, p1);
|
||||
x[min(x1, p1)].n++;
|
||||
}
|
||||
}
|
||||
sort(x + 1, x + 1 + 1000, cmp1);//分离数大的在前
|
||||
sort(y + 1, y + 1 + 1000, cmp1);
|
||||
sort(x + 1, x + 1 + k, cmp2);//将答案进行整理(行数或列数小在前)
|
||||
sort(y + 1, y + 1 + l, cmp2);
|
||||
for (int i = 1; i <= k; i++)
|
||||
printf("%d ", x[i].x);
|
||||
printf("\n");//输出中间换行
|
||||
for (int i = 1; i <= l; i++)
|
||||
printf("%d ", y[i].x);
|
||||
return 0;
|
||||
}
|
||||
1
C++专题课程/NOIP算法总结/枚举/排座椅/题目链接.txt
Normal file
1
C++专题课程/NOIP算法总结/枚举/排座椅/题目链接.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://www.luogu.org/problemnew/solution/P1056?page=4
|
||||
42
C++专题课程/NOIP算法总结/枚举/火柴棍等式/P1149.cpp
Normal file
42
C++专题课程/NOIP算法总结/枚举/火柴棍等式/P1149.cpp
Normal file
@@ -0,0 +1,42 @@
|
||||
#include<bits/stdc++.h>
|
||||
using namespace std;
|
||||
|
||||
int Fun(int n)
|
||||
{
|
||||
//用数组列出0-9没一个数所需要的火柴棍数
|
||||
int arr[10] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
|
||||
int ret = 0;
|
||||
//判断n是不是两位数或更高位数
|
||||
while (n / 10 != 0){
|
||||
//将个位数所需要的火柴棍数相加
|
||||
ret += arr[n % 10];
|
||||
//更新n的个位数
|
||||
n /= 10;
|
||||
}
|
||||
//最后加上此时n需要的火柴棍数(n是一位数)
|
||||
ret += arr[n];
|
||||
return ret;
|
||||
}
|
||||
int main()
|
||||
{
|
||||
int a, b, c, m, num = 0;
|
||||
//printf("请输入火柴棍的个数\n");
|
||||
scanf("%d", &m);
|
||||
//枚举a和b
|
||||
for (a = 0; a <= 1111; a++){
|
||||
for (b = 0; b <= 1111; b++){
|
||||
c = a + b;
|
||||
//判读是否符合条件
|
||||
if (Fun(a) + Fun(b) + Fun(c) == m - 4){
|
||||
//printf("%d + %d = %d\n", a, b, c);
|
||||
//计算所有可能的个数
|
||||
num++;
|
||||
}
|
||||
}
|
||||
}
|
||||
//printf("一共可以拼出%d个不同等式\n", num);
|
||||
//system("pause");
|
||||
cout<<num;
|
||||
return 0;
|
||||
}
|
||||
|
||||
1
C++专题课程/NOIP算法总结/枚举/火柴棍等式/题目链接.txt
Normal file
1
C++专题课程/NOIP算法总结/枚举/火柴棍等式/题目链接.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://www.luogu.org/problem/P1149
|
||||
17
C++专题课程/NOIP算法总结/枚举/陶陶摘苹果/P1046.cpp
Normal file
17
C++专题课程/NOIP算法总结/枚举/陶陶摘苹果/P1046.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
int a[15];
|
||||
int main() {
|
||||
int b,B,A;
|
||||
for(int i=1; i<=10; i++)
|
||||
cin>>a[i];
|
||||
cin>>b;
|
||||
B=b+30;
|
||||
int c=0;
|
||||
for(int i=1; i<=10; i++) {
|
||||
if(a[i]<=B)
|
||||
c++ ;
|
||||
}
|
||||
cout<<c;
|
||||
return 0;
|
||||
}
|
||||
1
C++专题课程/NOIP算法总结/枚举/陶陶摘苹果/题目链接.txt
Normal file
1
C++专题课程/NOIP算法总结/枚举/陶陶摘苹果/题目链接.txt
Normal file
@@ -0,0 +1 @@
|
||||
https://www.luogu.org/problem/P1046
|
||||
Reference in New Issue
Block a user