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的更多相关文章

  1. 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-中国剩余定理+同余定 ...

  2. 2018 China Collegiate Programming Contest Final (CCPC-Final 2018)

    Problem A. Mischievous Problem Setter 签到. #include <bits/stdc++.h> using namespace std; #defin ...

  3. 2017 China Collegiate Programming Contest Final (CCPC 2017)

    题解右转队伍wiki https://acm.ecnu.edu.cn/wiki/index.php?title=2017_China_Collegiate_Programming_Contest_Fi ...

  4. 模拟赛小结:2017 China Collegiate Programming Contest Final (CCPC-Final 2017)

    比赛链接:传送门 前期大顺风,2:30金区中游.后期开题乏力,掉到银尾.4:59绝杀I,但罚时太高卡在银首. Problem A - Dogs and Cages 00:09:45 (+) Solve ...

  5. 模拟赛小结:2018 China Collegiate Programming Contest Final (CCPC-Final 2018)

    比赛链接:传送门 跌跌撞撞6题摸银. 封榜后两题,把手上的题做完了还算舒服.就是罚时有点高. 开出了一道奇奇怪怪的题(K),然后ccpcf银应该比区域赛银要难吧,反正很开心qwq. Problem A ...

  6. 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 ...

  7. 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 ...

  8. The 2015 China Collegiate Programming Contest Game Rooms

    Game Rooms Time Limit: 4000/4000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  9. 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 ...

随机推荐

  1. selenium 安装与环境配置

    selenium的安装 环境配置:python2.7+selenium2+Firefox46以下版本 本次安装环境:python2.7.13+selenium2.53.6+Firefox46 官网下载 ...

  2. 你的UI设计够不够趣味性

    这周要做一个设计,在研究怎么修改的时候,想到了要加入一些符合产品调性的趣味设计,但是要怎么加入才能增加用户对产品的印象,进而增加好感与认可呢,我们今天就来研究一下很多有意思的APP里的一些趣味设计. ...

  3. 引导篇之HTTP事务

    一个完整的HTTP事务流图: HTTP报文格式: 起始行:在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况 首部:起始行后面有0个或多个首部字段.每个首部字段都包含一个名字和一个值,为了 ...

  4. Linux分区扩容

    lz在MAC上面使用Linux虚拟机,开始只建了一个分区,挂载在”/”目录下.现在硬盘空间不够了,所以lz就来给这个分区扩容. 首先,当然是要给虚拟机分配更多的硬盘空间喽(lz用的是VMware Fu ...

  5. lua 遍历table

    lua中有四种主要的遍历一个table的方法. 第一种方法: for key, value in pairs(testtb) do xxxx end 这种方法是按照key哈希后的顺序遍历的.比如下面代 ...

  6. spring+springmvc+mybatis 开发JAVA单体应用

    myshop 概述 myshop项目是根据视频教程 Java 单体应用 做的一个练习项目,目前完成了登录功能.用户管理.类别管理后续有时间会继续做其它的功能.趁着双11花了99元一年买了台阿里云服务器 ...

  7. HTML5 总结 (1)

    HTML5新表单 1.Input 新类型:email  url  tel number range date color date week month....... <html> < ...

  8. openlayers 聚合效果

    //cyd var cydclusterSource = new ol.source.Cluster({ distance: 40, source: new ol.source.Vector({ fe ...

  9. VUE-地区选择器(V-Distpicker)

    V - Distpicker 地区选择器环境问题不多说,自己看文档,主要讲一下在实际使用过程中如何将下拉框的值赋值到对象属性上.文档: https://distpicker.pigjian.com/g ...

  10. IoT Architecture