layout: post
title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题)
author: "luowentaoaa"
catalog: true
tags:
mathjax: true
- codeforces
- DP
- 状态压缩
- LCA


传送门

付队!

C - Greetings! (状态压缩)

题意

给N种信件,你可以任意选择K种信封装信件,问你最少的浪费是多少

不能大的信件装进小信封中

思路

首先如果可以选择的信封数量比N大 那么每一种信件用一个特定的信封肯定不会有浪费

因为数据很小我们考虑状态压缩考虑哪些信件用同一种信封

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll mod=1e9+7;
const int maxn=(1<<16)+50;
const int inf=1e8;
ll c[maxn];
struct node{ll w,h,t;
}my[20];
ll dp[20][maxn];int main()
{int n,k;cin>>n>>k;memset(dp,127,sizeof(dp));for(int i=0;i<n;i++)cin>>my[i].w>>my[i].h>>my[i].t;for(int i=0;i<(1<<n);i++){ll ww=0,hh=0,sum=0,cnt=0;for(int j=0;j<n;j++){if(i&(1<<j)){sum+=my[j].w*my[j].h*my[j].t;ww=max(ww,my[j].w);hh=max(hh,my[j].h);cnt+=my[j].t;}}dp[1][i]=c[i]=(ww*hh*cnt-sum);}for(int i=2;i<=k;i++){dp[i][0]=0;for(int sta=0;sta<(1<<n);sta++){for(int t=sta;t;t=(t-1)&sta){dp[i][sta]=min(dp[i][sta],dp[i-1][t]+c[sta^t]);}}}cout<<dp[k][(1<<n)-1];return 0;
}

F - Mountain Scenes (DP)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll mod=1e9+7;
const int maxn=5e5+50;
const int inf=1e8;
ll dp[150][25000];int main()
{int n,w,h;cin>>n>>w>>h;dp[0][0]=1;for(int i=1;i<=w;i++){for(int j=0;j<=n;j++){for(int k=0;k<=h;k++){dp[i][j+k]+=dp[i-1][j];dp[i][j+k]%=mod;}}}ll ans=0;for(int i=0;i<=n;i++){ans+=dp[w][i];ans%=mod;}if(w*h<=n)ans=(ans-h+mod-1)%mod;else ans=(ans-n/w+mod-1)%mod;cout<<ans<<endl;return 0;
}

I - Tourists (LCA)

思路

很像wls面试我时出的题目

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const ll mod=1e9+7;
const int maxn=2e5+50;
const int inf=1e8;int Next[maxn<<1],To[maxn<<1],Laxt[maxn<<1];
int cnt;
void add(int u,int v){Next[++cnt]=Laxt[u];Laxt[u]=cnt;To[cnt]=v;
}int n;
int fa[maxn][50],dep[maxn];
void dfs(int u,int faa){fa[u][0]=faa;dep[u]=dep[faa]+1;for(int i=Laxt[u];i;i=Next[i]){if(To[i]==faa)continue;dfs(To[i],u);}
}
void init(){for(int i=1;i<=20;i++){for(int j=1;j<=n;j++){int f=fa[j][i-1];fa[j][i]=fa[f][i-1];}}
}
int lca(int p,int q){if(dep[p]<dep[q])swap(p,q);for(int i=20;i>=0;i--){if(dep[fa[p][i]]>=dep[q])p=fa[p][i];}if(p==q)return q;for(int i=20;i>=0;i--){if(fa[p][i]!=fa[q][i]){p=fa[p][i];q=fa[q][i];}}return fa[p][0];
}
int main()
{scanf("%d",&n);for(int i=1;i<n;i++){int u,v;scanf("%d%d",&u,&v);add(u,v);add(v,u);}dfs(1,0);ll ans=0;init();for(int i=1;i<=n;i++){for(int j=2*i;j<=n;j+=i){int f=lca(i,j);ans+=dep[i]+dep[j]-2*dep[f]+1;}}printf("%lld\n",ans);return 0;
}

转载于:https://www.cnblogs.com/luowentao/p/10549867.html

(寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest(爽题)相关推荐

  1. 2018 ACM ICPC Arabella Collegiate Programming Contest A

    Multiplication operation is not always easy! For example, it is hard to calculate 27 × 20 using your ...

  2. A - Multiplication Dilemma (思维)( 2018 ACM ICPC Arabella Collegiate Programming Contest)

    滴答滴答---题目链接 Multiplication operation is not always easy! For example, it is hard to calculate 27 × 2 ...

  3. (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest

    layout: post title: (寒假开黑gym)2018 ACM-ICPC, Syrian Collegiate Programming Contest author: "luow ...

  4. (寒假开黑gym)2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017)

    layout: post title: (寒假开黑gym)2017-2018 ACM-ICPC German Collegiate Programming Contest (GCPC 2017) au ...

  5. GYM 2015 ACM Syrian Collegiate Programming Contest

    题目链接:http://codeforces.com/gym/101086 A My Friend of Misery B Brother Louie C Everything D Secure bu ...

  6. 2018 ACM-ICPC, Syrian Collegiate Programming Contest

    这是2018年叙利亚大学程序设计赛,星期一没什么比赛就拿这套题目练了一下手,在这里写几道我做出来的里面还算有点难度的题目(实力有限好多题看都没看) 比赛链接 http://codeforces.com ...

  7. 2018 ACM-ICPC Syrian Collegiate Programming Contest(部分题解,待补)

    传送门 2018 ACM-ICPC 叙利亚大学生程序设计竞赛 Problem A: Hello SCPC 2018! 签到题 Problem B: Binary Hamming 简单题 #includ ...

  8. 2018 ACM-ICPC, Syrian Collegiate Programming Contest I. Rise of the Robots 最小圆覆盖 模板

    题目链接:http://codeforces.com/gym/102006/problem/I 题意: 一个机器人要移动n次,每次移动的路径已知,告诉你桌子的大小和机器人的大小,问你不让机器人移动出桌 ...

  9. 2015 ACM Syrian Collegiate Programming Contest

    A. My Friend of Misery 计算出答案的上下界即可. 时间复杂度$O(n)$. #include<bits/stdc++.h> using namespace std; ...

最新文章

  1. 表格存储TableStore全新升级,打造统一的在线数据存储平台!
  2. JS实现的一个验证码,可以在前端验证后在提交action
  3. 中国移动回应“5G消息APP”下架:并非面向客户商用发布的产品
  4. 2017百度之星资格赛:1002. 度度熊的王国战略
  5. Android手机打开开发者模式调试App
  6. POJ 2242 The Circumference of the Circle G++ 海伦公式 三角形外接圆半径公式 背
  7. 美通企业日报 | 北京上海上榜全球最佳留学城市40强;华大电子安全芯片突破150亿颗...
  8. gif 格式图片详解
  9. NiFi Processors概述
  10. 2021年4月2日 星期五 农历二月 阴
  11. 9.目标检测基础、图像风格迁移
  12. torch.spmm矩阵乘法
  13. 人工智能小白日记 语音情感分析探索之2 CNN相关及实验
  14. Js获取图片主色调,近似色,互补色,以及根据图片颜色获取主题配色方案详解、插件。
  15. android中gravity什么意思,【Android】“android:gravity”和“android:layout_gravity”属性解释...
  16. 7.30 正睿暑期集训营 A班训练赛
  17. 微信扫码登录超详细教程
  18. 这本书能让你减肥/戒烟/工作脱困/摆脱债务/重掌生活
  19. 牛宝宝取名起名字:寓意前程似锦、仪表不凡的男孩名字
  20. 快速开发php接口服务推荐框架

热门文章

  1. excel表格xlsx密码强制解除手机,忘记excel表格xlsx密码如何找回?
  2. hadoop集群-单词统计
  3. AE - Saber插件(简单使用方法)
  4. Project Server 2016 部署
  5. android 滑动标签框架,Android实现网易严选标签栏滑动效果
  6. AD硬件电路模块设计——PS7219及单片机的SPI接口电路
  7. swift php 类型判断,Swift 5.1 新特性:透明类型关键字 some
  8. Easycwmp_源码分析
  9. Matlab与Access数据库编程指南
  10. PicPick Pro v7.0.0 屏幕截图编辑工具解锁全功能单文件版