NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第一轮Day2题解
上星期打的...题有点水,好多人都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题解的更多相关文章
- NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第二轮Day2题解
肝了两题... T1一眼题,分解质因数,找出2的个数和5的个数取min输出 #include<iostream> #include<cstring> #include<c ...
- WC2019 全国模拟赛第一场 T1 题解
由于只会T1,没法写游记,只好来写题解了... 题目链接 题目大意 给你一个数列,每次可以任取两个不相交的区间,取一次的贡献是这两个区间里所有数的最小值,求所有取法的贡献和,对 \(10^9+7\) ...
- 【前行】◇第3站◇ 国庆训练营·OI制模拟赛
[第3站] 国庆训练营·OI制模拟赛Ⅰ 怀着冲刺提高组400的愿望来到这个very small but very interesting 的训练营QwQ 在北大dalao的带领下开始了第一场OI模拟赛 ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
小明用积木搭了一个城堡. 为了方便,小明在搭的时候用的是一样大小的正方体积本,搭在了一个 n 行 m 列的方格图上,每个积木正好占据方格图的一个小方格. 当然,小明的城堡并不是平面的,而是立体的.小明 ...
- Java 第十一届 蓝桥杯 省模拟赛 梅花桩
小明每天都要练功,练功中的重要一项是梅花桩. 小明练功的梅花桩排列成 n 行 m 列,相邻两行的距离为 1,相邻两列的距离也为 1. 小明站在第 1 行第 1 列上,他要走到第 n 行第 m 列上.小 ...
随机推荐
- 「日常训练」Equation(HDU-5937)
题意与分析 时隔一个月之后来补题.说写掉的肯定会写掉. 题意是这样的:给1~9这些数字,每个数字有\(X_i\)个,问总共能凑成多少个不同的等式\(A+B=C\)(\(A,B,C\)均为1位,\(1+ ...
- MySQL☞upper函数
upper(列名/字符串):把小写字母改为大写字母 格式: select upper(列名/字符串) from 表名 如下图:
- NGUI组件整理总结
一图流: 注意: private void RClickUI(Vector3 newPos) { this.gameObject.SetActive(true); this.transform.loc ...
- 搜索二维矩阵 II
描述 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数. 这个矩阵具有以下特性: 每行中的整数从左到右是排序的. 每一列的整数从上到下是排序的. 在每一行或每一列中没有重复的整数. 样例 ...
- leetcode-对称二叉树
对称二叉树 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2, ...
- spark提交任务的两种的方法
在学习Spark过程中,资料中介绍的提交Spark Job的方式主要有两种(我所知道的): 第一种: 通过命令行的方式提交Job,使用spark 自带的spark-submit工具提交,官网和大多数参 ...
- 小程序之web-view打开外部链接
小程序之web-view - 传送门 web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面.个人类型与海外类型的小程序暂不支持使用. 一:小程序使用web-view打开链接的前 ...
- PCB各层介绍及AD软件画PCB时的规则
好久没画过板了,最近因为工作关系,硬件软件全部得自己来,不得不重新打开闲置很久的AltiumDesigner.以前做过点乱七八糟的笔记,本来想回头翻看一下,结果哪儿也找不到,估计已经被不小心删掉了. ...
- 最小生成树——prim
prim:逐“点”生成最小生成树 与Dijkstra不同的是:加入点到生成树中,不要考虑与源点的距离,而是考虑与生成树的距离 #include <iostream> #include &l ...
- GPS定位,经纬度附近地点查询–C#实现方法
摘要:目前的工作是需要手机查找附近N米以内的商户,功能如下图数据库中记录了商家在百度标注的经纬度(如:116.412007,39.947545),最初想法以圆心点为中心点,对半径做 ...