PAT Graduate Admission

AC代码:

#include <iostream>

#include <vector>
#include <algorithm>
#define MAXK 6
#define MAXA 40001
using namespace std;


typedef struct Applicant{
int Ge; //笔试成绩 
double finalGrade; //总成绩 
int num; //申请编号(从0~n-1) 
int preffer[MAXK]; //第num份(从0开始计数)申请的志愿院校 
int school; //最终被录取的学校编号 
}Applicant;


bool cmp(const Applicant a, const Applicant b);
Applicant arr[MAXA]; //结构体数组 


int n, m, k; //分别表示申请总个数、学校个数、志愿个数 
int main(){
//数据预处理 
int Ge, Gi;
double finalGrade;
scanf("%d %d %d", &n, &m, &k);
int quato[m]; //记录每个学校的招生人数 
for(int i = 0; i < m; i ++){
scanf("%d", &quato[i]);
}
for(int i = 0; i < n; i ++){
scanf("%d %d", &Ge, &Gi);
arr[i].Ge =Ge;
arr[i].finalGrade = 1.0*(Ge + Gi)/2.0;
arr[i].num = i;
for(int j = 0; j < k; j ++){
scanf("%d", &arr[i].preffer[j]);
}
}
//排名 
sort(arr, arr + n, cmp); 
for(int i = 0; i < n; i ++){
arr[i].school = -1; //初始化未被录取 
}
//开始录取 
for(int i = 0; i < n; i ++){
for(int j = 0; j < k; j ++){
if(quato[arr[i].preffer[j]]){
quato[arr[i].preffer[j]] --; //每录取一位学生招生人数减去1 
arr[i].school = arr[i].preffer[j]; //同时记录该申请编号的最终录取学校编号 
break;
}
else { //已到达该学校的录取名额限制时,考虑是否破格录取 
if(arr[i - 1].finalGrade == arr[i].finalGrade && arr[i - 1].Ge == arr[i].Ge){
arr[i].school = arr[i - 1].school; //破格录取(由于已经排好序,这里肯定只需要和上一位同学进行比较即可) 
break;
}
}
}
}
int flag = 1; //格式化输出用到 
//输出结果
for(int i = 0; i < m; i ++){ //对每所学校 
vector<int> vtmp;
for(int j = 0; j < n; j ++){
if(arr[j].school == i){
// printf("%d ", arr[j].num);
vtmp.push_back(arr[j].num);
}
}
sort(vtmp.begin(), vtmp.end()); //按照编号从小到大排序输出 
flag = 1;
for(int p = 0; p < vtmp.size(); p ++){
if(flag == 1){
printf("%d", vtmp[p]);
flag = 0;
}
else {
printf(" %d", vtmp[p]);
}
}
printf("\n");

return 0;
}


bool cmp(const Applicant a, const Applicant b){ //重载比较函数 
if(a.finalGrade == b.finalGrade){
return a.Ge > b.Ge;
}
else {
return a.finalGrade > b.finalGrade; 
}
}









  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Kubernetes的k3d集群可以使用admission webhook来验证和修改资源对象。下面是一个简单的k3d admission webhook的演示: 1. 创建一个名为`validating-webhook.yaml`的文件,内容如下: ```yaml apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: name: example.k3d.local webhooks: - name: example.k3d.local clientConfig: service: name: example.k3d.local namespace: default path: "/validate" caBundle: "" rules: - apiGroups: - "" - "extensions" - "apps" apiVersions: - "v1" - "v1beta1" - "v1beta2" operations: - CREATE - UPDATE resources: - "pods" - "deployments" - "replicasets" failurePolicy: Fail sideEffects: None admissionReviewVersions: - v1 - v1beta1 ``` 这个文件定义了一个名为`example.k3d.local`的验证webhook,它将验证和修改`pods`、`deployments`和`replicasets`资源对象。 2. 创建一个名为`deployment.yaml`的文件,内容如下: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 ``` 这个文件定义了一个名为`nginx-deployment`的Deployment对象,它将创建3个Nginx容器。 3. 创建一个名为`Dockerfile`的文件,内容如下: ```dockerfile FROM python:3.7-alpine RUN pip install flask COPY app.py /app.py CMD ["python", "/app.py"] ``` 这个文件定义了一个基于Python 3.7的Docker镜像,它将安装Flask并运行一个名为`app.py`的应用程序。 4. 创建一个名为`app.py`的文件,内容如下: ```python from flask import Flask, request, jsonify import json app = Flask(__name__) @app.route('/validate', methods=['POST']) def validate(): admission_review = request.get_json() resource = admission_review['request']['object'] if resource['kind'] == 'Deployment': if resource['metadata']['name'] != 'nginx-deployment': return jsonify({'response': {'allowed': False, 'status': {'reason': 'Name is not nginx-deployment'}}}) return jsonify({'response': {'allowed': True}}) if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=8080) ``` 这个文件定义了一个Flask应用程序,它将验证`Deployment`对象的名称是否为`nginx-deployment`。 5. 构建Docker镜像: ```shell docker build -t k3d-admission . ``` 6. 创建一个名为`k3d-cluster.yaml`的文件,内容如下: ```yaml apiVersion: k3d.io/v1alpha2 kind: Cluster nodes: 1 name: k3d-admission ports: - port: 8080:8080 protocol: TCP image: rancher/k3s:v1.20.4-k3s1 wait: true ``` 这个文件定义了一个名为`k3d-admission`的k3d集群,它将暴露端口8080以便验证webhook服务可以访问。 7. 创建k3d集群: ```shell k3d cluster create -f k3d-cluster.yaml ``` 8. 部署验证webhook服务: ```shell kubectl apply -f validating-webhook.yaml kubectl apply -f deployment.yaml ``` 9. 验证验证webhook服务是否工作: ```shell kubectl create deployment nginx --image=nginx:1.14.2 ``` 这个命令将创建一个名为`nginx`的Deployment对象,但是由于它的名称不是`nginx-deployment`,验证webhook服务将拒绝它的创建。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值