codeforces round#613
A题:输出n+1;
B题:
题意:就是给n个数,a人全拿,b人拿连续的子段和,如果b人比a人大于等于的话输出NO,反之输出YES
思路:最大子段和,比赛的时候忘记 ll 和 字段和不是遇到负数就重置。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<queue>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define mod 998244353
const int maxn=1e5+;
int t,n;
int a[maxn];
int main(){
scanf("%d",&t);
while(t--){
scanf("%d",&n);
int flag=,tt=,f=;
ll sum=,ans=,maxx=-;
for(int i=;i<n;i++){
scanf("%d",&a[i]);
sum+=(ll)a[i];
}
ans=;
int l=,r=,l1=,r1=;
for(int i=;i<n;i++){
if(ans<=){ans=a[i];l=r=i;}
else{
ans+=a[i];r=i;
}
if(maxx<ans){
maxx=ans,l1=l,r1=r;
}
}
if(maxx<sum ||(maxx==sum && l1== && r1==n-)){
printf("YES\n");
}
else{
printf("NO\n");
}
}
return ;
}
C题:
题意:给一个x,求lcm(a,b)=x的同时max(a,b)要求最小化
思路:比赛的时候想了一个想法,然后试了一下就过了,没有数学验证,感觉这题比B题好做好多
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<queue>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define mod 998244353
const int maxn=1e5+;
ll gcd(ll a,ll b){
return b==?a:gcd(b,a%b);
}
ll n;
int main(){
scanf("%lld",&n);
ll k=(ll)sqrt(n);
for(ll i=k;i>=;i--){
if(n%i==){
if(gcd(i,n/i)==){
printf("%lld %lld\n",i,n/i);break;
}
}
}
return ;
}
upd
D题:看网上代码和思路,自己的假算法一直过不去……
这是一道异或的题,题意是给n个数字,找到一个X,和n个数异或,使得异或结果最大maxx的那个最小化,输出maxx
思路:(其实还是不太明白为什么可以这样,抄了一位大哥的题解,自己再琢磨琢磨……)
dfs,遍历这些数当前二进制位置是否全为1,或者全为0,如果都是1或0,当前二进制就可以抵消,不然再选择X的时候,这位的二进制是1或者0,都只能抵消一个二进制上面的数
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<queue>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define mod 998244353
const int maxn=1e5+;
vector<int>g;
int n,t;
int dfs(vector<int>&c,int x){
if(x<){return ;}
if(c.size()==){return ;}
vector<int>on,off;
for(auto i:c){
if((i>>x)&){
on.push_back(i);
}
else{
off.push_back(i);
}
}
if(on.size()==){return dfs(off,x-);}
if(off.size()==){return dfs(on,x-);}
return min(dfs(off,x-),dfs(on,x-))+(<<x);
}
int main(){
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%d",&t);g.push_back(t);
}
printf("%d\n",dfs(g,));
return ;
}
codeforces round#613的更多相关文章
- Codeforces Round #613 Div.1 D.Kingdom and its Cities 贪心+虚树
题目链接:http://codeforces.com/contest/613/problem/D 题意概述: 给出一棵树,每次询问一些点,计算最少删除几个点可以让询问的点两两不连通,无解输出-1.保证 ...
- Codeforces Round #613 (Div. 2) A-E简要题解
contest链接:https://codeforces.com/contest/1285 A. Mezo Playing Zoma 签到 #include<iostream> #incl ...
- Codeforces Round #613 (Div. 2) (A-E)
A略 直接求和最大的子序列即可(注意不能全部选中整个子序列) or #include<bits/stdc++.h> using namespace std; void solve(){ i ...
- Codeforces Round #613 (Div. 2)D(贪心,分治)
构造两颗深度为30的字典树(根节点分别是0和1),结点只有0和1,从根节点向下DFS,贪心取答案. #define HAVE_STRUCT_TIMESPEC #include<bits/stdc ...
- Codeforces Round #613 (Div. 2) C. Fadi and LCM(LCM & GCD)
题意: LCM(a, b) = X,求 max(a, b) 的最小值. 思路: a, b 只可能存在于 X 的因子中,枚举即可. #include <bits/stdc++.h> usin ...
- Codeforces Round #613 (Div. 2) B. Just Eat It!(前缀和)
题意: 一个长为n的序列,是否存在与原序列不同的连续子序列,其元素之和大于等于原序列. 思路: 从前.后分别累加,若出现非正和,除此累加序列外的子序列元素之和一定大于等于原序列. #include & ...
- Codeforces Round #613 (Div. 2) A. Mezo Playing Zoma(逻辑)
题意: 给出一个移动序列,可以无效化一些指令,问可以移动到多少不同位置. 思路: 第一印象是统计左右指令数目,后来发现左右指令数目和即字符串长度. #include <bits/stdc++.h ...
- Codeforces Round #613 (Div. 2) C. Fadi and LCM (数学)
题意:给你一个正整数\(x\),找两个正整数\(a\),\(b\),使得\(lcm(a,b)=x\),并且\(max(a,b)\)最小. 题解:我们知道,\(lcm(a,b)=a*b/gcd(a,b) ...
- Codeforces Round #613 (Div. 2) B. Just Eat It! (DP)
题意:有一个长度为\(n\)的序列,找出最大的长度不为\(n\)的子段和,问最大子段和是否小于所有元素和. 题解:最大子段和我们可以直接用dp来找,每次状态转移为:\(dp[i]=max(dp[i-1 ...
随机推荐
- Chrome浏览器添加信任站点
转载来源:https://zhidao.baidu.com/question/1946829886340846268.html 在浏览器地址栏输入:chrome://net-internals/#hs ...
- jquery点击添加样式,再次点击移除样式
$("#divSetting").on("click", function () { $(this).toggleClass("open") ...
- 第十九篇 vim编辑器的使用技巧
vim编辑器 ~/.viminfo文件中存储了vim编辑器中常用的命令 vim编辑器共有3中模式:命令模式.末行模式和输入模式,三种模式的转换方式如下图所示: vim 文件名 # 编辑一个文 ...
- JQuery/JS插件 jsTree加载树,预先加载,初始化时加载前三级节点,当展开第三级节点时 就加载该节点下的所有子节点
jsTree加载树, 初始化时 加载前三级节点, 当展开第三级节点时 就加载该节点下的所有子节点 html: <!DOCTYPE html> <html> <head&g ...
- DVWA全级别之SQL Injection(SQL注入)
DVWA全级别之SQL Injection(注入) DVWA简介 DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web ...
- java后台接受不到vue传的参数
@RequestMapping(value = "/delBelowImg") @Transactional public R delBelowFile(@RequestParam ...
- eureka-获取服务列表(各种状态)
在刚开始做的时候也搜了下搜到的大多是下面的第一种方法,这种方法很简单,但并不是Eureka展示的那个服务列表,他只包括了注册证成功的,或者说eureka中状态为“Up”的实例列表,对于down掉的实例 ...
- Docker - 创建第一个 docker 实例
1. 概述 安装完准备开始使用 2. 环境 os centos 7 docker docker - ce 19.03 3. 步骤 启动docker > systemctl start docke ...
- Understanding Java Memory Model-理解java内存模型(JVM)
from https://medium.com/platform-engineer/understanding-java-memory-model-1d0863f6d973 Understanding ...
- Platform device/driver注册过程
Platform是一种虚拟总线,Platform机制将设备本身的资源注册进内核,有内核统一管理,在驱动程序使用这些资源时使用统一的接口,这样提高了程序的可移植性. Linux的大部分设备驱动都可以使用 ...