Comet OJ - Contest #7
\(A\)
咕咕咕
int main(){
for(scanf("%d",&T);T;--T){
scanf("%d%d",&l,&r);
if(l==r)printf("%d %d %d %d\n",l,l,l,l);
else printf("%lld %lld %lld %lld\n",1ll*r*(r-1),1ll*l,1ll*r,1ll);
// printf("%lld %lld %lld %lld\n",l==r?1ll*l:1ll*r*(r-1),)
}
return 0;
}
\(B\)
分类讨论一下就行了
int main(){
fp(i,1,4)scanf("%d",&a[i]);
fp(i,1,4)if(a[i]==1){
fp(j,1,i-1)a[4+j]=a[j];
fp(j,1,4)a[j]=a[j+i-1];
}
if(a[2]==2&&a[3]==3&&a[4]==4)puts("0");
else if(a[2]==4&&a[3]==3&&a[4]==2)puts("2");
else puts("1");
return 0;
}
\(C\)
我可能是个\(zz\)
枚举哪些数刚好处在不合法位置,然后计算此时的贡献,大力容斥即可
//quming
#include<bits/stdc++.h>
#define R register
#define inline __inline__ __attribute__((always_inline))
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;}
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;}
typedef long long ll;
const int N=25,M=(1<<16)+5;
ll res,fac[N];int p[N],sz[M],vis[N],Pre[N],suf[N],n,T,lim;
ll calc(R int s){
fp(i,0,n-1)if(s>>i&1)fp(j,i+1,n-1)if((s>>j&1)&&p[i]==p[j])return false;
fp(i,0,n-1)if(s>>i&1)vis[p[i]]=1;
fp(i,1,n)if(vis[i]){
Pre[i]=suf[i]=0;
fp(j,1,i-1)if(!vis[j])Pre[i]+=i-j;
fp(j,i+1,n)if(!vis[j])suf[i]+=j-i;
}
ll res=0;int sum=0,ss=sz[s];
fp(i,1,n)if(!vis[i])fp(j,i+1,n)if(!vis[j])sum+=j-i;
fp(i,0,n-1)fp(j,i+1,n-1){
if((s>>i&1^1)&&(s>>j&1^1))res+=fac[n-ss-2]*sum*(j-i);
else if(s>>i&1^1)res+=fac[n-ss-1]*suf[p[j]]*(j-i);
else if(s>>j&1^1)res+=fac[n-ss-1]*Pre[p[i]]*(j-i);
else if(p[j]<p[i])res+=fac[n-ss]*(j-i)*(p[i]-p[j]);
}
fp(i,1,n)vis[i]=0;
return res;
}
int main(){
// freopen("testdata.in","r",stdin);
fp(i,1,65535)sz[i]=sz[i>>1]+(i&1);
fac[0]=1;fp(i,1,16)fac[i]=fac[i-1]*i;
for(scanf("%lld",&T);T;--T){
scanf("%d",&n),res=0,lim=(1<<n);
fp(i,0,n-1)scanf("%d",&p[i]);
// printf("%d\n",calc(3));
fp(i,0,lim-1)(sz[i]&1)?res-=calc(i):res+=calc(i);
printf("%lld\n",res);
}
return 0;
}
\(D\)
首先由两个结论
1.\(A,B\)肯定取到某个\(x\)或者\(min(x)-1\)或者\(max(x)+1\)
2.\(A<B\)
简单来说就是不这样取的话结果会变得不优
我们先把\(x\)离散并计算每个\(x\)时取\(A\)或者取\(B\)时对应\(y_i\)的贡献之和,分别记为\(Pre_i\)和\(suf_i\)
然后我们枚举\(B\)的位置\(i\),那么如果\(A\)为\(j(j<i)\),答案就是\(Pre_{j}+suf_i+(p_i-p_j)^2\),其中\(p_i\)表示离散化之前\(i\)对应的\(x\)的值
斜率优化即可
//quming
#include<bits/stdc++.h>
#define R register
#define inline __inline__ __attribute__((always_inline))
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;}
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;}
using namespace std;
typedef long long ll;
const int N=5e5+5;
ll Pre[N],suf[N],g[N],f[N],res=1e18;
int n,h,t,m,x[N],y[N],id[N],p[N],q[N],b[N];
inline int max(R int x,R int y){return x>y?x:y;}
inline int min(R int x,R int y){return x<y?x:y;}
inline double sl(R int i,R int j){return 1.0*(g[i]-g[j])/(p[i]-p[j]);}
inline ll sqr(R int x){return 1ll*x*x;}
int main(){
// freopen("testdata.in","r",stdin);
scanf("%d",&n);
fp(i,1,n)scanf("%d%d",&x[i],&y[i]),b[i]=x[i];
sort(b+1,b+1+n),m=unique(b+1,b+1+n)-b-1;
p[1]=b[1]-1,p[m+2]=b[m]+1;fp(i,1,m)p[i+1]=b[i];
for(R int i=1,k;i<=n;++i){
k=lower_bound(b+1,b+1+m,x[i])-b;
Pre[k+1]+=max(-y[i],0),suf[k+1]+=max(y[i],0);
}
n=m+2;fp(i,1,n)Pre[i]+=Pre[i-1];fd(i,n,1)suf[i]+=suf[i+1];
// fp(i,1,n)printf("%d %d %lld %lld\n",i,p[i],Pre[i],suf[i]);
fp(i,1,n)g[i]=Pre[i-1]+sqr(p[i]);
h=1,t=0;
fp(i,1,n){
while(h<t&&sl(q[t-1],q[t])>=sl(q[t-1],i))--t;
q[++t]=i;
while(h<t&&sl(q[h],q[h+1])<=2*p[i])++h;
f[i]=sqr(p[i]-p[q[h]])+Pre[q[h]-1]+suf[i+1];
cmin(res,f[i]);
// printf("%d %d %lld\n",i,q[h],f[i]);
// fp(j,1,i-1)cmin(res,sqr(p[i]-p[j])+Pre[j-1]+suf[i+1]);
}
printf("%lld\n",res);
return 0;
}
剩下两题太恐怖了咕了
Comet OJ - Contest #7的更多相关文章
- Comet OJ - Contest #2 简要题解
Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{( ...
- Comet OJ - Contest #2简要题解
Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/ ...
- Comet OJ - Contest #4--前缀和
原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打 ...
- Comet OJ - Contest #11 题解&赛后总结
Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最 ...
- Comet OJ - Contest #8
Comet OJ - Contest #8 传送门 A.杀手皇后 签到. Code #include <bits/stdc++.h> using namespace std; typede ...
- Comet OJ - Contest #13-C2
Comet OJ - Contest #13-C2 C2-佛御石之钵 -不碎的意志-」(困难版) 又是一道并查集.最近做过的并查集的题貌似蛮多的. 思路 首先考虑,每次处理矩形只考虑从0变成1的点.这 ...
- Comet OJ - Contest #13 「火鼠的皮衣 -不焦躁的内心-」
来源:Comet OJ - Contest #13 芝士相关: 复平面在信息学奥赛中的应用[雾 其实是道 sb 题??? 发现原式貌似十分可二项式定理,然后发现确实如此 我们把 \(a^i\) 替换成 ...
- Comet OJ - Contest #13 「佛御石之钵 -不碎的意志-」(hard)
来源:Comet OJ - Contest #13 一眼并查集,然后发现这题 tmd 要卡常数的说卧槽... 发现这里又要用并查集跳过访问点,又要用并查集维护联通块,于是开俩并查集分别维护就好了 一开 ...
- Comet OJ - Contest #5
Comet OJ - Contest #5 总有一天,我会拿掉给\(dyj\)的小裙子的. A 显然 \(ans = min(cnt_1/3,cnt_4/2,cnt5)\) B 我们可以感性理解一下, ...
- Comet OJ Contest #13 D
Comet OJ Contest #13 D \(\displaystyle \sum_{i=0}^{\left\lfloor\frac{n}{2}\right\rfloor} a^{i} b^{n- ...
随机推荐
- JAVA堆,栈的区别,用AarrayList、LinkedList自定义栈
大家都知道java模拟机在运行时要开辟空间所以它有特定的五个内存划分: 1.寄存器: 2.本地方法区: 3.方法区: 4.栈内存: 5.堆内存: 但是我们今天来注重讲一下栈和堆 ...
- Ubuntu 利用 mtd-utils 制作ubifs.img
确保已经安装了有关的工具 sudo apt-get install mtd-utils mkfs.ubifs -d fs -m -o rootfslink.ubiimg -e -c -F -v syn ...
- 音视频入门-09-RGB&YUV互转-使用开源库
* 音视频入门文章目录 * 介绍开源库 使用第三方开源库来简化开发,屏蔽一些底层的复杂度,节省大量编写代码的时间. libyuv: Google 开源的实现各种 YUV 与 RGB 之间相互转换.旋转 ...
- wannafly 挑战赛10 小H和密码
题意:中文题就不解释了 题解: dp[i][j]表示前i 个轮盘 和一个字符串前j 个字符的匹配情况 ,具体的状态转移解释见代码 #include <cstdio> #include &l ...
- PC启动过程详解
系统启动过程 1. 预引导(Pre-Boot)阶段 2. 引导阶段 3. 加载内核阶段 4. 初始化内核阶段 5. 用户登录阶段 基本概念: BIOS:即“Basic Input/Output Sys ...
- H5表单新特性
1.HTML5表单新特性之——新的input type <input type=" "> HTML5之前已有的input type: text.password.rad ...
- git使用——远程仓库(Remote repositories)
前言 为了能在任意 Git 项目上协作,你需要知道如何管理自己的远程仓库. 远程仓库是指托管在因特网或其他网络中的你的项目的版本库. 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写. 与 ...
- 快上车,react 入门拾遗
最近朋友圈和微博都刷了一波杰伦的回忆杀–说好不哭,想想都9012了,在学习react如火如荼的路上,也不妨停下脚步来总结总结,朝花夕拾一下. 为了便于阐述,我们还是来段小明和禅师的故事吧. 小明在学习 ...
- AD19新功能之交互式等长
多信号线等长 选中需要等长的信号线: 选择“Interaction Length Tuning”命令,然后在网络线上点击一下,然后 tab 键暂停: 在Properties面板中,修改Source部分 ...
- 从excel 导入数据绘制 散点图
import xlrdimport matplotlib.pyplot as plt bok = xlrd.open_workbook(r'test.xls') sht = bok.sheets()[ ...