2016 China Collegiate Programming Contest Final
2016 China Collegiate Programming Contest Final
Table of Contents 2016 China Collegiate Programming Contest FinalProblem A:Problem J:Problem H:
Problem A:
题意:喝咖啡,每三杯就又可以有免费一杯,求最少花费;
分析:贪心;
#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 100000+5;
int a[maxn];
int main()
{
int t;
scanf("%d",&t);
int kase = 0;
while(t--) {
int n;
scanf("%d",&n);
int sum = 0;
for(int i=0;i<n;i++) {
scanf("%d",&a[i]);
sum +=a[i];
}
sort(a,a+n);
for(int i=n-3;i>=0;i-=3)
sum-=a[i];
printf("Case #%d: %d\n",++kase,sum);
}
return 0;
}
Problem J:
题意:题意很长,CCPC比赛规则,给出一个队伍,看他是否能进WF,CCPC分两个部分,X 是从五大赛区中选X个,Y是在EC比赛中选Y个,X+Y = G,G是确定的,然后调整X,Y使得给出的这个队伍恰好不能进WF时的最小Y,要是无论怎么调整XY,都能进WF,输出ADVANCED!
分析:g<=20 记录两种规则中的这个队伍的排名k,kk,枚举x,y即可;
#include <bits/stdc++.h>
using namespace std;
string a1[25],a2[25],a3[25],a4[25],a5[25];
string ec[25];
int main()
{
//freopen("in.txt","r",stdin);
int kase = 1;
int t;
scanf("%d",&t);
while(t--)
{
int g;
scanf("%d",&g);
string ans;
cin>>ans;
for(int i=0; i<20; i++)
cin>>a1[i];
for(int i=0; i<20; i++)
cin>>a2[i];
for(int i=0; i<20; i++)
cin>>a3[i];
for(int i=0; i<20; i++)
cin>>a4[i];
for(int i=0;i<20;i++)
cin>>a5[i];
for(int i=0; i<20; i++)
cin>>ec[i];
int k = 1;
set<string> s;
bool flag = false;
for(int i=0; i<20; i++)
{
for(int j=0; j<5; j++)
{
if(j==0)
{
if(ans==a1[i])
{
flag = true;
break;
}
else if(!s.count(a1[i]))
{
s.insert(a1[i]);
k++;
continue;
}
}
if(j==1)
{
if(ans==a2[i])
{
flag = true;
break;
}
else if(!s.count(a2[i]))
{
s.insert(a2[i]);
k++;
continue;
}
}
if(j==2)
{
if(ans==a3[i])
{
flag = true;
break;
}
else if(!s.count(a3[i]))
{
s.insert(a3[i]);
k++;
continue;
}
}
if(j==3)
{
if(ans==a4[i])
{
flag = true;
break;
}
else if(!s.count(a4[i]))
{
s.insert(a4[i]);
k++;
continue;
}
}
if(j==4)
{
if(ans==a5[i])
{
flag = true;
break;
}
else if(!s.count(a5[i]))
{
s.insert(a5[i]);
k++;
continue;
}
}
}
if(flag)
break;
}
int kk = 1;
for(int i=0;i<20;i++) {
if(ans==ec[i])
break;
else if(!s.count(ec[i])) {
kk++;
s.insert(ec[i]);
}
}
int yy = -1;
for(int i=0;i<=g;i++) {
int x = g-i;
int y = i;
if(x<k&&y<kk)
{
yy = y;
break;
}
}
if(yy==-1)
printf("Case #%d: ADVANCED!\n",kase++);
else printf("Case #%d: %d\n",kase++,yy);
}
return 0;
}
Problem H:
题意:n个工程项目,m 个工程师,工程师会一些项目,每一个工程项目需要一些工程项目,每个工程师只能去一个工程,求最多能完成多少个工程项目;
分析:n,m<=10 可以考虑集合上DP,考虑每一个工程师选或不选,但是不能直接用人数状态去循环遍历可以完成哪些项目;要优化,预处理,第i个项目,有哪些人数状态可以完成,然后dp的时候,只要考虑这两个集合是否有包含关系,改成了一重循环;
tip: 值得注意的是,最后的结果不是max(dp(i,(1<<m)-1)) ,而是人数的s状态要考虑。
#include <bits/stdc++.h>
using namespace std;
int c[20][10],d[20][10];
int p[120];
int dp[20][1<<11];
int main()
{
int t;
int n,m;
scanf("%d",&t);
int kase = 1;
while(t--)
{
scanf("%d%d",&n,&m);
vector<int> a[20];
memset(dp,0,sizeof(dp));
for(int i=1; i<=n; i++)
{
scanf("%d",&c[i][0]);
for(int j=1; j<=c[i][0]; j++)
scanf("%d",&c[i][j]);
}
for(int i=0; i<m; i++)
{
scanf("%d",&d[i][0]);
for(int j=1; j<=d[i][0]; j++)
scanf("%d",&d[i][j]);
}
for(int i=1; i<=n; i++)
{
for(int s=0; s<(1<<m); s++)
{
int cnt=0;
memset(p,0,sizeof(p));
for(int k=0; k<m; k++)
{
if(s&(1<<k))
{
cnt++;
for(int j=1; j<=d[k][0]; j++)
p[d[k][j]]=1;
}
}
int flag=1;
for(int j=1; j<=c[i][0]; j++)
if(p[c[i][j]]==0) flag=0;
if(flag) a[i].push_back(s); //第i个项目,有哪些人完成
}
}
for(int i=1; i<=n; i++)
{
for(int s=0; s<(1<<m); s++)
{
for(int j=0; j<a[i].size(); j++)
{
if((s|a[i][j])==s)
{
dp[i][s]=max(dp[i-1][s-a[i][j]]+1,dp[i][s]);
}
}
dp[i][s]=max(dp[i][s],dp[i-1][s]);
}
}
printf("Case #%d: %d\n",kase++,dp[n][(1<<m)-1]);
}
return 0;
}
2016 China Collegiate Programming Contest Final的更多相关文章
- 2018 China Collegiate Programming Contest Final (CCPC-Final 2018)-K - Mr. Panda and Kakin-中国剩余定理+同余定理
2018 China Collegiate Programming Contest Final (CCPC-Final 2018)-K - Mr. Panda and Kakin-中国剩余定理+同余定 ...
- 2018 China Collegiate Programming Contest Final (CCPC-Final 2018)
Problem A. Mischievous Problem Setter 签到. #include <bits/stdc++.h> using namespace std; #defin ...
- 2017 China Collegiate Programming Contest Final (CCPC 2017)
题解右转队伍wiki https://acm.ecnu.edu.cn/wiki/index.php?title=2017_China_Collegiate_Programming_Contest_Fi ...
- 模拟赛小结:2017 China Collegiate Programming Contest Final (CCPC-Final 2017)
比赛链接:传送门 前期大顺风,2:30金区中游.后期开题乏力,掉到银尾.4:59绝杀I,但罚时太高卡在银首. Problem A - Dogs and Cages 00:09:45 (+) Solve ...
- 模拟赛小结:2018 China Collegiate Programming Contest Final (CCPC-Final 2018)
比赛链接:传送门 跌跌撞撞6题摸银. 封榜后两题,把手上的题做完了还算舒服.就是罚时有点高. 开出了一道奇奇怪怪的题(K),然后ccpcf银应该比区域赛银要难吧,反正很开心qwq. Problem A ...
- 2018 China Collegiate Programming Contest Final (CCPC-Final 2018)(A B G I L)
A:签到题,正常模拟即可. #include<bits/stdc++.h> using namespace std; ; struct node{ int id, time; }; nod ...
- The 2015 China Collegiate Programming Contest A. Secrete Master Plan hdu5540
Secrete Master Plan Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Othe ...
- The 2015 China Collegiate Programming Contest Game Rooms
Game Rooms Time Limit: 4000/4000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submi ...
- The 2019 China Collegiate Programming Contest Harbin Site F. Fixing Banners
链接: https://codeforces.com/gym/102394/problem/F 题意: Harbin, whose name was originally a Manchu word ...
随机推荐
- Blockly
Blockly简介 A library for building visual programming editors. Blockly 是个库,可用来构建可视化编程编辑器 Blockly is b ...
- Unity运用GPU代替CPU处理和计算简单测试
http://www.manew.com/thread-110502-1-1.html 随着游戏玩法的增强,计算的多量化,我们的CPU并不足以迅速的处理这些问题,而Unity给我们开放了一个接口,我们 ...
- React.js 小书 Lesson9 - 事件监听
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson9 转载请注明出处,保留原文链接和作者信息. 在 React.js 里面监听事件是很容易的事情 ...
- HDU 1166——敌兵布阵——————【线段树单点增减、区间求和】
敌兵布阵 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- 白话SpringCloud | 第十章:路由网关(Zuul)进阶:过滤器、异常处理
前言 简单介绍了关于Zuul的一些简单使用以及一些路由规则的简单说明.而对于一个统一网关而言,需要处理各种各类的请求,对不同的url进行拦截,或者对调用服务的异常进行二次处理等等.今天,我们就来了解下 ...
- C++程序设计基础(5)sizeof的使用
1.知识点 (1)sizeof是一个单目运算发,而不是一个函数,其用于获取操作数所占内存空间的字节数. (2)sizeof的操作数可以使类型名,也可以是表达式,如果是类型名则直接获得该类型所占字节数, ...
- bzoj 5283: [CodePlus 2018 3 月赛]博弈论与概率统计
Description 大家的好朋友小 L 来到了博弈的世界.Alice 和 Bob 在玩一个双人游戏.每一轮中,Alice 有 p 的概率胜利,1 -p 的概率失败,不会出现平局.双方初始时各有 0 ...
- 【Ubuntu】Vritual Box 复制方式克隆
重装系统后之前安装的虚拟机的镜像全都不见了 ,因为重装系统盘C盘会全部重新被格式化. VtritualBox如果没有指定虚拟机存放位置,默认是会放在C盘的,C:\Users\Administrator ...
- 深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP
前言 本章我们要讲解的是S.O.L.I.D五大原则JavaScript语言实现的第2篇,开闭原则OCP(The Open/Closed Principle ). 开闭原则的描述是: Software ...
- jsp的动作标签
常用的标签: 1. forward 请求转发 [基本不使用] <==> request.getRequestDispatcher(url).forward(request,respon ...