u,v,w。

这场考过。


T1 u

差分裸题

#include<bits/stdc++.h>
using namespace std;
const int N=5000;
int n,m;
long long a[N][N],b[N][N],f[N][N];
long long ans=0;
int _max(int a,int b)
{
return a>b?a:b;
}
int _min(int a,int b)
{
return a<b?a:b;
}
int read()
{
int s=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while('0'<=ch&&ch<='9'){s=(s<<1)+(s<<3)+ch-'0';ch=getchar();}
return s*w;
}
int main()
{
n=read();m=read();
for(int i=1,r,c,l,s;i<=m;i++)
{
r=read();
c=read();
l=read();
s=read();
a[r][c]+=s;
a[r+l][c+l]-=s;
b[r+l][c]-=s;
b[r+l][l+c]+=s;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
b[i][j+1]+=b[i][j];
a[i][j]+=a[i-1][j-1];
}
}
for(int j=1;j<=n;j++)
{
for(int i=1;i<=n;i++)
{
a[i][j]+=a[i-1][j];
b[i][j]+=b[i-1][j];
}
}
for(int j=1;j<=n;j++)
{
for(int i=1;i<=n;i++)
{
f[i][j]+=a[i][j]+b[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
ans^=f[i][j];
}
}
printf("%lld\n",ans);
return 0;
}

T2 状压DP+分段记忆化(数组+map)

//不是我代码,转自网络,侵删
#include <bits/stdc++.h>
using namespace std;
map <int,double > mp;
int n,k;
char s[100];
double f[1<<25]; double dfs(int node,int tot)
{
if(tot== n - k)
return 0;
if(tot > 24 && mp.find(node)!= mp.end())
return mp[node];
if(tot <= 24 && f[node]!= -1)
return f[node];
double sum= 0;
for(int i=1;i<= (tot >>1);i++)
{
int color1= (node >> (i-1)) &1;
int color2= (node >> (tot - i)) &1;
int node1= (node >>1) & (~ ((1 << (i-1)) -1)) | (node & ((1 << (i-1)) -1));
int node2= (node >>1) & (~ ((1 << (tot - i)) -1)) | (node & ((1 << (tot - i)) -1));
sum += 2 * max(dfs(node1,tot -1) + color1,dfs(node2,tot -1) + color2) / tot;
}
if(tot &1)
{
int i= (tot +1) >>1;
int color= (node >> (i-1)) &1;
int st= (node >>1) & (~ ((1 << (i-1)) -1)) | (node & ((1 << (i-1)) -1));
sum += (dfs(st,tot -1) + color) / tot;
}
return (tot > 24)?mp[node]= sum:f[node]= sum;
} int main()
{
scanf("%d %d %s",&n,&k,s);
int node= 0;
for(int i= 0;i< (1 << 25);i++)
f[i]= -1;
for(int i=1;i<= n;i++)
node |= (s[i-1]== 'W') << (n - i);
node |= (1 << n);
printf("%.8f\n",dfs(node,n));
return 0;
}

T3 w

树形DP,f[u][0/1](二元组)表示u点上面的边反转/不反转的最少路径和最短路。

#include<bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f,N=300000;
struct bian
{
int nxt,to,w;
}
b[N];
int n,head[N],cnt;
pair<int,int> f[2][N];
void add(int x,int y,int w)
{
b[++cnt].nxt=head[x];
b[cnt].to=y;
b[cnt].w=w;
head[x]=cnt;
}
pair<int,int> pls(pair<int,int> a,pair<int,int> b)
{
return make_pair(a.first+b.first,a.second+b.second);
}
pair<int,int> min(pair<int,int> x,pair<int,int> y)
{
if(x.first<y.first)
return x;
else if(x.first>y.first)
return y;
else if(x.second<y.second)
return x;
else
return y;
}
void dfs(int x,int fa,int w)
{
pair<int,int> w1=make_pair(inf,inf);
pair<int,int> w2=make_pair(0,0);
for(int i=head[x];i;i=b[i].nxt)
{
if(b[i].to!=fa)
{
dfs(b[i].to,x,b[i].w);
pair<int,int> flag1=min(pls(w1,f[0][b[i].to]),pls(w2,f[1][b[i].to]));
pair<int,int> flag2=min(pls(w1,f[1][b[i].to]),pls(w2,f[0][b[i].to]));
w1=flag1;
w2=flag2;
}
}
if(w==1)
f[0][x]=make_pair(inf,inf);
else
f[0][x]=min(make_pair(w1.first+1,w1.second),w2);
if(w==0)
f[1][x]=make_pair(inf,inf);
else
f[1][x]=min(make_pair(w1.first,w1.second+1),make_pair(w2.first+1,w2.second+1));
}
int main()
{
scanf("%d",&n);
for(int i=1,from,to,c,d;i<n;i++)
{
scanf("%d%d%d%d",&from,&to,&c,&d);
if(d==2)
{
add(from,to,2);
add(to,from,2);
}
else
{
add(from,to,c!=d);
add(to,from,c!=d);
}
}
dfs(1,0,2);
printf("%d %d\n",f[0][1].first>>1,f[0][1].second);
return 0;
}

20210716考试-NOIP19的更多相关文章

  1. 20210716考试-NOIP16

    考场时Prim的 $i$ 写成 $k$ 100->0 rank1->rank23 T1 Star Way To Heaven 考场正解:假设你要二分答案,则几个圆组成几道"屏障& ...

  2. 全网独家MongoDB Certified DBA Associate考试认证视频

    该视频意在让所有学员一次通过考试,避免重复考试而承担的巨额考试费用! 目前MongDB发展迅猛,有赶超mysql,和oracle看齐的苗头.在这个时候MongoDB也适时的推出了官方的认证考试&quo ...

  3. 记lrd的高二上学期第五次调研考试

    河北某某中学的调研考试其实是很好玩的经历呢.可惜没有太多机会了. 背景: NOIP2016回来之后没有好好学文化课-.自习能翘就翘了,衡中特产学案自助没有好好写(说来我好像从来没被老师查到过,上课写学 ...

  4. 1009: [HNOI2008]GT考试

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MB Description 阿申准备报名参加GT考试,准考证号为N位数\(X_1X_ ...

  5. mysql练习题-查询同时参加计算机和英语考试的学生的信息-遁地龙卷风

    (-1)写在前面 文章参考http://blog.sina.com.cn/willcaty. 针对其中的一道练习题想出两种其他的答案,希望网友给出更多回答. (0) 基础数据 student表 +-- ...

  6. js封装用户选项传递给Servlet之考试系统二

    <%@ page language="java" import="java.util.*" contentType="text/html; ch ...

  7. js动态生成选项之考试系统(一)

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  8. 分享一个LiteDB做的简单考试系统辅助工具

    凌晨,被安排在公司值班,因为台风“灿鸿”即将登陆,风力太大,办公楼,车间等重要部分需要关注.所以无聊,那就分享一下,今天给朋友临时做的一个小的考试系统辅助工具吧.其实非常小,需求也很简单,但是可以根据 ...

  9. CCF考试

    第八次CCF考试记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四题的代码 第 ...

随机推荐

  1. nfs(2049)未授权访问

    apt install nfs-common 安装nfs客户端 showmount -e 192.168.244.128 查看nfs服务器上的共享目录 /666/share               ...

  2. YOLO-V4 实现口罩识别(附加数据、数据批量处理程序)

    一.YOLO-v4概念 如果想要了解和认识yolo-v4的基本概念,首先要提的就是它的基础版本yolo-v1,对于yolo来说,最经典的算是yolo-v3.如果想要了解它的由来和历史的话,可以自行搜索 ...

  3. JUC学习笔记(二)

    JUC学习笔记(一)https://www.cnblogs.com/lm66/p/15118407.html 1.Lock接口 1.1.Synchronized 1.1.1.Synchronized关 ...

  4. Linux远程访问控制

    目录 一.SSH远程管理 1.1.定义 1.2.配置OpenSSH服务端 二.sshd服务支持两种验证方式 2.1.密码验证 2.2.使用SSH客户端程序 ssh远程登录 scp远程复制 sftp安全 ...

  5. Mysql报错注入之floor报错详解

    一.简述 利用 select count(*),(floor(rand(0)*2))x from table group by x,导致数据库报错,通过 concat 函数,连接注入语句与 floor ...

  6. VS+Qt+Halcon——显示图片,实现鼠标缩放、移动图片

    摘要 本篇博文记录一下,用VS+Qt+Halcon实现对图片的读取以及鼠标缩放,移动(鼠标事件调用了halcon自带的算子)的过程.以及遇到的坑..... 先来看一下动态效果图: 主要控件: 添加一个 ...

  7. 【转】 C#中检查网络是否连通的二种方法

      1 using System;  2 using System.Collections.Generic;  3 using System.Text;  4 //方法一  5 using Syste ...

  8. Java 并发:Lock 框架详解

    摘要: 我们已经知道,synchronized 是java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多 ...

  9. Servlet体系及方法

    时间:2016-11-11 15:07 --Servlet体系Servlet(interface):    实现类:GenericServlet.HttpServletServletConfig(in ...

  10. python进阶(20) 正则表达式的超详细使用

    正则表达式   正则表达式(Regular Expression,在代码中常简写为regex. regexp.RE 或re)是预先定义好的一个"规则字符率",通过这个"规 ...