传送门

## $T1$

一道结论题,设原来A队能力最大的是x,那么A队的选择方案就是$2^{x-1}$,B队的选择方案就是$(2^{n-x}-1)$种,因为不能不选。其中$1\leq x\leq n$,那么根据乘法原理,最后的答案就是 $\sum\limits^{n-1}_{x=1}2^{x-1}*(2^{n-x}-1)$,化简可得 $ans=n*2^{n-1}-(2^{n}-1)$,然后一个快速幂就行了。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#define int long long using namespace std;
const int mod = 1e9+;
typedef long long LL; int n; int fast_pow(int x,int y){
int ret=;
for(;y;y>>=){
if(y&) ret=(LL)ret*x%mod;
x=(LL)x*x%mod;
}
return ret;
} signed main(){
scanf("%lld",&n);
int ans=(n*fast_pow(,n-)%mod-(fast_pow(,n)-)%mod+mod)%mod;
cout<<ans<<endl;
return ;
}

## $T2$

一道比较套路的题吧,首先肯定是先按每个物品的消失时间排序,然后就可以跑背包了,$f[i][j]$表示到了第$i$个物品,时间为$j$的最大收益,时间复杂度$O(n*MAX\_D)$。输出方案考试时候想了挺久。。。其实就是倒着走回去。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm> 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;
} int n,ans,lx,ly,all[MAXN],cnt;
int f[MAXN][]; struct Node{
int t,w,d,id;
}data[MAXN]; inline bool cmp(Node A,Node B){
return A.d<B.d;
} int main(){
// freopen("T2.out","w",stdout);
n=rd();
for(int i=;i<=n;i++)
data[i].t=rd(),data[i].d=rd(),data[i].w=rd(),data[i].id=i;
sort(data+,data++n,cmp);
for(int i=;i<=n;i++)
for(int j=;j<data[i].d;j++){
f[i][j]=f[i-][j];
if(j>=data[i].t)
f[i][j]=max(f[i][j],f[i-][j-data[i].t]+data[i].w);
}
for(int i=;i<=data[n].d;i++)
if(f[n][i]>ans) {
ans=f[n][i];
ly=i;
}
lx=n;cout<<ans<<endl;
for(int i=n;i;i--)
for(int j=ly;j>=;j--)
if(f[i][j]==ans) {
if(f[i-][j]!=f[i][j]) ans-=data[i].w,all[++cnt]=data[i].id;
ly=j;break;
}
printf("%d\n",cnt);
for(int i=cnt;i;i--) printf("%d ",all[i]);
return ;
}

## $T3$

考试的时候没有做出来,后来经过$G \color{red} {hostCai}$神犇的指点,才知道用网络流做,开一个超级源点$S$和一个超级汇点$T$,然后将每个点拆成左部点和右部点,$S$向左部点连流量为$a[i]$的点,表示每个点至多能向其他点给出$a[i]$的能量,左部点向能到达的右部点连流量为$inf$的边(注意要连自己),右部点向汇点连流量为$b[i]$的边,表示最多收到$b[i]$的能量,然后跑一个最大流,看所有右部点到汇点的边是否满流,不满说明无解。再看每个左部点到所有右部点的反边的流量即为答案。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#define czq namespace using czq std;
const int MAXN = ;
const int MAXM = ;
const int inf = 0x3f3f3f3f; 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,head[MAXN],to[MAXM],val[MAXM],nxt[MAXM];
int cnt=,a[MAXN],b[MAXN],S,T,cur[MAXN],d[MAXN],ans[MAXN][MAXN];
queue<int> Q; inline void add(int bg,int ed,int w){
to[++cnt]=ed,nxt[cnt]=head[bg],val[cnt]=w,head[bg]=cnt;
to[++cnt]=bg,nxt[cnt]=head[ed],val[cnt]=,head[ed]=cnt;
} bool bfs(){
memset(d,,sizeof(d));
while(Q.size()) Q.pop();
Q.push(S);d[S]=;
while(Q.size()){
int x=Q.front();Q.pop();
for(register int i=head[x];i;i=nxt[i]){
int u=to[i];
if(!d[u] && val[i]){
d[u]=d[x]+;
if(u==T) return true;
Q.push(u);
}
}
}
return false;
} int dinic(int x,int flow){
if(x==T) return flow;
int res=flow,k;
for(register int &i=cur[x];i && res;i=nxt[i]){
int u=to[i];
if(val[i] && d[u]==d[x]+){
k=dinic(u,min(res,val[i]));
if(!k) d[u]=;
val[i]-=k;res-=k;val[i^]+=k;
// cout<<k<<endl;
}
}
return flow-res;
} int main(){
n=rd(),m=rd();int x,y;S=*n+,T=*n+;
for(int i=;i<=n;i++) a[i]=rd(),add(S,i,a[i]),add(i,i+n,inf);
for(int i=;i<=n;i++) b[i]=rd(),add(i+n,T,b[i]);
for(int i=;i<=m;i++){
x=rd(),y=rd();
add(x,y+n,inf);
add(y,x+n,inf);
}
while(bfs()) {memcpy(cur,head,sizeof(head));dinic(S,inf);}
for(register int i=head[T];i;i=nxt[i])
if(val[i^]) {puts("NO");return ;}
puts("YES");
for(register int i=;i<=n;i++)
for(register int j=head[i];j;j=nxt[j]){
int u=to[j];
ans[i][u-n]+=val[j^];
}
for(register int i=;i<=n;i++){
for(register int j=;j<=n;j++)
printf("%d ",ans[i][j]);
putchar('\n');
}
return ;
}

洛谷 NOIP提高组模拟赛 Day1的更多相关文章

  1. l洛谷 NOIP提高组模拟赛 Day2

    传送门 ## T1 区间修改+单点查询.差分树状数组. #include<iostream> #include<cstdio> #include<cstring> ...

  2. 【洛谷】NOIP提高组模拟赛Day1【组合数学】【贪心+背包】【网络流判断是否满流以及流量方案】

    U41568 Agent1 题目背景 2018年11月17日,中国香港将会迎来一场XM大战,是世界各地的ENLIGHTENED与RESISTANCE开战的地点,某地 的ENLIGHTENED总部也想派 ...

  3. HGOI2010816 (NOIP 提高组模拟赛 day1)

    Day1 210pts(含T1莫名的-10pts和T3莫名的-30pts) 100+70+40=210 rank 29 这道题第一眼看是字符串匹配问题什么KMP啊,又想KMP不会做啊,那就RK Has ...

  4. [LUOGU] NOIP提高组模拟赛Day1

    题外话:以Ingress为题材出的比赛好评,绿军好评 T1 考虑枚举第\(i\)个人作为左边必选的一个人,那左边剩余\(i-1\)个人,选法就是\(2^{i-1}\),也就是可以任意选或不选,右侧剩余 ...

  5. 【洛谷】NOIP提高组模拟赛Day2【动态开节点/树状数组】【双头链表模拟】

    U41571 Agent2 题目背景 炎炎夏日还没有过去,Agent们没有一个想出去外面搞事情的.每当ENLIGHTENED总部组织活动时,人人都说有空,结果到了活动日,却一个接着一个咕咕咕了.只有不 ...

  6. 计蒜客 2017 NOIP 提高组模拟赛(四)Day1 T2 小X的密室

    https://nanti.jisuanke.com/t/17323 小 X 正困在一个密室里,他希望尽快逃出密室. 密室中有 N 个房间,初始时,小 X 在 1号房间,而出口在 N号房间. 密室的每 ...

  7. 10-18 noip提高组模拟赛(codecomb)T1倍增[未填]

    T1只想到了找环,> <倍增的思想没有学过,所以看题解看得雨里雾里的(最近真的打算学一下! 题目出的挺好的,觉得noip极有可能出现T1T2T3,所以在此mark 刚开始T1以为是模拟,还 ...

  8. 10-18 noip提高组模拟赛(codecomb)T2贪心

    T2:找min:一直找最小的那个,直到a[i]-x+1小于0,就找次小的,以此类推: 求max,也是一样的,一直到最大的那个,直到次大的比之前最大的大,就找次大的: 这个模拟,可以用上priority ...

  9. 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 ...

随机推荐

  1. UVA-10200-Prime Time-判断素数个数(打表预处理)+精度控制

    题意: 给出a.b区间,判断区间内素数所占百分比 思路: 注意提前打表和控制精度1e-8的范围足够用了 细节: 精度的处理 判断素数的方法(且返回值为bool) 数据类型的强制转换 保存素数个数 提前 ...

  2. 内置Jetty配置JSP支持过程中的常见报错

    目录 1. 常见报错及解决 1.1 JSP support not configured 1.2 JSTL标签解析 1.3 JSP编译 1.4 JSP实现依赖 1.5 EL表达式支持 2. 小结 1. ...

  3. python包下载路径

    python所有包.模块镜像站 https://www.lfd.uci.edu/~gohlke/pythonlibs/

  4. 数组模拟stack

    package com.cxy.springdataredis.data; import java.util.Scanner; public class StackDemo { public stat ...

  5. shell对比两个目录中有哪些文件不同

    参考:https://www.cnblogs.com/liyuchuan/p/10756066.html 目录结构: /data/dir1 subdir/ subfile /data/dir2 sub ...

  6. SpringCloudBus

    不重启微服务的情况下更新配置 配置服务端 tensquare_config配置依赖 <dependency> <groupId>org.springframework.clou ...

  7. 阿里云在云栖大会发布SaaS加速器3.0版最新成果,让天下没有难做的SaaS

    2019年杭州·云栖大会顺利落幕,超过6万人次观展,200余位顶尖科学家分享了前沿技术.作为“阿里云不做SaaS”,坚持“被集成”战略的落地体现,阿里云SaaS加速器在云栖大会现场发布了SaaS加速器 ...

  8. VC++ COMBO BOX控件的使用

    1.你在编辑状态下点那个控件的向下的三角形,就出冒出来一个可以调高度的东东.将高度调高,否则在执行时会不能显示下拉选项.   2.为combo box添加选项,在编辑状态下选combo box控件的属 ...

  9. JS调用C++

    1.注册C++函数. //注册回调函数宏 //根据不同需要支持注册两个函数原型,注意CONNECT_JS_CALL_SIMPLE_HANDLER中注册的函数 //需要提前和HTML调用协调好,参数必须 ...

  10. python定时任务模块APScheduler

    一.简单任务 定义一个函数,然后定义一个scheduler类型,添加一个job,然后执行,就可以了 5秒整倍数,就执行这个函数 # coding:utf-8 from apscheduler.sche ...