Educational Codeforces Round 52 (Rated for Div. 2)
A. Vasya and Chocolate
题意
已知钱,价格,赠送规则求最多获得巧克力数
思路
常规算即可
代码
#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;
using namespace std;
typedef long long LL; LL t,s,a,b,c; int main(){
cin >> t;
while(t--){
cin >> s >> a >> b >> c;
LL ans=s/c;
ans+=(ans/a)*b;
cout << ans << endl;
}
return 0;
}
B. Vasya and Isolated Vertices
题意
给出无向图点和边数问最多和最少孤立点的数量
思路
使孤立点尽可能少就让一条边尽可能消去两个点,否则让其尽可能消去一个点
代码
#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;
using namespace std;
typedef long long LL; LL n,m,i; int main(){
scanf("%I64d%I64d",&n,&m);
while(i*(i-1)/2 < m)i++;
printf("%I64d %I64d\n",(m*2 < n) ? n-m*2 : 0,n-i);
return 0;
}
C. Make It Equal
题意
给出一些块柱,每次移动一层及以上所有块,在一次不移动超过k的前提下使所有柱高度一致的最少次数
思路
枚举当前移动的高度,使被移动的块尽可能接近k,需要预处理每层会影响的块数,枚举高度二分找位置,维护后缀即可完成预处理
代码
#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;
const int inf = 0x3f3f3f3f;
const int maxn = 2e5+5;
using namespace std; int n,k,a[maxn],maxH=-inf;
int b[maxn];
vector<int>vec; int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
sort(a+1,a+1+n);
for(int i=2;i<=n;i++){
int det=a[i]-a[1];
maxH=max(maxH,det);
if(det)vec.push_back(det);
}
int siz=vec.size();
for(int i=maxH;i>=1;i--){
b[i]=lower_bound(vec.begin(),vec.end(),i)-vec.begin()+1;
b[i]=siz-b[i]+1;
b[i]+=b[i+1];
}
int now=0,cnt=0;
for(int i=maxH;i>=1;i--){
if(b[i]-now > k)now=b[i+1],cnt++;
}
if(now != b[1] && b[1]-now <= k)cnt++;
printf("%d\n",cnt);
return 0;
}
#include <bits/stdc++.h>
#define DBG(x) cerr << #x << " = " << x << endl;
const int maxn = 15;
const int maxm = 205;
const int inf = 0x3f3f3f3f;
using namespace std; int n,k;
int mp[maxn][maxn],vis[maxn][maxn],dp[maxn][maxn][3][maxm][maxm];
int sx,sy,ex,ey;
int dx1[8][2]={{-2,-1},{-2,1},{2,-1},{2,1},{-1,-2},{-1,2},{1,-2},{1,2}};
int dx2[4][2]={{-1,0},{1,0},{0,1},{0,-1}};
int dx3[4][2]={{-1,-1},{-1,1},{1,-1},{1,1}};
int ans=inf; struct node{
int r,c,who,time,pre;
node(int _r,int _c,int _who,int _time,int _pre){
r=_r,c=_c,who=_who,time=_time,pre=_pre;
}
}; void bfs(int sx, int sy) {
memset(dp, -1, sizeof dp);
dp[sx][sy][0][0][1] = dp[sx][sy][1][0][1] = dp[sx][sy][2][0][1] = 0;
queue<node>q;
q.push(node(sx, sy, 0, 0, 1));
q.push(node(sx, sy, 1, 0, 1));
q.push(node(sx, sy, 2, 0, 1));
while(!q.empty()) {
node nd = q.front();
q.pop();
int x = nd.r, y = nd.c, z = nd.who, t = nd.time, k = nd.pre;
for(int i = 0; i < 3; i++) {
if(i == z) continue;
if(dp[x][y][i][t + 1][k] != -1) continue;
dp[x][y][i][t + 1][k] = dp[x][y][z][t][k] + 1;
q.push(node(x, y, i, t + 1, k));
}
if(z == 0) {
for(int i = 0; i < 8; i++) {
int nx=x+dx1[i][0];
int ny=y+dx1[i][1];
int nk=k;
if(nx < 1 || nx > n || ny < 1 || ny > n) continue;
if(mp[nx][ny] == k + 1) nk++;
if(dp[nx][ny][z][t][nk] != -1) continue;
dp[nx][ny][z][t][nk] = dp[x][y][z][t][k] + 1;
q.push(node(nx, ny, z, t, nk));
}
}
if(z == 1) {
for(int i = 0; i < 4; i++) {
for(int j = 1;j <= 10;j++) {
int nx=x+j*dx2[i][0];
int ny=y+j*dx2[i][1];
int nk=k;
if(nx < 1 || nx > n || ny < 1 || ny > n) continue;
if(mp[nx][ny] == k + 1) nk++;
if(dp[nx][ny][z][t][nk] != -1) continue;
dp[nx][ny][z][t][nk] = dp[x][y][z][t][k] + 1;
q.push(node(nx, ny, z, t, nk));
}
}
}
if(z == 2) {
for(int i = 0; i < 4; i++) {
for(int j = 1;j <= 10;j++) {
int nx=x+j*dx3[i][0];
int ny=y+j*dx3[i][1];
int nk=k;
if(nx < 1 || nx > n || ny < 1 || ny > n) continue;
if(mp[nx][ny] == k + 1) nk++;
if(dp[nx][ny][z][t][nk] != -1) continue;
dp[nx][ny][z][t][nk] = dp[x][y][z][t][k] + 1;
q.push(node(nx, ny, z, t, nk));
}
}
}
}
}
int main(){///0 == knight,1 == bishop,2 == rook
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
scanf("%d",&mp[i][j]);
if(mp[i][j] == 1){sx=i;sy=j;}
if(mp[i][j] == n*n){ex=i;ey=j;}
}
}
bfs(sx,sy);
for(int i=0;i<maxm;i++){
for(int j=0;j<3;j++){
if(dp[ex][ey][j][i][n*n] != -1)ans=min(ans,dp[ex][ey][j][i][n*n]);
}
}
for(int i=0;i<maxm;i++){
for(int j=0;j<3;j++){
if(dp[ex][ey][j][i][n*n] == ans){printf("%d %d\n",ans,i);return 0;}
}
}
}
E. Side Transmutations
F. Up and Down the Tree
Educational Codeforces Round 52 (Rated for Div. 2)的更多相关文章
- Educational Codeforces Round 52 (Rated for Div. 2) E. Side Transmutations
http://codeforces.com/contest/1065/problem/E 数学推导题 #include <bits/stdc++.h> using namespace st ...
- Educational Codeforces Round 52 (Rated for Div. 2) -C
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...
- Educational Codeforces Round 52 (Rated for Div. 2) F. Up and Down the Tree 树型DP
题面 题意:给你一棵树,你起点在1,1也是根节点,你每次可以选择去你子树的某个叶子节点,也可以选择,从叶子节点返回距离不超过k的一个根, 也就是说,你从1开始,向下跳,选择一个叶子(就是没有子树的节点 ...
- Educational Codeforces Round 117 (Rated for Div. 2)
Educational Codeforces Round 117 (Rated for Div. 2) A. Distance https://codeforces.com/contest/1612/ ...
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
- Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)
Problem Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...
- Educational Codeforces Round 43 (Rated for Div. 2)
Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...
- Educational Codeforces Round 35 (Rated for Div. 2)
Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...
随机推荐
- JAVA—枚举(Enum)学习总结
1.枚举(Enumeration) 枚举(The Enumeration)接口定义了一种从数据结构中取回连续元素的方式.这种传统接口已被迭代器取代,虽然Enumeration 还未被遗弃,但在现代代码 ...
- R语言学习——数据框
> #数据框可以包含不同模式(数值型.字符型.逻辑型等)的数据,是R中最常处理的数据结构.数据框可以通过函数data.frame()创建:mydata<-data.frame(coll,c ...
- 模拟vue的tag属性,在react里实现自定义Link
我封装了一个简单的实现react里自定义Link的方法,方便大家使用. 因为普通组件没有metch.location.history等属性.只有在<Router>里面的<compon ...
- poj 3090 Visible Lattice Points(离线打表)
这是好久之前做过的题,算是在考察欧拉函数的定义吧. 先把欧拉函数讲好:其实欧拉函数还是有很多解读的.emmm,最基础同时最重要的算是,¢(n)表示范围(1, n-1)中与n互质的数的个数 好了,我把规 ...
- try/catch中finally的执行时间
前言 由于总是搞不清楚try/catch中的一个执行顺序,返回结果.所以总结一下 1.finally没有return 时,可以看出finally确实在return之前执行了 public static ...
- C# 使用微软自带的Speech进行语音输出
1.在VS中使用微软自带的Speech进行语音播报,首先需要添加引用: 2.具体实现逻辑代码如下:
- KEIL_MDK生成Bin文件
1.MDK配置 MDK是使用安装目录下的(formelf.exe)工具来生成bin文件,配置方法:勾选 "Run # 1",在后面输入框写入bin文件生成方式 2.绝对路径 &qu ...
- Facebook第三方网页登录(JavaScript SDK)
文档网址:https://developers.facebook.com/docs/facebook-login/web#logindialog 一.应用配置 https://www.faceboo ...
- 三十、小程序解析HTML(对富文本返回数据的处理)
1.首先需要下载插件wxParse 下载地址 https://github.com/ZCLegendary/WXNews 百度云盘有保存 WXML <import src="../.. ...
- linux安装tomcat部署web项目
我用的是如下图的两个软件,连接linux服务器. 其中WinSCp是传输文件用的,SecureCRT是用来输入命令的. 1.复制tomcat到指定目录(可复制到你想要的目录下),命令如下: cp /路 ...