SXYZ-6.26模拟赛
没有爆零,足矣。
发现绍兴一中机房的一个特点:键盘打得贼响!!
T1 ctrl
啃臭键在哪里
(中文名我都不好意思大打)
第一遍测T1一分都没得啊!
这跟题目描述自相矛盾有关,导致我只是轻微考虑了一下 \(a[i]\) 为负的情况。
但是没有考虑的是 \(p[i]\) 竟然也可以为零
仁者见仁,智者见智吧
一天以后的现在晚上8:00,终于把一二问的正解打出来了。主要是昨天没法测,今天lemon又频频炸掉。还好在super OJ上AK了,回来把题解补上。
T1看了题解后打对了,解题思路很巧妙,与我之前分别算法不同。正解是相对于一种状态(冰之格),把翻:转每一个各自的贡献都放在一个新数组中,情况一共分为四类:
- 翻同种状态(翻冰之格)
- $a[i]\geq0 $ 不选,反转后贡献 \(-p[i]\)
- \(a[i]\leq0\) 初始选,反转后无法选择,贡献为 \(a[i]-p[i]\)
- 翻不同状态(翻火之格)
- \(a[i]\geq0\) 翻转后依然不选(重点,当时没搞懂),贡献为 \(-p[i]\)
- \(a[i]\leq0\) 翻转后选,贡献 \(a[i]-p[i]\)
对于当前情况的贡献数组sort一下,去前m个整数即可,是不是很妙!!
这是AC代码:
#include<bits/stdc++.h>
using namespace std;
#define N 800000
int n,m,p[N],a[N],b[N],fa[N],fb[N];
long long suma=0,sumb=0;
int main(){
freopen("ctrl.in","r",stdin);
freopen("ctrl.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) scanf("%d",&p[i]);
for(int i=1;i<=n;i++){
scanf("%d",&b[i]);
if(b[i]==1&&a[i]>=0) suma+=a[i];
if(b[i]==0&&a[i]>=0) sumb+=a[i];
}
for(int i=1;i<=n;i++){
if(b[i]==1){
if(a[i]<0) fa[i]=-p[i];
else fa[i]=-a[i]-p[i];
}
else{
if(a[i]<0) fa[i]=-p[i];
else fa[i]=a[i]-p[i];
}
if(b[i]==0){
if(a[i]<0) fb[i]=-p[i];
else fb[i]=-a[i]-p[i];
}
else{
if(a[i]<0) fb[i]=-p[i];
else fb[i]=a[i]-p[i];
}
}
sort(fa+1,fa+1+n);
sort(fb+1,fb+1+n);
int ma=m,mb=m;
for(int i=n;i>=1;i--){
if(fa[i]>0&&ma>0) suma+=fa[i],ma--;
if(fb[i]>0&&mb>0) sumb+=fb[i],mb--;
}
printf("%lld",max(suma,sumb));
return 0;
}
T2 genshin
原神,启动!
这道题刚刚才调对,思路就是疯狂分类讨论,我的答题思路没错,但因为if过多,加上多重样例,被卡掉了。
简单说一下思路,以黑白相邻的填充方法填充整个区间,发现角落里的贡献是2,边上贡献是3,其余贡献是4。发现用这些数可以任意组成 \(1\)~\(2*n*(n-1)\) 中除了 \(1\) ,和 \(2*n*(n-1)-1\) 外,其他均可用2,3,4组和而成。中间还要注意,我是以4位基数,而四的个数只足够完全覆盖一般,也就是 \(n*n(n-1)\),可以发现剩下一般与前一半是对称的。所以这道题就做出来了。判断输出方法可能有待改进。
以下是AC代码:
#include<bits/stdc++.h>
using namespace std;
int n4,n2,n3,sum,n,m,mm;
int check(){
int m4=0,m2=0,m3=0;
mm=m;
int f=0;
if(m>n*(n-1)){
mm=(2*n*(n-1)-m);
f=1;
}
if(mm%2==1){
m3=1;
mm-=3;
}
m4=min(n4,mm/4);
m2=(mm-m4*4)/2;
// cout<<" "<<m3<<" "<<n3;
if(f){
n4-=m4;n3-=m3;n2-=m2;
}
else{
n4=m4;n3=m3;n2=m2;
}
return 1;
}
int main(){
freopen("genshin.in","r",stdin);
freopen("genshin.out","w",stdout);
int T;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
if(n==1||m==1||m>2*n*(n-1)||m==2*n*(n-1)-1){
printf("Impossible\n");
continue;
}
if(m<=n){
printf("Possible\n");
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==1&&j<=m-1) printf("1");
else printf("0");
}
printf("\n");
}
continue;
}
int halfn=(n*n+1)/2;
if(n%2==0){
n2=2;n3=(n/2-1)*4;n4=halfn-n3-n2;
}
else {
n2=4;n3=((n+1)/2-2)*4;n4=halfn-n2-n3;
}
// printf("n:%d,n2:%d,n3:%d,n4:%d\n",n,n2,n3,n4);
if(check()){
printf("Possible\n");
int flag=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
flag=flag^1;
if(i==1&&j==1&&n2>0){ printf("1"),--n2;continue;}
if(i==1&&j==n&&n2>1){ printf("1"),--n2;continue;}
if(i==n&&j==1&&n2>1){ printf("1"),--n2;continue;}
if(i==n&&j==n&&n2>0){ printf("1"),--n2;continue;}
if(flag==1&&i==1&&j!=1&&j!=n&&n3>0){ printf("1"),--n3;continue;}
if(flag==1&&j==1&&i!=1&&i!=n&&n3>0){ printf("1"),--n3;continue;}
if(flag==1&&i==n&&j!=1&&j!=n&&n3>0){ printf("1"),--n3;continue;}
if(flag==1&&j==n&&i!=1&&i!=n&&n3>0){ printf("1"),--n3;continue;}
if(flag==1&&i!=1&&j!=1&&i!=n&&j!=n&&n4>0){ printf("1"),--n4;continue;}
printf("0");
}
printf("\n");
if(n%2==0) flag=flag^1;
}
}
}
return 0;
}
备:这道题改出来确实不容易,完全坚定自己思路肝出来的一道题,祭。
T3 Ity
雨田天宇
这道题解决方法偏数学数论,代码没有打出来。但是有思路。
考场暴力有十分,非常朴素,暴力枚举每一种a,排完序后求贡献,时间复杂度 \(O(!n*nlogn*n)\) 很明显,这个暴力过于朴素。
对绝对值进行转化 \(\sum^n_{i=1}\sum^m_{j=1}(a_i \leq j)\oplus(a_{n-i+1} \leq j)\)
交换一下 \(\sum^m_{j=1}\sum^n_{i=1}(a_i \leq j)\oplus(a_{n-i+1} \leq j)\)
枚举 i ,枚举 j,计算贡献。
T4 Plan
不会,当时题都没看,溜了,溜了~
SXYZ-6.26模拟赛的更多相关文章
- 6.26模拟赛(1)总结(T1:信息传递;T2:传染病控制;T3:排列;T4:最大数)
16:33:56 2020-06-26 当然可以先看一下成绩: 非常显然的成绩不能算有多好,当然其实这也可能是假期水课的报应 (额) 但是比我集训前想象的要好一点(集训时想象的是排名前30就可以,嗯 ...
- 2019.7.26 NOIP 模拟赛
这次模拟赛真的,,卡常赛. The solution of T1: std是打表,,考场上sb想自己改进匈牙利然后wei了(好像匈牙利是错的. 大力剪枝搜索.代码不放了. 这是什么神仙D1T1,爆蛋T ...
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- 52-2018 蓝桥杯省赛 B 组模拟赛(一)java
最近蒜头君喜欢上了U型数字,所谓U型数字,就是这个数字的每一位先严格单调递减,后严格单调递增.比如 212212 就是一个U型数字,但是 333333, 9898, 567567, 313133131 ...
- 7.29NOIP模拟赛
7.29NOIP模拟赛 T1 YSG (1s,64MB,ysg.in,ysg.out) 描述 ysg,yxy,azw 三人正在刷题. 他们每做一题的时间都是一个有理数. 如果在某一时刻,三人同时做完一 ...
- 2014-10-31 NOIP模拟赛
10.30 NOIp 模拟赛 时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...
- ZROI 普及组模拟赛02总结
ZROI 普及组模拟赛02总结 先放[网址][http://zhengruioi.com/contest/96] 可能是有一段时间没有打这种正式的比赛了,今天打的很奇怪... T1 模拟水题 既然是普 ...
- 冲刺$\mathfrak{CSP-S}$集训模拟赛总结
开坑.手懒并不想继续一场考试一篇文. 既没必要也没时间侧边栏的最新随笔题解反思相间也丑 而且最近越来越懒了竟然都不写题解了……开坑也是为了督促自己写题解. 并不想长篇大论.简要题解也得写啊QAQ. 目 ...
- 20201101gryz模拟赛解题报告
写在前面 2020rp++ 停课的第一场模拟赛 拿上一年的上一年的day1来考的, 结果得分期望220pts,实际135pts,rank3,太菜了 考着考着机房灯突然灭了,当时慌的一批 以为断电代码要 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
随机推荐
- Python 标准类库-因特网数据处理之Base64数据编码
该模块提供将二进制数据编码为可打印ASCII字符并将这种编码解码回二进制数据的功能.它为RFC 3548中指定的编码提供编码和解码功能.定义了Base16.Base32和Base64算法,以及事实上的 ...
- JMeter 后置处理器之JSON提取器
后置处理器之JSON提取器 By:授客 QQ:1033553122 测试环境 JMeter 5.4.1 插件介绍 JSON后置处理器(PostProcessor)允许使用 JSON Path 语法从J ...
- docker 将镜像发布到网络
1.发布自己的镜像 hub.docker.com 创建账号 docker login -u supermao -p xxxx docker tag ls supermaofox/ls:1.0 先打标签 ...
- 【Git】上传代码到码云
教程来自于这个上面: https://www.jianshu.com/p/3e0b213ab03d 第一步:创建码云仓库 具体怎么点选这里不再演示了 第二步:创建本地文件夹 [这个目录用来做本地仓库, ...
- 【JDBC】Extra02 SqlServer-JDBC
官网驱动获取地址: https://www.microsoft.com/zh-cn/download/details.aspx Maven仓库获取: https://mvnrepository.com ...
- 【ECharts】04 数据交互
ECharts 异步加载数据 ECharts 通常数据设置在 setOption 中,如果我们需要异步加载数据,可以配合 jQuery等工具,在异步获取数据后通过 setOption 填入数据和配置项 ...
- AI辅助教学,甚至AI教学,逐渐成为可能
看新闻,有感: 太火爆!一门课,两个月吸粉十五万人!企业纷纷布局!千亿级大市场,来了?
- mini_imagenet 数据集生成工具
最近在看小样本方面的论文,发现这个mini_imagenet这个数据集比较常用,但是却不好找,找了半天也没有找到,最后在找到了这样的答案: 小样本学习(Few shot learning)标准数据集( ...
- 11-canvas绘制折线图
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- 从源码分析 SpringBoot 的 LoggingSystem → 它是如何绑定日志组件的
开心一刻 今天心情不好,想约哥们喝点 我:心情不好,给你女朋友说一声,来我家,过来喝点 哥们:行!我给她说一声 我:你想吃啥?我点外卖 哥们:你俩定吧,我已经让她过去了 我:???我踏马让你过来!和她 ...