l洛谷 NOIP提高组模拟赛 Day2
## T1
区间修改+单点查询。差分树状数组。
#include<iostream>
#include<cstdio>
#include<cstring> using namespace std;
const int MAXN = ; inline int rd(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?:;ch=getchar();}
while(isdigit(ch)) {x=(x<<)+(x<<)+ch-'';ch=getchar();}
return f?x:-x;
} void out(int x){
if(!x) return;
out(x/);
putchar(''+x%);
} int f[MAXN],n,m,ans; void update(int x,int k){
for(;x<=n;x+=x&-x) f[x]+=k;
} int query(int x){
int ret=;
for(;x;x-=x&-x) ret+=f[x];
return ret;
} int main(){
// freopen("Agent3.in","r",stdin);
// freopen("T1.out","w",stdout);
n=rd(),m=rd();
int x,y,op;
while(m--){
op=rd();
if(op==) {
x=rd();y=rd();
update(x,);update(y+,-);
}
else{
x=rd();ans=query(x);if(!ans) putchar('');
else out(query(x));putchar('\n');
}
}
return ;
}
## T2
比赛的时候算错复杂度,以为是个模拟。拿了$60pts$的暴力分。正解要用双向链表,不太想写,留坑。
## T3
状压$dp$,考试的时候题意中有句话不理解,写了三份代码,结果发现都过不了大样例 ($wtf??$),最后快结束时瞎交了一份,结果拿了90。。最后发现中间有个地方没开$long long$ ,亏死。设$dp[S][i]$表示现在选的集合为$S$,最后一个选的为$i$的最大收益,然后再枚举一个集合外的元素$j$,进行转移。时间复杂度$O(2^n*n)$
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#define int long long using namespace std;
const int MAXN = ;
typedef long long LL; inline int rd(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {f=ch=='-'?:;ch=getchar();}
while(isdigit(ch)) {x=(x<<)+(x<<)+ch-'';ch=getchar();}
return f?x:-x;
} int n,m,K,t[MAXN];
int val[MAXN],ex[MAXN][MAXN];
LL dp[<<MAXN][MAXN],ans; inline void MAX(){
int S=;
for(register int i=;i<=m;i++) S|=(<<(t[i]-));
for(register int i=;i<=m;i++) ans=max(ans,dp[S][t[i]]);
} void dfs(int x,int now){
if(now==m) {MAX();return;}
if(x==n+) return;
t[now+]=x;dfs(x+,now+);
t[now+]=;dfs(x+,now);
} signed main(){
// memset(dp,-0x3f,sizeof(dp));
n=rd(),m=rd();K=rd();int x,y;
for(register int i=;i<=n;i++) val[i]=rd();
for(register int i=;i<=K;i++){
x=rd(),y=rd();
ex[x][y]+=rd();
}dp[][]=;
for(register int i=;i<=n;i++) dp[<<(i-)][i]=val[i];
for(register int S=;S<<<n;S++)
for(register int i=;i<=n;i++)if((S&(<<(i-))))
for(register int j=;j<=n;j++)if(!(S&(<<(j-))))
dp[S|(<<(j-))][j]=max(dp[S|(<<(j-))][j],dp[S][i]+val[j]+ex[i][j]);
// cout<<ans<<endl;
dfs(,);
cout<<ans<<endl;
return ;
}
l洛谷 NOIP提高组模拟赛 Day2的更多相关文章
- 洛谷 NOIP提高组模拟赛 Day1
传送门 ## $T1$ 一道结论题,设原来A队能力最大的是x,那么A队的选择方案就是$2^{x-1}$,B队的选择方案就是$(2^{n-x}-1)$种,因为不能不选.其中$1\leq x\leq n$ ...
- 【洛谷】NOIP提高组模拟赛Day2【动态开节点/树状数组】【双头链表模拟】
U41571 Agent2 题目背景 炎炎夏日还没有过去,Agent们没有一个想出去外面搞事情的.每当ENLIGHTENED总部组织活动时,人人都说有空,结果到了活动日,却一个接着一个咕咕咕了.只有不 ...
- HGOI20180815 (NOIP 提高组模拟赛 day2)
Day 2 rank 11 100+35+30=165 本题是一道数论题,求ax+by=c的正整数对(x,y) x>=0并且y>=0 先说下gcd: 求a,b公约数gcd(a,b) 如gc ...
- 【洛谷】NOIP提高组模拟赛Day1【组合数学】【贪心+背包】【网络流判断是否满流以及流量方案】
U41568 Agent1 题目背景 2018年11月17日,中国香港将会迎来一场XM大战,是世界各地的ENLIGHTENED与RESISTANCE开战的地点,某地 的ENLIGHTENED总部也想派 ...
- 10-18 noip提高组模拟赛(codecomb)T1倍增[未填]
T1只想到了找环,> <倍增的思想没有学过,所以看题解看得雨里雾里的(最近真的打算学一下! 题目出的挺好的,觉得noip极有可能出现T1T2T3,所以在此mark 刚开始T1以为是模拟,还 ...
- noip提高组模拟赛(QBXT)T2
T2count题解 [ 问题描述]: 小 A 是一名热衷于优化各种算法的 OIER,有一天他给了你一个随机生成的 1~n 的排列, 并定 义区间[l,r]的价值为: \[ \huge C_{l,r}= ...
- 10-18 noip提高组模拟赛(codecomb)T2贪心
T2:找min:一直找最小的那个,直到a[i]-x+1小于0,就找次小的,以此类推: 求max,也是一样的,一直到最大的那个,直到次大的比之前最大的大,就找次大的: 这个模拟,可以用上priority ...
- HGOI2010816 (NOIP 提高组模拟赛 day1)
Day1 210pts(含T1莫名的-10pts和T3莫名的-30pts) 100+70+40=210 rank 29 这道题第一眼看是字符串匹配问题什么KMP啊,又想KMP不会做啊,那就RK Has ...
- newcoder NOIP提高组模拟赛C题——保护
我是发了疯才来写这道题的 我如果用写这道题的时间去写dp,我估计我能写上三四道 可怕的数据结构题 题目 这道题的鬼畜之处在于实在是不太好写 我们看到要求离树根尽量的近,所以我们很容易就能想到树上倍增, ...
随机推荐
- 20140425 malloc和new不同 dynamic何时返回0
1.malloc/free和new/delete区别 http://blog.csdn.net/hackbuteer1/article/details/6789164 相同点:都可用于申请动态内存和释 ...
- 极限学习机(Extreme Learning Machine)学习笔记
最近研究上了这个一个东西--极限学习机. 在很多问题中,我大多会碰到两个问题,一个是分类,另一个就是回归.简单来说,分类是给一串数打个标签,回归是把一串数变为一个数. 在这里我们需要处理的数据一般维度 ...
- DRF的三大认证组件
目录 DRF的三大认证组件 认证组件 工作原理 实现 权限组件 工作原理 实现 频率组件 工作原理 实现 三种组件的配置 DRF的三大认证组件 认证组件 工作原理 首先,认证组件是基于BaseAuth ...
- python 13 字符编码
转自 http://www.cnblogs.com/BeginMan/p/3166363.html 一.字符编码中ASCII.Unicode和UTF-8的区别 点击阅读:http://www.cnbl ...
- pycharm快捷键表
快捷键 作用 ctrl(command)+c 复制 ctrl+v 粘贴 ctrl+z 撤销 ctrl+x 剪切,默认整行 ctrl+a 全选 ctrl+f 查找:选中批量修改 shift+ctrl+z ...
- BCZM : 1.7
光影切割 在一个平面内有一个矩形区域,直线穿过矩形可以将其分割为不同的区域,且在这个平面中不存在三条直线相交一点的情况.求当有N条直线穿过矩形时,它被分割为多少个区域? 解法一: 平面倍划分 ...
- window 系统上传文件到linux 系统出现dos 格式换行符
Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行,所以为了避免这种情况的发生,我们可以 ...
- leetcode-212-单词搜索②
题目描述: 第一次提交:(超出时间限制) class Solution: def findWords(self, board: List[List[str]], words: List[str]) - ...
- Parse-轻松构建移动APP的后台服务
目前正在开发的产品告一段落,有时间总结下经验,也顺便分享一下我们主要使用的平台-Parse. 什么是Parse? Parse是一群美国人开发的专为移动APP服务的云计算平台,与现有的其他云计算平台相 ...
- 4_2.springboot2.x配置之springmvc自动配置
1.Spring MVC auto-configuration 查看官方文档: Spring Boot为Spring MVC提供了自动配置,适用于大多数应用程序. 自动配置在Spring的默认值之上添 ...