文章目录

  • (SWERC 2017)
    • A Cakey McCakeFace
    • C Macaron
      • 题意:
      • 分析:
    • D Candy Chain
    • E Ingredients
      • 题意
      • 分析
    • F Shattered Cake
    • J Frosting on the Cake

(SWERC 2017)

A Cakey McCakeFace

O(N^2) 求出所有的差值即可,map 存下

#include<bits/stdc++.h>using namespace std;
typedef long long LL;
const int maxn = 2000+10;
LL a[maxn];
int main(void){map<LL,int> ma;int N,M;LL u;scanf("%d%d",&N,&M);for(int i =  1;i <= N; ++i){scanf("%lld",&a[i]);// ma[u]++;}for(int i =1;i <= M; ++i){scanf("%lld",&u);for(int i = 1;i <= N; ++i){if(u >= a[i]){ma[u-a[i]]++;}}// ma[u]++;}LL num = 0;LL Min = 0;for(auto c: ma){if(c.second > num){num = c.second;Min = c.first;}}cout<<Min<<endl;return 0;
}

C Macaron

题意:

用1∗2,1∗11*2,1*11∗2,1∗1 的矩阵覆盖n∗mn*mn∗m 的矩形的方法数, n&lt;=8,M&lt;=1e18n &lt;= 8,M &lt;= 1e18n<=8,M<=1e18

分析:

本题是 1033 骨牌覆盖 V2的扩展, 本题的状态比较麻烦,可以用dfs确定状态iii 之后可以转移的状态jjj,其中1代表覆盖,0代表未覆盖


// 矩阵快速幂
// 注意修改maxn 的值,要不然容易Tconst int maxn = 260;
int n;
struct Matrix{int n,m;Matrix(int nn = 1,int mm = 1):n(nn),m(mm){ memset(a,0,sizeof(a));};int  a[maxn][maxn];
};
void print(const Matrix &a)
{for(int i = 1;i <= a.n; ++i,cout<<endl)for(int j= 1;j <= a.m; ++j)cout<<a.a[i][j]<<" ";
}
Matrix operator*(Matrix a,Matrix b)
{Matrix c(a.n,b.m);for(int i = 1;i <= a.n; ++i){for(int j = 1;j <= b.m; ++j){for(int k = 1;k <= a.m; ++k){c.a[i][j] = (1ll*c.a[i][j]+1ll*a.a[i][k] * b.a[k][j])%mod;}}}
//  print(c);return c;
}
// 状态压缩LL MM[maxn][maxn];
LL N,M;
// a 代表是a的递推,now代表当前行的状态,nxt代表下一行的状态
void dfs(int  a,int  now,int  nxt){// cout<<a<<endl;int tmpnow = now,tmpnxt = nxt;int one[10],two[10];memset(one,0,sizeof(one));memset(two,0,sizeof(two));int cnt = 0;while(tmpnow > 0){one[cnt++] = tmpnow&1;tmpnow >>= 1;}bool flag = true;for(int i = 0;i < N; ++i){if(!one[i]){flag = false;break;}}if((now & NN) == NN){MM[a][nxt]++;return ;}cnt = 0;while(tmpnxt  > 0){two[cnt++] = tmpnxt&1;tmpnxt >>= 1;}for(int i = 0;i < N; ++i){if(!one[i]){dfs(a,now|(1<<i),nxt);dfs(a,now|(1<<i),nxt|(1<<i));if(i + 1 < N&& !one[i+1]){dfs(a,now|(1<<i)|(1<<(i+1)),nxt);}break;}}}
int NN;
Matrix ans(NN,NN);
Matrix B(NN,NN);
void solve(){B.n = B.m = ans.n = ans.m = NN;for(int i = 1;i <= NN; ++i){for(int j = 1;j <= NN; ++j){B.a[i][j] = MM[i-1][j-1];}}for(int i = 1;i <= NN; ++i) ans.a[i][i] = 1;while(M > 0){if(M & 1)ans = ans*B;B = B*B;M >>= 1;}cout<<ans.a[1][1]<<endl;
}
int main(void)
{scanf("%lld%lld",&N,&M);// cout<<N<<" "<<M<<endl;NN = 1<<N;// cout<<N<<" "<<NN<<endl;for(int i = 0;i < NN; ++i){dfs(i,i,0);}solve();return 0;
}

D Candy Chain

D Candy Chain

E Ingredients

题意

n种菜,每种菜由其它菜加一种食材组合而成,消耗 w,收获 v 点声望,不由其他菜组合而成的为基础菜 ,生产需要消耗 0 ,收获 0 点声望
每一种菜可能由多条方式合成,使用消耗最小的那一个
问: 消耗最小,得到声望最多是多少

分析

跑最短路,然后背包,最短路建图的时候是单向边,可以自己假设一个超级源点


#include<bits/stdc++.h>using namespace std;
#define Pb   push_back
typedef long long LL;
const LL maxn = 1e6+100;
const LL maxm = 30+3;
// char ar[maxm];
// typedef pair<LL,LL> P;
char  dish[maxn];
LL C[maxn],V[maxn];
char ar[maxm],br[maxm];
bool vis[maxn];
LL F[maxn];
typedef pair<int,int> P;
struct Edge{int u,v,d;int val;Edge(int uu,int vv,int dd,int va):u(uu),v(vv),d(dd),val(va){}
};
struct Dijstra{#define maxn 123456#define INF  123456789int N,M,S,T;typedef pair<int,int> P;vector<Edge> edges;vector<int> G[maxn];bool done[maxn];int d[maxn];// int p[maxn];void init(){for(int i = 1;i <= N; ++i) G[i].clear();edges.clear();// scanf("%d %d %d %d",&N,&M,&S,&T);//  cout<<N<<M<<S<<T<<endl;// int u,v,w;// for(int i = 1;i <= M; ++i){//     scanf("%d %d %d",&u,&v,&w);//     AddEdge(u,v,w);//     AddEdge(v,u,w);// }}void AddEdge(int u,int v,int d,int val){edges.push_back(Edge(u,v,d,val));int m = edges.size();G[u].push_back(m-1);    }void solve(){priority_queue<P,vector<P>,greater<P>> Q;for(int i = 1;i <= N; ++i) d[i] = INF;// cout<<N<<endl;d[S] = 0;memset(done,0,sizeof(done));Q.push(P(0,S));while(!Q.empty()){P x = Q.top(); Q.pop();int u = x.second;// cout<<u<<endl;if(done[u]) continue;done[u] = true;for(int i = 0;i < (int)G[u].size(); ++i){Edge &e = edges[G[u][i]];if(!done[e.v]&&d[e.v] >= d[u]+e.d){if(d[e.v] > d[u]+e.d)d[e.v] = d[u] + e.d,V[e.v] = V[u]+e.val,Q.push(P(d[e.v],e.v));else    if(V[e.v] < V[u]+e.val)V[e.v] = V[u]+e.val,Q.push(P(d[e.v],e.v));}}}// printf("%d\n",d[T]);}
};
Dijstra Dij;
bool deg[maxn];
int  main(void){LL M,N;scanf("%lld%lld",&M,&N);map<string,LL> ma;Dij.init();LL cnt = 0;LL a,b;string s1,s2;for(LL i = 1;i <= N; ++i){scanf("%s",dish);scanf("%s%s",ar,br);scanf("%lld%lld",&a,&b);s1 = dish;s2 = ar;LL u = ma[s1];LL v = ma[s2];if(u == 0) ma[s1] =++cnt,u = cnt;if(v == 0)ma[s2] =++cnt,v = cnt;// cout<<"v "<<v<<" "<<u<<endl;Dij.AddEdge(v,u,a,b);// Dij.AddEdge(u,v,a,b);deg[u]++;        }for(LL i = 1;i <= cnt; ++i){// cout<<deg[i]<<" "<<endl;if(deg[i] == 0)Dij.AddEdge(cnt+1,i,0,0);}// cout<<cnt<<endl;Dij.S = cnt+1;Dij.N = cnt+1;Dij.solve();// cout<<cnt<<endl;// 背包for(int i = 1;i <= cnt; ++i)C[i] = Dij.d[i];for(LL i = 1;i <= cnt; ++i){// if(V[i] == 0) continue;for(LL  j = M;j >= C[i]; --j){F[j] = max(F[j],F[j-C[i]]+V[i]);}}// for(int i = 1;i <= cnt; ++i)//     cout<<C[i]<<" "<<V[i]<<endl;LL idx = 0;for(LL i = 0;i <= M; ++i){if(F[M] > F[idx]){idx = i;}}cout<<F[idx]<<endl;cout<<idx<<endl;return 0;
}

F Shattered Cake

面积不变

J Frosting on the Cake

#include<bits/stdc++.h>using namespace std;const int maxn = 1e5+10;
typedef long long LL;
LL A[maxn];
LL sum[4];
LL ans[4];
int main(void){int n;scanf("%d",&n);// LL tmp = 0;for(int i = 1;i <= n; ++i){scanf("%lld",&A[i]);// tmp += A[i];sum[(i-1)%3+1] += A[i];}// cout<<sum[1]<<" "<<sum[2]<<" "<<sum[3]<<endl;LL u,v;u = v = 0;LL ans[10] = {0};for(int i = 1;i <= n; ++i){scanf( "%lld",&u);for(int j = 1;j <= 3; ++j){ans[(i+j)%3] +=  sum[j]*u;}v = u;}cout<<ans[0]<<" "<<ans[1]<<" " <<ans[2]<<endl;return 0;
}

(SWERC 2017)相关推荐

  1. 2017-2018 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2017) G: Cordon Bleu

    Cordon Bleu 时间限制: 1 Sec  内存限制: 128 MB 提交: 22  解决: 7 [提交][状态][讨论版][命题人:admin] 题目描述 A Parisian entrepr ...

  2. Full_of_Boys训练4总结

    题目来源:2017-2018 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2017) A.Cakey McCa ...

  3. 错误:非法证书不受信任_企业零信任:完善访问控制

    错误:非法证书不受信任 This blog was co-written by Max Saltonstall and Jen Person 该博客由 Max Saltonstall 和Jen Per ...

  4. element ui字段_ui备忘单下拉字段

    element ui字段 重点 (Top highlight) Dropdowns get a lot of flak from the UI world – and if we are honest ...

  5. 2017 年总结及 2018 年计划

    概述 本文写于 2018.01.01,计划从 2017 开始有目的的进行复盘行动,所以将该文搬运到此处. ----------------------------分界线---------------- ...

  6. 2017 年已读书单总结

    本文写于 2018-01-28 10:48:45,由于搬迁博客到 CSDN,故重新发布以保存历史记录. 2017 年 4 月由于换工作缘故,中间有点空闲时间,再加上新公司不是很忙,在闲暇之余看了几本书 ...

  7. 2017暑期挖坑计划(持续更新中~)

    2017的暑期,是高中生涯唯一一个能称得上暑期的东西了,也是决定我OI这个坑能挖多大的关键时期! 嗯,这个暑期不能颓,一定要好好挖坑,好好补题! 既然入了坑,就努力把坑挖穿再出来! 2017.11.6 ...

  8. 最新手机号段归属地数据库(2017年4月16日版)免费下载

    2017年4月16日版   360569条记录 最新 手机号段数据库 号码归属地数据库  移动号段 联通号段 电信号段 14号段 170号段(虚拟运营商)    权威  全面  准确  规范 字段包括 ...

  9. Auty 2017——WebMonitor接口线上检测平台

    [本文出自天外归云的博客园] Auty 2017--WebMonitor接口检测平台 前篇 接口本地检测平台 本篇 接上篇,在本地检测平台的基础上,去掉本地服务,改功能为线上使用.好处是项目可以多人访 ...

最新文章

  1. CF533A Berland Miners
  2. 在mysql查询库和表_查询mysql 库和表占的大小
  3. 【经验】如何查看gcc、g++不加-std时的默认版本
  4. 快手小葫芦网红收入大数据_KS第一个粉丝量破亿账号出现,竟是他!送辛巴上央视的网红被曝光!方丈曝出被封杀网红身份信息!球球自爆发家史,偷卖赵本山老师鞋子!...
  5. 报道 | 1899篇论文、1329个机构、6012位作者,NeurIPS 2020谁在独领风骚?
  6. 解决启动不了VMware虚拟机以及VM升级到新的版本后出现黑屏的问题
  7. php flock 都是true_php并发处理的几种方法
  8. Java之品优购课程讲义_day19(6)
  9. HDU 1978 How many ways DP问题
  10. sscanf函数和正则表达式
  11. .net 移除html标签,.net去除html标签代码
  12. Unity配置JAVA环境变量
  13. ICT项目管理与实施体系
  14. 优动漫PAINT拾色器功能介绍
  15. 双稳态电路的两个稳定状态是什么_555时基电路内部结构及其工作原理
  16. 如何快速在两台电脑之间传输大文件?
  17. 选择企业最合适的人才 —— 谈谈因人设岗与因事设岗
  18. CAD删除数据库对象
  19. PHP打印调用堆栈信息,用于程序调试
  20. Windows下用texlive+vscode报错Recipe terminated with fatal error: spawn xelatex ENOENT

热门文章

  1. 迅雷9设置php,Win10系统如何取消迅雷9右侧多余窗口【图文教程】
  2. 基于uniapp的个人课程表
  3. 心电信号系统GUI系统
  4. 基于51单片机数码管显示
  5. Python操作网页
  6. ibm常用分析工具ha.jar,jca.jar
  7. 37岁被裁员,大公司不愿要,无奈去小公司面试,HR的话扎心了
  8. Golang编码规范
  9. 新仙女木事件和农耕文明_后农业文明的排列
  10. 绕过安卓SSL验证证书的常见四种方式