codeforces 792A-D
先刷前四题,剩下的有空补。
题意:给出x 轴上的n 个点,问两个点之间的最短距离是多少,有多少个最短距离。
思路:排序后遍历。
代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
#define N 200005
int w[N];
int main(){
int n;
while(~scanf("%d", &n)){
for(int i=; i<n; i++){
scanf("%d", &w[i]);
}
sort(w, w+n);
int mint=w[]-w[], co=;
for(int i=; i<n; i++){
if(w[i]-w[i-]<mint){
mint=w[i]-w[i-];
co=;
}
else if(w[i]-w[i-]==mint) co++;
}
printf("%d %d\n", mint, co);
}
return ;
}
792A AC代码
题意:1-n n个数围成一圈,初始位置为1,有m 个操作,每个操作给一个整数x,表示前进x 步后删去当前位置的数,再前进一步,输出每次操作删除的数
思路:模拟,用pos表示当前位置,循环m 次。注意得到x 后先取余当前剩余数量。
代码:
#include<stdio.h>
int main(){
int n, m, x;
while(~scanf("%d%d", &n, &m)){
bool vis[]={}, flag=false;
int pos=, num=n;
while(m--){
scanf("%d", &x);
x=x%num;
while(x--){
do
{
pos++;
pos%=n;
}while(vis[pos]==);
}
if(flag) printf(" ");
flag=true;
printf("%d", pos+);
vis[pos]=;
do
{
pos++;
pos%=n;
}while(vis[pos]==);
num--;
}
printf("\n");
}
return ;
}
792B AC代码
题意:给一个数,问最少删除多少位后可以被3 整除。
思路:
有一个大数取余要先理解。用sum 保存所有位和取余3 的结果。
如果sum==0,不需要删除;
如果sum==1,有可能删除一位1(取余后),有可能删除两位2;
如果sum==2,有可能删除一位2,有可能删除两位1。
写一个函数del(char *s, int k)表示从s 里删除一个数字k 并且去除前导0。接着几个if、else判断一下就可以了。
代码:
#include<stdio.h>
#include<string.h>
void del(char *s, int k){
int ls=strlen(s), i;
for(i=ls-; i>=; i--){
if((s[i]-'')%==k) break;
}
if(i==-) return ;
for(int j=i; j<ls; j++) s[j]=s[j+];
if(s[]==){
s[]='-';
s[]='';
s[]=;
return ;
}
for(i=; s[i]; i++){
if(s[i]!='') break;
}
if(s[i]==) s[]='', s[]=;
else{
for(int j=i; j<ls; j++){
s[j-i]=s[j];
}
}
}
char s[], ts[];
int main(){
while(~scanf("%s", s)){
int sum=;
for(int i=; s[i]; i++){
sum+=s[i]-'';
sum%=;
}
if(sum==) printf("%s\n", s);
else{
int n1=, n2=;
for(int i=; s[i]; i++){
if((s[i]-'')%==) n1++;
else if((s[i]-'')%==) n2++;
}
if(sum==){
if(n2<){
del(s, );
printf("%s\n", s);
}
else if(n1==){
del(s, );
del(s, );
printf("%s\n", s);
}
else{
strcpy(ts, s);
int ls1, ls2;
del(ts, );
ls1=strlen(ts);
del(s, );
del(s, );
ls2=strlen(s);
if(ls1>ls2) printf("%s\n", ts);
else printf("%s\n", s);
}
}
else{
if(n2==){
del(s, );
del(s, );
printf("%s\n", s);
}
else if(n1<){
del(s, );
printf("%s\n", s);
}
else{
strcpy(ts, s);
int ls1, ls2;
del(ts, );
del(ts, );
ls1=strlen(ts);
del(s, );
ls2=strlen(s);
if(ls1>ls2) printf("%s\n", ts);
else printf("%s\n", s);
}
}
}
}
return ;
}
792C AC代码
792D Paths in a Complete Binary Tree
题意:给一个n ,一个m ,n 表示有n 个结点的完整二叉树,m 表示m 个询问,每次询问给出初始结点编号和移动序列,问移动后的结点编号。(树结点编码依据中序遍历)
思路:
预处理+模拟。
可以先通过一个dfs找到初始位置的层数,这个dfs里面同时求出初始位置到根的路径(用于判断当前位置是父结点的左孩子或右孩子)。
接着根据初始位置的层数,先预处理一下移动序列,把不合理的操作去掉。(简化后续操作难度)
接着模拟当前位置变化即可。分三种情况处理即可(重点的子树结点数量可以通过当前层数求出)
代码:
#include<stdio.h>
#define LL long long int getNum(LL n){
int ret=;
while(n){
n>>=;
ret++;
}
return ret;
} int dfs(LL l, LL r, LL p, bool *ss, int &ssp, int ceng){ // 确定初始位置的行
LL mid=(l+r)/;
if(mid==p) return ceng;
else if(mid>p){
ss[ceng]=;
ssp=ceng;
return dfs(l, mid-, p, ss, ssp, ceng+);
}
else{
ss[ceng]=;
ssp=ceng;
return dfs(mid+, r, p, ss, ssp, ceng+);
}
} void init(char *s, int rp, int num){
int j=;
for(int i=; s[i]; i++){
if(s[i]=='L' || s[i]=='R'){
if(rp==num);
else{
rp++;
s[j++]=s[i];
}
}
else{
if(rp==);
else{
rp--;
s[j++]=s[i];
}
}
}
s[j]=;
} LL dp[];
LL solve(char *s, bool *ss, int ssp, LL p, int rp, int num){
if(s[]==) return p;
if(s[]=='L'){
LL ln=dp[num-rp]-;
p=p-ln+(ln-)/;
rp++;
ss[++ssp]=;
}
else if(s[]=='R'){
LL rn=dp[num-rp]-;
p=p++(rn-)/;
rp++;
ss[++ssp]=;
}
else{
if(ss[ssp]==){
LL rn=dp[num-rp]-;
p=p++rn;
}
else{
LL ln=dp[num-rp]-;
p=p--ln;
}
ssp--;
rp--;
} return solve(s+, ss, ssp, p, rp, num);
} char s[];
bool ss[];
int main(){
dp[]=;
for(int i=; dp[i-]<=1e18; i++){
dp[i]=dp[i-]*;
}
LL n, p;
int m;
while(~scanf("%I64d%d", &n, &m)){
int num = getNum(n);
while(m--){
scanf("%I64d%s", &p, s);
int ssp=;
int rp = dfs(, n, p, ss, ssp, );
init(s, rp, num); printf("%I64d\n", solve(s, ss, ssp, p, rp, num));
}
}
return ;
}
792D AC代码
codeforces 792A-D的更多相关文章
- 3.26-3.31【cf补题+其他】
计蒜客)翻硬币 //暴力匹配 #include<cstdio> #include<cstring> #define CLR(a, b) memset((a), (b), s ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
- 【Codeforces 738C】Road to Cinema
http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...
- 【Codeforces 738A】Interview with Oleg
http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...
- CodeForces - 662A Gambling Nim
http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...
- CodeForces - 274B Zero Tree
http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...
- CodeForces - 261B Maxim and Restaurant
http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...
- CodeForces - 696B Puzzles
http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...
- CodeForces - 148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...
随机推荐
- 过程 sp_addextendedproperty, 对象无效。不允许有扩展属性,或对象不存在。
过程 sp_addextendedproperty, 对象无效.不允许有扩展属性,或对象不存在. 首先这个是创建数据表的SQL,有Power Designer创建模型,直接生成的创建SQL会出现的问题 ...
- ViewPagerWithViewDemo【ViewPager和View搭配以及演示获取里面的值和CheckBox单选效果】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 简单记录下ViewPager和自定义布局view的搭配使用以及布局文件中单选效果.获取viewpager布局内部值的功能. 效果图 ...
- .net core自定义高性能的Web API服务网关
网关对于服务起到一个统一控制处理的作用,也便于客户端更好的调用:通过网关可以灵活地控制服务应用接口负载,故障迁移,安全控制,监控跟踪和日志处理等.由于网关在性能和可靠性上都要求非常严格,所以针对业务需 ...
- python3打开winodows文件问题
1,解决办法 "C:\\Users\\Darkness-02\\Desktop\\test.txt" 多加一个反斜杠就行了 2,解决办法r"C:\Users\Darkne ...
- etcd v3集群备份和恢复
官方文档 https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/recovery.md 一.运行3个etcd节点 我们用 ...
- Map集合。
Map集合: java.util,Map<k,v> 特点:1.键值对 2.key-value一一对应 3.key不允许重复. Map常用实现类: java.util.HashMap< ...
- 上传图片截图预览控件不显示cropper.js 跨域问题
上传图片到图片服务器,因为域名不同,多以会有跨域问题. No 'Access-Control-Allow-Origin' header is present on the requested reso ...
- 解析高德地图api获取省市区,生成最新三级联动sql表
前言: 最近项目中用到了全国省市区三级信息,但是网上找到的信息都是比较旧的信息.与现在最新的地区信息匹配不上.后来想到高德地图上可能有这些信息.所以解析了一下api接口,生成了相关省市区的sql信息. ...
- Nginx系列
包括nginx的入门和进阶学习. 目录 nginx系列1:认识nginx nginx系列2:搭建nginx环境 nginx系列3:搭建一个静态资源web服务器 nginx系列4:日志管理 nginx系 ...
- Django 项目中添加静态文件夹
在 mysite 文件夹下添加一个 statics 文件夹用来存放 js 文件 在 index.html 文件中添加 <!DOCTYPE html> <html lang=" ...