上星期打的...题有点水,好多人都AK了

  T1排个序贪心就好了

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=,inf=1e9;
struct poi{int e,s;}a[maxn];
int n,m,s,k,x,y,cnt;
int cp[maxn];
ll ans;
void read(int &k)
{
int f=;k=;char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(c<=''&&c>='')k=k*+c-'',c=getchar();
k*=f;
}
inline bool cmp(poi a,poi b){return a.e==b.e?a.s>b.s:a.e<b.e;}
inline bool cmp2(poi a,poi b){return a.s>b.s;}
int main()
{
freopen("express.in","r",stdin);
freopen("express.out","w",stdout);
read(n);read(m);read(s);read(k);
for(int i=;i<=m;i++)
{
read(x);read(y);
if(y<=)continue;
a[++cnt].e=x;a[cnt].s=y-;
}
sort(a+,a++cnt,cmp);
for(int i=;i<=cnt;i++)if(a[i].e!=a[i-].e)cp[a[i].e]=i;
for(int i=;i<=n;i++)
{
if(!cp[i])return puts("-23333333"),;
int kk=k;
for(int j=cp[i];j<=cnt&&a[j].e==i;j++)
if(kk>)
{
if(!s)return puts("-23333333"),;
s--;kk-=a[j].s;ans+=a[j].s;a[j].s=;
}
if(kk>)return puts("-23333333"),;
}
if(s)
{
sort(a+,a++cnt,cmp2);
for(int i=;i<=s;i++)
ans+=a[i].s;
}
printf("%lld\n",ans);
return ;
}

  T2我写的方法就太鶸了,所以只说某个很妙的做法(%%%腾腾太强辣!)

  用一个指针扫,扫到某个括号就跳到对应的括号然后反向,遇到字符输出,模拟一下就知道是非常正确的

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=,inf=1e9;
char s[maxn];
int n,top;
int st[maxn],op[maxn];
void read(int &k)
{
int f=;k=;char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(c<=''&&c>='')k=k*+c-'',c=getchar();
k*=f;
}
int main()
{
freopen("unknown.in","r",stdin);
freopen("unknown.out","w",stdout);
scanf("%s",s+);n=strlen(s+);
for(int i=;i<=n;i++)
{
if(s[i]=='(')st[++top]=i;
if(s[i]==')')op[i]=st[top],op[st[top--]]=i;
}
for(int i=,st=;i<=n;i+=st)
if(s[i]=='('||s[i]==')')i=op[i],st=-st;
else printf("%c",s[i]);
return ;
}

  T3状压,枚举子集的子集是3^n的,于是可以过

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn=;
int n,m,K,x,y;
int f[<<maxn];
bool v[maxn][maxn],mp[<<maxn];
void read(int &k)
{
int f=;k=;char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(c<=''&&c>='')k=k*+c-'',c=getchar();
k*=f;
}
int main()
{
freopen("prison.in","r",stdin);
freopen("prison.out","w",stdout);
read(n);read(m);read(K);
for(int i=;i<=m;i++)read(x),read(y),v[x][y]=v[y][x]=;
int state=(<<n)-;
for(int i=;i<=state;i++)
{
int cnt=;
for(int j=;j<=n;j++)
if(i&(<<(j-)))
for(int k=;k<j;k++)
if(i&(<<(k-)))
cnt+=v[j][k];
if(cnt<=K)mp[i]=;
}
memset(f,,sizeof(f));f[]=;
for(int i=;i<=state;i++)
{
int S=i^state;
for(int j=S;j;j=(j-)&S)
if(mp[j])f[i|j]=min(f[i|j],f[i]+);
}
printf("%d\n",f[state]);
return ;
}

NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第一轮Day2题解的更多相关文章

  1. NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第二轮Day2题解

    肝了两题... T1一眼题,分解质因数,找出2的个数和5的个数取min输出 #include<iostream> #include<cstring> #include<c ...

  2. WC2019 全国模拟赛第一场 T1 题解

    由于只会T1,没法写游记,只好来写题解了... 题目链接 题目大意 给你一个数列,每次可以任取两个不相交的区间,取一次的贡献是这两个区间里所有数的最小值,求所有取法的贡献和,对 \(10^9+7\) ...

  3. 【前行】◇第3站◇ 国庆训练营·OI制模拟赛

    [第3站] 国庆训练营·OI制模拟赛Ⅰ 怀着冲刺提高组400的愿望来到这个very small but very interesting 的训练营QwQ 在北大dalao的带领下开始了第一场OI模拟赛 ...

  4. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  5. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  6. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

  7. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  8. Java 第十一届 蓝桥杯 省模拟赛 小明的城堡

    小明用积木搭了一个城堡. 为了方便,小明在搭的时候用的是一样大小的正方体积本,搭在了一个 n 行 m 列的方格图上,每个积木正好占据方格图的一个小方格. 当然,小明的城堡并不是平面的,而是立体的.小明 ...

  9. Java 第十一届 蓝桥杯 省模拟赛 梅花桩

    小明每天都要练功,练功中的重要一项是梅花桩. 小明练功的梅花桩排列成 n 行 m 列,相邻两行的距离为 1,相邻两列的距离也为 1. 小明站在第 1 行第 1 列上,他要走到第 n 行第 m 列上.小 ...

随机推荐

  1. hdu2094产生冠军(思维题)

    产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. 手机APP测试如何进行兼容性测试?

    Android App兼容性测试是一个比较重要的App评价内容,实际上兼容性测试不仅仅和测试人员相关,在开发阶段就应当着重考虑,因为兼容性问题是除了实现App本身要求的功能后,必须要关注.而且至关重要 ...

  3. (C#)代理模式

    1.代理模式 为其他对象提供代理以控制对这个对象的访问. 远程代理:为一个对象在不同的地址空间提供举报代表.这样可以隐藏一个对象在不同地址空间的事实. 虚拟代理:是依据需要创建开销很大的对象.通过它来 ...

  4. C if语句判断年龄

    #include <stdio.h> int main(int argc, char **argv) { //新建两个变量给变量赋值跟初始化:const int a=45;int c=0; ...

  5. python 终级篇 django ---ORM操作

                                       一般操作                                                          必会的 ...

  6. smartgit 使用

    合并分支

  7. java实现屏幕共享的小程序

          最近在做软件软件工程的课程设计,做一个用于实验室的屏幕监控系统,参考各种前人代码,最后领悟之后要转换自己的代码,初学者都是这样模仿过来的.       说到屏幕监控系统,有教师断和学生端, ...

  8. 如果jsp表单元素的值为空,如何避免null出现在页面上?

    可以写一个简单的函数对空值进行处理,判断值是否为空,如果是空就返回空字符串.实例代码如下: <%! String blanknull(String s) { return (s == null) ...

  9. 第三次寒假作业 sketch 了解

    什么是sketch? sketch 是一种基于散列的数据结构,可以在高速网络环境中,实时地存储流量特征信息,只占用较小的空间资源,并且具备在理论上可证明的估计精度与内存的平衡特性. 通过设置散列函数, ...

  10. 阅读 用P4对数据平面进行编程

    引言 关于题目,对数据平面进行编程,在之前读过the road to SDN,软件定义网络的思想在于数控分离,其对网络行为的编程暂时只局限于网络控制平面.其转发平面在很大程度上受制于功能固定的包处理硬 ...