题目链接

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;
}
D. Three Pieces
题意
给定棋盘和三颗棋子,问遍历棋盘的最少步数即满足最少步数前提下替换棋子的最少次数
思路
从起点开始大力搜索,枚举所有可能的后继状态
代码
#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)的更多相关文章

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

  2. Educational Codeforces Round 52 (Rated for Div. 2) -C

    #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...

  3. Educational Codeforces Round 52 (Rated for Div. 2) F. Up and Down the Tree 树型DP

    题面 题意:给你一棵树,你起点在1,1也是根节点,你每次可以选择去你子树的某个叶子节点,也可以选择,从叶子节点返回距离不超过k的一个根, 也就是说,你从1开始,向下跳,选择一个叶子(就是没有子树的节点 ...

  4. Educational Codeforces Round 117 (Rated for Div. 2)

    Educational Codeforces Round 117 (Rated for Div. 2) A. Distance https://codeforces.com/contest/1612/ ...

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

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

  7. Educational Codeforces Round 43 (Rated for Div. 2)

    Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...

  8. Educational Codeforces Round 35 (Rated for Div. 2)

    Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...

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

随机推荐

  1. sqlServer:行列转换之多行转一行

    1.建表:学生表(姓名,学科,成绩) CREATE TABLE teststudent(    stuname varchar(50) NULL,    subjects varchar(50) NU ...

  2. 浮点数乘积的取整intval,以及高精度函数bcmath的使用

    线上发现个bug,浮点数乘积以后取整,得到的数不符预期.还记得上次踩过的坑是数据库类型转换的一个问题.这个也相当于类型转换了..尴尬 浮点数计算的精度一定要谨慎. 例子如下: <?php $a ...

  3. cmd执行超大sql文件

    osql -S 127.0.0.1 -U sa -P 123456 -i d:\test.sql osql为SQL Server的命令,要在cmd中执行该命令,一般安装完SQL Server后该命令对 ...

  4. Linux配置外网访问mysql

    stream{    upstream abc{        server 192.168.8.249:3306;    }    server{        listen 9211 ; prox ...

  5. DP求树的重心

    #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> ...

  6. 三种dedecms友情链接调用标签

    三种dedecms友情链接调用标签: 1.获取友情链接分类 {dede:flinktype}<span>[field:typename/]</span>{/dede:flink ...

  7. linux下安装PHP扩展memcache

    公司的服务器 CentOS 7.5,PHP 5.6 下面都是最新的版本(支持到PHP5.6) 如需php7  下支持memcache扩展,请移步   https://www.cnblogs.com/h ...

  8. U盘安装CentOS系统、raid5制作以及nohup的使用

    最近折腾服务器,用U盘安装了系统,总结了一些避坑措施: 下载UltraISO工具,用来刻盘 从centos官网下载ISO镜像,然后刻盘 关键是在你进入系统安装界面后,如下: 选中第一项,按tab键(看 ...

  9. 我遇到的response.sendRedirect跳转不了问题

    response.sendRedirect不跳转的原因可以归纳为(其中第三点是我遇到的问题): 前人经验: 在使用response.sendRedirect时,前面不能有HTML输出: 在respon ...

  10. Python——socketserver编程(客户端/服务器)

    一.socketserver是标准库中的高级模块,它的目标是简化很多多样板代码,是创建网络客户端和服务器所必须的代码.(事件驱动) 二.模块类 BaseServer :包含核心服务器功能和mix-in ...