T1:首先你要发现,对于任意一个奇数i,i xor (i-1)=1;

   那么我们可以将答案转化为统计有多少个1相互异或起来;

  所以答案就那么几种;

  如果你用的数位DP,只能说明你太高估day1T1了;

  

#include <bits/stdc++.h>
using namespace std;
long long l,r,ans1,ans2;
int main ()
{
int t;
cin>>t;
while(t--){
cin>>l>>r;
if(l>r) swap(l,r);
--l;
ans1=0;
ans2=0;
if(l&1)
{
long long tmp=l/2;
if(tmp&1){
ans1^=0;
}
else{
ans1^=1;
}
}
else{
ans1^=l;
--l;
long long tmp=l/2;
if(tmp&1){
ans1^=0;
}
else{
ans1^=1;
}
}
if(r&1)
{
long long tmp=r/2;
if(tmp&1){
ans2^=0;
}
else{
ans2^=1;
}
}
else{
ans2^=r;
--r;
long long tmp=r/2;
if(tmp&1){
ans2^=0;
}
else{
ans2^=1;
}
}
cout<<(ans1^ans2)<<endl;
}
}

T2:

#include <iostream>
#include <cstdio>
#pragma GCC optimize(2)
using namespace std;
int n,m,p;
struct littlestar{
int to;
int nxt;
int w;
}star[10300000];
int head[10300000],cnt;
void add(int u,int v,int w)
{
star[++cnt].to=v;
star[cnt].w=w;
star[cnt].nxt=head[u];
head[u]=cnt;
}
int floor,tot;
int have[20];
int ans=999999999;
int dis[10300000],vis[10300000],q[10300000];
void spfa()
{
for(register int i=1;i<=tot;i++)
{
dis[i]=999999999;
}
dis[1]=0;
vis[1]=1;
int h=1,t=1;
q[1]=1;
while(h<=t){
int u=q[h];
for(register int j=head[u];j;j=star[j].nxt){
int v=star[j].to;
if(dis[v]>dis[u]+star[j].w){
dis[v]=dis[u]+star[j].w;
if(!vis[v]){
q[++t]=v;
vis[v]=1;
}
}
}
vis[u]=0;
++h;
}
}
int main ()
{
//freopen("library.in","r",stdin);
cin>>n>>m>>p;
floor=1<<p;
tot=n*floor;
for(register int i=1;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
for(register int j=0;j<floor;j++){
add(n*j+x,n*j+y,z);
add(n*j+y,n*j+x,z);
}
}
for(register int k=1;k<=p;k++){
int x,u,v,w;
scanf("%d%d%d%d",&x,&u,&v,&w);
for(register int i=0;i<floor;i++){
for(register int j=1;j<=p;j++){
if(i&(1<<(j-1))){
have[j]=1;
}
else have[j]=0;
}
if(have[k]==1){
add(n*i+u,n*i+v,w);
add(n*i+v,n*i+u,w);
}
int tmp=i^(1<<(k-1));
add(n*tmp+x,n*i+x,0);
}
}
spfa();
for(register int i=0;i<floor;i++){
ans=min(ans,dis[i*n+n]);
}
cout<<ans<<endl;
}

T3:

我们首先看到这个题目后,我们可能会想到贪心合并,每次发现不能构成单调不减序列后,我们就一直合并到能构成单调不减序列.这是错误的!因为我们没有保证在相同合并次数下,要尽量使得最后一个数尽量小。所以会想到DP开始思考DP思路设:f[i]表示前i个数合并最小次数g[i]表示前i个数保证在合并f[i]次的情况下,最后一个数的最小值。转移的话,假如我们在处理f[i]那么我们在[1,i]枚举j,假如从j到i这个区间的值的和大于等于g[j](代表一定要合并),那么就可以转移了(合并)那么f[i]=f[j]+i−(j+1)用sum[i]表示前缀和,g[i]=sum[i]−sum[j]。以上便是N^2的做法;然后考虑优化:我们上面讲过g[i]越小越好,所以可以用单调队列维护sum[i]−sum[j]。

#include<cstdio>
#include<iostream>
#pragma GCC optimize(2)
using namespace std;
int n,head,tail=1;
long long f[5000010],pre[5000010],sum[5000010],q[5000010];
int main()
{
scanf("%d",&n);
for(register int i=1;i<=n;++i)
{
int x;
scanf("%d",&x);
sum[i]=sum[i-1]+x;
}
for(register int i=1;i<=n;++i)
{
while(head+1<tail&&sum[i]-sum[q[head+1]]>=pre[q[head+1]])
++head;
f[i]=f[q[head]]+i-q[head]-1;
pre[i]=sum[i]-sum[q[head]];
while(head<tail&&sum[q[tail-1]]+pre[q[tail-1]]>sum[i]+pre[i])
--tail;
q[tail++]=i;
}
cout<<f[n];
return 0;
}

Day1 模拟赛 题解的更多相关文章

  1. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  2. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  3. 20220303模拟赛题解and总结

    目录 总结 A.不幸的7 B.选举 C. 差的绝对值之和 D. 路径通过 总结 初一第一 一般,最后一题没打好 不难发现,教练出水了,可能是信心赛 A.不幸的7 暴力,没有逻辑可言 #include& ...

  4. PKUSC 模拟赛 题解_UPD

    之前挖了两个大坑 一个是day1下午的第二题 另一个是day2上午的第五题 先说day1下午的第二题吧 我们显然不能O(n^2)的dp,所以我们只能算贡献 首先对于任意一个边界点而言,他对答案的贡献路 ...

  5. 【洛谷】xht模拟赛 题解

    前言 大家期待已久并没有的题解终于来啦~ 这次的T1和HAOI2016撞题了...深表歉意...表示自己真的不知情... 天下的水题总是水得相似,神题各有各的神法.--<安娜·卡列妮娜> ...

  6. 10.6-10.7 牛客网NOIP模拟赛题解

    留个坑... upd:估计这个坑补不了了 如果还补不了就删了吧

  7. 2019 蓝桥杯国赛 B 组模拟赛 题解

    标签 ok #include<bits/stdc++.h> using namespace std; /* 求阶乘 去除尾部0 每次求阶乘时:结果去除尾0,并对 1e6取余 */ type ...

  8. 『7.5 NOIP模拟赛题解』

    T1 Gift Description ​ 人生赢家老王在网上认识了一个妹纸,然后妹纸的生日到了,为了表示自己的心 意,他决定送她礼物.可是她喜爱的东西特别多,然而他的钱数有限,因此他想 知道当他花一 ...

  9. 『7.3 NOIP模拟赛题解』

    T1 gift Description ​ 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物. ​ 商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值Wi(每种礼物的喜 ...

随机推荐

  1. Postman官方文档翻译

    本文根据官方文档,为千夜同学的翻译做了一个目录 启动Postman Postman的安装和升级 发送第一个请求 创建第一个集合 Postman导航 Postman账号 同步 设置 新按钮 发送API请 ...

  2. jQuery的$符号

    jQuery使用$的原因是: 书写简洁, 相对于其他字符与众不同, 容易被记住. JQuery占用了两个变量: $ 和 jQuery. 当在代码中打印 $ 和 jQuery时: <script ...

  3. ie8中使用ajax总是进入error解决办法

    试过很多种方法有的说是因为要把cache:false,但是本人遇到的情况可能不同最终结局的办法是 引用的是<script src="js/jquery-1.4.2.min.js&quo ...

  4. 如何应对POST方式下载文件的接口

    jQuery的下载,需要承载一个插件去做 今天遇到一个问题,后台给的接口由于需要前端传入过多的参数,只能接受用post去下载文件.正常情况下第一反应是用xhr对象去发送post请求,结果并没有触发浏览 ...

  5. 在react项目中启用mobx的配置方法

    1.安装插件 npm install --save-dev babel-preset-mobx mobx mobx-react 2.package.json配置 "dependencies& ...

  6. 使用Pull解析器生成XML文件

    有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...

  7. docker网络(3)

    docker网络介绍 大量的互联网应用服务需要多个服务组件,这往往需要多个容器之间通过网络通信进行相互配合. docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 host 的网络. ...

  8. Product - 产品经理 - 转型

    特别说明 本文是已读书籍的学习笔记和内容摘要,原文内容有少部分改动,并添加一些相关信息,但总体不影响原文表达. - ISBN: 9787568041591 - https://book.douban. ...

  9. MySQL数据操作语句精解

    用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句. 言外之意,就是对数据进行修改.在标准的SQL中有3个语句,它们是INS ...

  10. python3速查参考- python基础 5 -> 常用的文件操作

    文件的打开方式 打开方式 详细释义 r  以只读方式打开文件.文件的指针会放在文件的开头.这是默认模式. rb  以二进制只读方式打开一个文件.文件指针会放在文件的开头. r+  以读写方式打开一个文 ...