CF 1130A 1130B 1130C1129A1 1129A2 1129B(Round542A B C D1 D2 E)题解
A : Be Positive 题目地址:https://codeforces.com/problemset/problem/1130/A
题解:让你求是否满足一个d使得数列长为n的a数组的每个数除以d以后,所得数列正数的数量大于ceil(n);(除以后四舍五入,0不是正数)
注意d为负数的情况
参考代码:
#include<iostream>
using namespace std;
int main()
{
int x=,y=;
int t,a[];
cin>>t;
for(int i=;i<t;i++)
{
scanf("%d",&a[i]);
if(a[i]>) x++;
if(a[i]<) y++;
} if(*x>=t) cout<<<<endl;
else if(y*>=t) cout<<-<<endl;
else cout<<<<endl;
return ;
}
B : Two Cakes 题目地址: https://codeforces.com/problemset/problem/1130/B
题解:两个人依次走1,2,3...n这n个数的位置,求两个人所走步数和的最小值;
DP:dp[x]:表示走完第x个数的最小步数;
则 dp[i]=dp[i-1]+min(abs(vec[i][0]-vec[i-1][0])+abs(vec[i][1]-vec[i-1][1]),abs(vec[i][0]-vec[i-1][1])+abs(vec[i][1]-vec[i-1][0]));
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define clr(a,b) memset(a,b,sizeof(a))
#define PI acos(-1.0)
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
typedef long long ll;
const int INF=0x3f3f3f3f;
const int maxn=1e5+;
int n,x;
ll dp[maxn];
vector<int> vec[maxn];
int main()
{
scanf("%d",&n);clr(dp,);
for(int i=;i<=*n;++i)
{
scanf("%d",&x);
vec[x].push_back(i);
}
vec[].push_back(); vec[].push_back();
for(int i=;i<=n;++i)
dp[i]=dp[i-]+min(abs(vec[i][]-vec[i-][])+abs(vec[i][]-vec[i-][]),abs(vec[i][]-vec[i-][])+abs(vec[i][]-vec[i-][]));
printf("%lld\n",dp[n]);
return ;
}
C : Connect 题目地址: https://codeforces.com/problemset/problem/1130/C
题解:给你一张n*n的地图,0代表陆地,1代表水地;只能走陆地;
给你起点和终点,并且你只能 打通一次 两块陆地;
让你求从起点大终点需要打通的陆地之间距离的最小值;
枚举起点所能到达的点,终点所能到达的点;暴力找最小值即可
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define clr(a,b) memset(a,b,sizeof(a))
#define PI acos(-1.0)
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
typedef long long ll;
const int INF=0x3f3f3f3f;
int ans=INF,n;
int x[],y[],v[][][];
char z[][];
void dfs(int a,int b,int c)
{
if(v[c][a][b]) return ;
v[c][a][b]=;
if(z[a+][b]=='') dfs(a+,b,c);
if(z[a][b+]=='') dfs(a,b+,c);
if(z[a-][b]=='') dfs(a-,b,c);
if(z[a][b-]=='') dfs(a,b-,c);
}
int main()
{
cin>>n;
for(int i=;i<;i++) cin>>x[i]>>y[i];
for(int i=;i<=n;i++) scanf("%s",z[i]+);
for(int i=;i<;i++) dfs(x[i],y[i],i);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(v[][i][j])
{
for(int k=;k<=n;k++)
for(int l=;l<=n;l++)
{
if(v[][k][l])
ans=min(ans,(i-k)*(i-k)+(j-l)*(j-l));
}
}
}
cout<<ans<<endl;
return ;
}
D(D1 和 D2) :Toy Train 题目地址: https://codeforces.com/problemset/problem/1129/A2
两题一样,只是数据不一样,放一起说
题解:
有1-n个站点,成环形,有一辆运货车,在这个n个站点之间运输糖果,货车只能按照1->n的方向走,到第n个站的时候,又回到的1,现在告诉你有m个运输任务,从x站点运输一个糖果到y站点。已知货车的容量足够大,可以同时装无数个糖果,但是每一次经过一个站的时候,只能够选择其中一项任务进行运输,假设从一个站到另一个站的运输时间为1,请问从1-n每个站点作为起点,最短的运输时间分别是多少
这个题目,由于我们每次跑都是绕圈的,所以,如果站点i有 out[i]项任务的话,至少要经过站点i,out[i]次,所以,我们可以得出一个公式,假设初始起点为s,运输终点为e
dist(s,i)+n∗out[i]+dist(i,e) dist(s,i)+n*out[i]+dist(i,e)dist(s,i)+n∗out[i]+dist(i,e) 就是完成第i个站点的所有任务的时间,因此,我们只要让dist(i,e) dist(i,e)dist(i,e)最小即可
D1 D2 参考代码:
#include<bits/stdc++.h>
using namespace std;
#define clr(a,v) memset(a,v,sizeof(a))
#define PI acos(-1.0)
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
typedef long long ll;
const int INF=0x3f3f3f3f;
const int maxn=;
int n,m,x,y;
int Min[maxn],out[maxn];
int dis(int i,int j){return j>=i? j-i:j-i+n;}
int main()
{
scanf("%d%d",&n,&m);
clr(out,);clr(Min,INF);
for(int i=;i<=m;++i)
{
scanf("%d%d",&x,&y);
if(y>=x) Min[x]=min(Min[x],y-x);
else if(y<x) Min[x]=min(Min[x],y-x+n);
out[x]++;
} for(int i=;i<=n;++i)
{
int ans=;
for(int j=;j<=n;++j)
{
if(out[j]) ans=max(ans,dis(i,j)+Min[j]+(out[j]-)*n);
}
printf("%d%c",ans,i==n?'\n':' ');
}
return ;
}
E : Wrong Answer 题目地址: https://codeforces.com/problemset/problem/1129/B
题解:
注意到 n≥2n≥2 时才可能有解,可以按如下方式构造一个 a1,2…na1,2…n:
令 a1=−1a1=−1 ,而后面的数都为正.记 s=∑ni=2ais=∑i=2nai,显然题目中的程序给出的答案是 s∗(n−1)s∗(n−1) .
为使这个答案比正确答案少 kk ,那么正确答案只能是 (s−1)∗n(s−1)∗n.
由于我们可以放 11 个 −1−1 , 19991999 个 106106,此时 s−n=1999∗106−2000>109s−n=1999∗106−2000>109 ,所以按照上述方法一定可以构造出一组解.
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mp make_pair
#define pii pair<int,int>
const int delta=1e6-;
int ans[],n=,k;
int main()
{
scanf("%d",&k);
++k; ans[++n]=-;
while(k>=delta)
{
k-=delta;
ans[++n]=delta+;
}
ans[++n]=k+;
printf("%d\n",n);
for(int i=;i<=n;++i) printf("%d%c",ans[i],i==n?'\n':' ');
return ;
}
CF 1130A 1130B 1130C1129A1 1129A2 1129B(Round542A B C D1 D2 E)题解的更多相关文章
- CF#335 Freelancer's Dreams
Freelancer's Dreams time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- B. Lost Number【CF交互题 暴力】
B. Lost Number[CF交互题 暴力] This is an interactive problem. Remember to flush your output while communi ...
- CF#581 (div2)题解
CF#581 题解 A BowWow and the Timetable 如果不是4幂次方直接看位数除以二向上取整,否则再减一 #include<iostream> #include< ...
- NSCharacterSet 使用说明
NSCharacterSet 和 NSMutableCharacterSet 用面向对象的方式来表示一组Unicode字符,它经常与NSString及NSScanner组合起来使用,在不同的字符上 ...
- java中变量命名和引用变量的一个坑
这次有两个主题,第一个太简单啦,就是java中变量的命名规则,纯记忆性东西.第二个主题,就是讨论一下对象引用变量的一个注意点.
- css 背景透明文字(内容)不透明三种实现方法
好久没写博客了.以前还想着最少一个月抽空写几篇.结果没做到O(∩_∩)O~~.好吧.现在努力,继续坚持. 看着以前写的东西,感觉自己在逐渐成长. 先上图: 本文主要记录如上图一样的.文字或内容不透明, ...
- 安全协议系列(三)----CCMP与WPA-PSK
本节讨论 CCM 在 WiFi 中的实际应用 -- CCMP 协议 根据 RFC 3610,完成 CCMP 报文的加解密,需要提供:分组密钥(K).随机数(Nonce).附加认证数据(AAD),这三个 ...
- CF451C Predict Outcome of the Game 水题
Codeforces Round #258 (Div. 2) Predict Outcome of the Game C. Predict Outcome of the Game time limit ...
- Codeforces Round #379 (Div. 2) 解题报告
题目地址 本次CF是在今天早上深夜进行,上午有课就没有直接参加.今天早上上课坐到后排参加了virtual participation.这次CF前面的题目都非常的水,不到10分钟就轻松过了前两题,比较郁 ...
随机推荐
- Jquery EasyUI 中ValidateBox验证框使用讲解
来源素文宅博客:http://blog.yoodb.com/ Validatebox(验证框)的设计目的是为了验证输入的表单字段是否有效.如果用户输入了无效的值,它将会更改输入框的背景颜色,并且显示警 ...
- Asciinema:你的所有操作都将被录制
如何实现类似于Jumpserver koko一样的终端录制回放功能呢?本文介绍一个神器 asciinema 是一款开源免费的终端录制工具,它可以将命令行输入输出的任何内容加上时间保存在文件中,同时还提 ...
- Python 常用模块系列学习(1)--random模块常用function总结--简单应用--验证码生成
random模块--random是一个生成器 首先: import random #导入模块 print (help(random)) #打印random模块帮助信息 常用function ...
- pat 1041 Be Unique(20 分)
1041 Be Unique(20 分) Being unique is so important to people on Mars that even their lottery is desig ...
- nyoj 1112-求次数 (string, substr(begin, length), map, pair)
1112-求次数 内存限制:64MB 时间限制:1000ms 特判: No 通过数:3 提交数:8 难度:2 题目描述: 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新 ...
- 查找文件或目录(find、locate、whereis、which、whatis)
find命令:可以按文件名.文件的类型.用户等条件来递归查找文件或目录 find [路径] [匹配表达式] ,常用选项如下 -name filename 按文件名 -user username ...
- Qt Framework 问题之 framework/Versions/A:bundle format unrecognized, invalid, or unsuitable
在解决标题提到的问题之后,先来介绍下Qt Framework一些基本知识. 基于QT的Mac端工程,在打包时需要对所有需要嵌入到APP的framework及dylib文件进行手动签名处理. 一.签名处 ...
- 万恶之源-python内容的进化
1.整数: int--计算和比较 整数可以进行的操作: bit_length().计算整数在内存中占用的二进制码的长度 2.布尔值 bool 布尔值--用于条件使用 True 真 ...
- 剖析nsq消息队列(四) 消息的负载处理
剖析nsq消息队列-目录 实际应用中,一部分服务集群可能会同时订阅同一个topic,并且处于同一个channel下.当nsqd有消息需要发送给订阅客户端去处理时,发给哪个客户端是需要考虑的,也就是我要 ...
- 【2018寒假集训 Day2】【动态规划】维修栅栏
维修栅栏 问题描述: 小z最近当上了农场主!不过,还没有来得及庆祝,一件棘手的问题就摆在了小z的面前.农场的栅栏,由于年久失修,出现了多处破损.栅栏是由n块木板组成的,每块木板可能已经损坏也可能没有损 ...