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 ...
随机推荐
- oracle sql命令
set time on; 设置时间 alter table flashback_test enable row movement; 开启行移 select * from flashback_test ...
- 在Unity中创建攻击Slot系统
http://www.manew.com/thread-109310-1-1.html 马上注册,结交更多好友,享用更多功能,让你轻松玩转社区. 您需要 登录 才可以下载或查看,没有帐号?注册帐号 ...
- 【Java】使用Eclipse进行远程调试,Linux下开启远程调试
原博地址:http://blog.csdn.net/dfdsggdgg/article/details/50730311 1.center下,在startup.sh文件首行中添加如下语句 declar ...
- pycharm Python解释器的配置--可以指定批处理文件为解释器
这样就可以很方便的配置一些环境变量了,很方便很有创意的功能,再次Mark一下以防忘记
- 错误:38-Corel VideoStudio文件已损坏或被修改。请重新安装原始来源解决方法。
打开 Corel VideoStudio Pro X5(绘声绘影)弹出一下警告. 错误:38-Corel VideoStudio文件已损坏或被修改.请重新安装原始来源解决方法. [第一方法]:控制面板 ...
- 关于EF执行返回表的存储过程
1.关于EF执行返回表的存储过程 不知道为什么EF生成的存储过程方法会报错,以下方法可以使用,call是MySQL执行存储过程的命令 [HttpGet] public HttpResponseMess ...
- Spring-boot2.0.1.BUILD-SNAPSHOT整合Elasticsearch报failed to load elasticsearch nodes错误解决办法
spring-boot整合es的application.properties的默认配置为: spring.data.elasticsearch.cluster-nodes=localhost:9200 ...
- caffe-windows之网络描述文件和参数配置文件注释(mnist例程)
caffe-windows之网络描述文件和参数配置文件注释(mnist例程) lenet_solver.prototxt:在训练和测试时涉及到一些参数配置,训练超参数文件 <-----lenet ...
- 常见HTTP状态200,304,403,404,503
下面提供 HTTP 状态码的完整列表.您也可以查看 W3C官方HTTP 状态码说明(英文). 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态码. 100(继续) 请求者应当继续提出请求 ...
- 互联网部-供应商团队js规范
文件命名 页面.js文件命名:采用中划线连接方式,比如说: error-report.html js文件夹命名:scripts 公共js命名:common.js 文件结构组织 每个页面中中独有的js文 ...