foreword

ummm... 开始前几个小时被朋友拉来打了这一场,总体海星,题目体验极佳,很符合口味,稍微有点点简单了不知道是不是因为是 New Year Round,很快就打到了 D,但是题目阅读难度有点点大,Alice 和 Bob 永远离不开的博弈论,呼应去年的博弈论。

少有的评测机出锅(也有可能是我打的少),一片 In queue 了大概 40 分钟,加时了以为会继续 Rated,结果又加时又 Unrated 可还行。太久不打有点不熟悉规则,手有点滑,A 题打成了 ... map[i+xd[k]][j+xd[k]] ...,调了十分钟。。还好 pretest 比较给力没有让我 fst。。另外就是 CF 上面的 printf 64 位整数输出用法的提示,%I64d 和 %l64d 傻傻分不清楚,结果 wa on test 1,又因为评测机锅了,过了一个多小时才看到。

总体来说,题目体验很好,这次的平台体验稍差。题目很经典,能学到很多。

A

没啥好说的,\(n^2\) 判一下相邻几个点的值就行了。。

#include<cstdio>
const int MAXN=500+5;
int xd[5]={0,-1,-1,1,1},yd[5]={0,-1,1,-1,1};
int n,cnt;char c[MAXN][MAXN];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%s",c[i]+1);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
for(int k=0;k<5;k++)
if(c[i+xd[k]][j+yd[k]]!='X') goto exit;
cnt++;
exit:;
}
printf("%d\n",cnt);
return 0;
}

B

一个硬模拟,均摊 \(O(n)\)。

#include<cstdio>
#include<algorithm>
const int MAXN=100000+5;
typedef long long ll;
struct data{ll price,id;};
int n,m,ptr;data d[MAXN];long long cost,cnt[MAXN],price[MAXN],x,y,tot;
bool comp(data a,data b){return a.price==b.price?a.id<b.id:a.price<b.price;}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%I64d",&cnt[i]);
}
for(int i=1;i<=n;i++)
scanf("%I64d",&price[i]);
for(int i=1;i<=n;i++)
{
d[i].id=i;
d[i].price=price[i];
tot+=cnt[i];
}
std::sort(d+1,d+n+1,comp);
ptr=1;long long q;
for(int i=1;i<=m;i++)
{
scanf("%I64d %I64d",&x,&y);
cost=0;
if(cnt[x])
{
q=std::min(y,cnt[x]);
y-=q;
cnt[x]-=q;
cost=q*price[x];
}
while(y&&ptr<=n)
{
q=std::min(y,cnt[d[ptr].id]);
y-=q;
cnt[d[ptr].id]-=q;
cost+=q*price[d[ptr].id];
if(!cnt[d[ptr].id])ptr++;
}
if(!y) printf("%I64d\n",cost); else printf("0\n");
}
return 0;
}

C

可以说是数学题了,最大配最小总答案最小。

#include<cstdio>
#include<algorithm>
const int MAXN=300000+5;
int n;long long ans,num[MAXN];//org:dp[MAXN][MAXN] len is i, start from j
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%I64d",&num[i]);
std::sort(num+1,num+n+1);
for(int i=1,j=n;i<=n/2;i++,j--)
ans+=(num[i]+num[j])*(num[i]+num[j]);
printf("%I64d\n",ans);
return 0;
}

D

因为可以走回去,每次从所有已访问的点中选一个未访问的且能拓展出去的点,且点序号最小的,可以保证字典序最小。

# include<cstdio>
# include<cstring>
# include<algorithm>
# include<queue>
using namespace std;
const int N = 1e5 + 5;
priority_queue <int> q;
int st[N],to[N << 1],nx[N << 1],vis[N];
int n,m,tot;
inline void add(int u,int v)
{
to[++tot] = v,nx[tot] = st[u],st[u] = tot;
to[++tot] = u,nx[tot] = st[v],st[v] = tot;
}
int main()
{
scanf("%d%d",&n,&m);
for (int i = 1 ; i <= m ; ++i)
{
int u,v; scanf("%d%d",&u,&v);
add(u,v);
} q.push(-1),vis[1] = 1;
while (!q.empty())
{
int x = -q.top(); q.pop(); printf("%d ",x);
for (int i = st[x] ; i ; i = nx[i])
if (!vis[to[i]]) vis[to[i]] = 1,q.push(-to[i]);
}
return 0;
}

Codeforces #536 A..D 题解的更多相关文章

  1. codeforces#536题解

    CodeForces#536 A. Lunar New Year and Cross Counting Description: Lunar New Year is approaching, and ...

  2. Codeforces Round #543 Div1题解(并不全)

    Codeforces Round #543 Div1题解 Codeforces A. Diana and Liana 给定一个长度为\(m\)的序列,你可以从中删去不超过\(m-n*k\)个元素,剩下 ...

  3. Codeforces Round #545 Div1 题解

    Codeforces Round #545 Div1 题解 来写题解啦QwQ 本来想上红的,结果没做出D.... A. Skyscrapers CF1137A 题意 给定一个\(n*m\)的网格,每个 ...

  4. Codeforces Round #539 Div1 题解

    Codeforces Round #539 Div1 题解 听说这场很适合上分QwQ 然而太晚了QaQ A. Sasha and a Bit of Relax 翻译 有一个长度为\(n\)的数组,问有 ...

  5. [Codeforces Round #461 (Div2)] 题解

    [比赛链接] http://codeforces.com/contest/922 [题解] Problem A. Cloning Toys          [算法] 当y = 0 ,   不可以 当 ...

  6. Codeforces 7E - Defining Macros 题解

    目录 Codeforces 7E - Defining Macros 题解 前言 做法 程序 结尾 Codeforces 7E - Defining Macros 题解 前言 开始使用博客园了,很想写 ...

  7. Educational Codeforces Round 64 部分题解

    Educational Codeforces Round 64 部分题解 不更了不更了 CF1156D 0-1-Tree 有一棵树,边权都是0或1.定义点对\(x,y(x\neq y)\)合法当且仅当 ...

  8. Educational Codeforces Round 64部分题解

    Educational Codeforces Round 64部分题解 A 题目大意:给定三角形(高等于低的等腰),正方形,圆,在满足其高,边长,半径最大(保证在上一个图形的内部)的前提下. 判断交点 ...

  9. Codeforces Beta Round #62 题解【ABCD】

    Codeforces Beta Round #62 A Irrational problem 题意 f(x) = x mod p1 mod p2 mod p3 mod p4 问你[a,b]中有多少个数 ...

随机推荐

  1. debezium、kafka connector 解析 mysql binlog 到 kafak

    目的: 需要搭建一个可以自动监听MySQL数据库的变化,将变化的数据捕获处理,此处只讲解如何自动捕获mysql 中数据的变化 使用的技术 debezium :https://debezium.io/d ...

  2. Python数据分析之Pandas操作大全

    从头到尾都是手码的,文中的所有示例也都是在Pycharm中运行过的,自己整理笔记的最大好处在于可以按照自己的思路来构建矿建,等到将来在需要的时候能够以最快的速度看懂并应用=_= 注:为方便表述,本章设 ...

  3. Update(Stage4):sparksql:第1节 SparkSQL_使用场景_优化器_Dataset & 第2节 SparkSQL读写_hive_mysql_案例

    目标 SparkSQL 是什么 SparkSQL 如何使用 Table of Contents 1. SparkSQL 是什么 1.1. SparkSQL 的出现契机 1.2. SparkSQL 的适 ...

  4. Nginx正则及 Location匹配!

    1:Nginx location 规则匹配 ^~          标识符匹配后面跟一个字符串.匹配字符串后将停止对后续的正则表达式进行匹配. 如:location ^~ /images/,  在匹配 ...

  5. i.MX RT600之DSP调试环境搭建篇

    恩智浦的i.MX RT600是跨界处理器产品,同样也是i.MX RTxxx系列的开山之作.不同于i.MX RT1xxx系列单片机,i.MX RT600 采用了双核架构,将新一代Cortex-M33内核 ...

  6. Dire Wolf HDU - 5115

    题目链接 一开始很自然的想到了贪心,跑了一下贪心,发现无法处理某一段已经被选走的情况,根据数据范围,区间dp比较适合,能储存区间取样信息 设dp[i][j]为已经杀死区间[i,j]的最小值,可以得到转 ...

  7. 数字反转(0)<P2011_1>

    数字反转  (reverse.cpp/c/pas) [问题描述] 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形 式,即除非给定的原数为零,否则反转后得到的新数的最高位数 ...

  8. ubuntu开启mysql远程连接,并开启3306端口

    mysql -u root -p 修改mysql库的user表,将host项,从localhost改为%.%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip mysql& ...

  9. linux下后台执行shell脚本nohup

    (一)使用nohup后台执行脚本 脚本执行结果记录到nohup.out文件中 (二)使用&后台执行脚本 使用&符号在后台执行命令或脚本后,如果你退出登录,这个命令就会被自动终止掉

  10. day1-3js代码执行特性

    Js代码执行特性 js中变量声明都会提升到脚本的第一行(注意不是定义,只是声明) 函数变量声明也会提升到前面(是整个函数!)(变量最前,函数其后) 注:在执行js代码前,先把所有变量声明,函数提升至前 ...