A:正着DFS一次处理出每个节点有多少个优先级比他低的(包括自己)作为值v[i] 求A B 再反着DFS求优先级比自己高的求C

#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <algorithm>
#define EPS 1.0e-9
#define PI acos(-1.0)
#define INF 30000000
#define MOD 1000000007
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
#define pai pair<int,int>
//using ll = long long;
//using ull= unsigned long long;
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
typedef long long ll;
typedef unsigned long long ull;
const int maxn=;
int value[maxn];
int number[maxn];
vector<int> pe[maxn];
vector<int> pe2[maxn];
//queue<int> que;
void dfsgo(int x)
{
number[x]++;
int len=pe2[x].size();
for(int i=;i<len;i++)
{
if(!value[pe2[x][i]])
{
value[pe2[x][i]]=;
dfsgo(pe2[x][i]);
}
}
}
void dfsback(int x)
{
number[x]++;
int len=pe[x].size();
for(int i=;i<len;i++)
{
if(!value[pe[x][i]])
{
value[pe[x][i]]=;
dfsback(pe[x][i]);
}
}
}
int main()
{
int a,b,e,p;
int anser1=;
int anser2=;
int anser3=;
cin >> a >> b >> e >> p;
mem(value,);
mem(number,);
int now,to;
for(int i=;i<=p;i++)
{
scanf("%d %d",&now,&to);
pe[now].pb(to);
pe2[to].pb(now);
}
for(int i=;i<e;i++)
{
mem(value,);
value[i]=;
dfsgo(i);
}
//for(int i=0;i<e;i++)
//cout<<number[i]<<" ";
//cout<<endl;
for(int i=;i<e;i++)
{
int curr=number[i];
if(e-curr<a)
anser1++;
if(e-curr<b)
anser2++;
}
mem(number,);
for(int i=;i<e;i++)
{
mem(value,);
value[i]=;
dfsback(i);
} for(int i=;i<e;i++)
if(number[i]>b)
anser3++;
cout<<anser1<<endl<<anser2<<endl<<anser3;
}

C:哈夫曼树做法

D:签到题 直接暴力

E:递推DP

#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <algorithm>
#define EPS 1.0e-9
#define PI acos(-1.0)
#define INF 30000000
#define MOD 1000000007
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define pb push_back
#define pai pair<int,int>
//using ll = long long;
//using ull= unsigned long long;
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
typedef long long ll;
typedef unsigned long long ull;
ll mod=;
int a[];
ll ans[][];
ll anser=;
int main()
{
int n;
while(~scanf("%d",&n))
{
//mem(ans,0);
anser=;
int x;
ll minn;
ll maxn;
ll now;
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
ans[][a[]]=;
for(int i=;i<=n;i++)
for(int j=;j<=n+;j++)
{
minn=min(a[i-],j);
maxn=max(a[i-],j);
now=a[i];
if(now>minn)
{
ans[i][minn]=(ans[i][minn]+ans[i-][j])%mod;
}
if(now<maxn)
{
ans[i][maxn]=(ans[i][maxn]+ans[i-][j])%mod;
}
}
for(int i=;i<=n+;i++)
anser+=ans[n][i];
cout<<anser%mod<<endl;
}
}

F!:网络流

G:SG函数

H:问区间[x,y]中有多少数的二进制表示是ABAB..AB型或者A型的,其中A是n个1,B是m个0,n,m>0  直接暴力

J:凸包+扫描线+二分

给出l个大点和s个小点,问有多少小点被三个大点组成的三角形覆盖

#include <bits/stdc++.h>
#define MN 10010
#define pi acos(-1.0)
using namespace std;
typedef long long LL; struct Point {
LL x, y; Point(LL x = , LL y = ) : x(x), y(y) {} bool operator<(const Point &rhs) const { return x < rhs.x || (x == rhs.x && y < rhs.y); } Point operator-(const Point &rhs) const { return Point(x - rhs.x, y - rhs.y); } LL operator^(const Point &rhs) const { return x * rhs.y - y * rhs.x; }
} a[MN], p[MN]; int n, tot; void ConvexHull() {
sort(a + , a + + n);
tot = ;
for (int i = ; i <= n; i++) {
while (tot > && ((p[tot - ] - p[tot - ]) ^ (a[i] - p[tot - ])) <= )tot--;
p[tot++] = a[i];
}
int k = tot;
for (int i = n - ; i > ; i--) {
while (tot > k && ((p[tot - ] - p[tot - ]) ^ (a[i] - p[tot - ])) <= )tot--;
p[tot++] = a[i];
}
if (n > )tot--;
} bool Judge(Point A) {
int l = , r = tot - , mid;
while (l <= r) {
mid = (l + r) / ;
LL a1 = (p[mid] - p[]) ^ (A - p[]);
LL a2 = (p[mid + ] - p[]) ^ (A - p[]);
if (a1 >= && a2 <= ) {
if (((p[mid + ] - p[mid]) ^ (A - p[mid])) >= )return true;
return false;
} else if (a1 < ) {
r = mid - ;
} else {
l = mid + ;
}
}
return false;
} int s, ans = ; int main() {
cin >> n;
for (int i = ; i <= n; i++) cin >> a[i].x >> a[i].y;;
ConvexHull();
cin >> s;
Point t;
for (int i = ; i <= s; i++) {
cin >> t.x >> t.y;
if (Judge(t)) ans++;
}
printf("%d", ans);
return ;
}

Summer training round2 #5 (Training #21)的更多相关文章

  1. Summer training round2 #10(Training 30)

    A:签到题 B!:搜索+DP #include<bits/stdc++.h> #define mp make_pair #define pi pair<int,int> usi ...

  2. Summer training round2 #7 (Training #23)

    A:约瑟夫环 套公式 B:线性筛素数 C:投骰子 概率DP F:有权无向图的生成树(边最大值和最小值只差最小) 直接kruskal G:状压BFS或者双向BFS H:模拟题 I:几何题 J:高斯消元

  3. Summer training round2 #6 (Training #22)

    A:二分答案 如果中位数比目前的大就right=mid-1 else left=mid+1 C!:几何 G:优先队列贪心 #include <bits/stdc++.h> using na ...

  4. Summer training round2 #4 (Training #20)

    A!:UESTC1752 B!:找区间内L到R之间内的数的个数  权值分块加莫队 C!:给你一个哈斯图 去掉其中的几条边 要求输出字典序最大的拓扑排序:线段树模拟拓扑排序 D!:要求你找到最短路树并输 ...

  5. [WeChall] Training: Encodings I (Training, Encoding)

    Training: Encodings I (Training, Encoding) We intercepted this message from one challenger to anothe ...

  6. Summer training round2 #3

    A!:                    GTY系列题 B!:莫队加分块  GTY系列题 C!:线段树模拟拓扑排序(把普通的拓扑排序的栈操作改成线段树区间减一,查询区间最右侧的0的位置即可.注意一 ...

  7. Summer training round2 #1

    A:水 B:求两个三角形之间的位置关系:相交 相离 内含 ①用三个点是否在三角形内外判断    计算MA*MB.MB*MC.MC*MA的大小 若这三个值同号,那么在三角形的内部,异号在外部 #incl ...

  8. Summer training round2 #8(Training26)

    A:贪心DFS 先从最远的搜起 如果一个点的value>=2 就ans++ D:并查集 E:大模拟 F:快速幂 #include <bits/stdc++.h> using name ...

  9. Summer training round2 #9(Training28)

    A:签到题 C:模拟搜索题 #include <bits/stdc++.h> #include <cstring> #include <iostream> #inc ...

随机推荐

  1. GCC 9.2 2019年8月12日 出炉啦

    GNU 2019-08-12 发布了 GCC 9.2https://gcc.gnu.org/onlinedocs/9.2.0/ 有详细的说明 MinGW 上可用的 GCC 9.2 版本下载地址 [ m ...

  2. VMWare虚拟机->锁定文件失败,打不开磁盘的解决办法

    VMWare虚拟机提示:锁定文件失败,打不开磁盘的解决办法   如果使用VMWare虚拟机的时候突然系统崩溃蓝屏,有一定几率会导致无法启动,会提示:“锁定文件失败,打不开磁盘...或它所依赖的某个快照 ...

  3. Linux下python安装升级详细步骤 | Python2 升级 Python3 转载

    Linux下python升级步骤  Python2 ->Python3 多数情况下,系统自动的Python版本是2.x 或者yum直接安装的也是2.x 但是,现在多数情况下建议使用3.x 那么如 ...

  4. mysql命令行备份方法

    一.mysql备份 1.备份命令 格式:mysqldump -h主机IP -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql # 本地备份可以不添加端口和主机IP ...

  5. (转) Asp.net中实现同一用户名不能同时登录

    最近找了一些单点登录的,发现了这篇文章,貌似还是可以实现的,先保存了.   Web 项目中经常遇到的问题就是同一用户名多次登录的问题,相应的解决办法也很多,总结起来不外乎这几种解决办法: 将登录后的用 ...

  6. Linux基础训练题型(下)

    8.在题3的基础上,使用命令调换passwd文件里root位置和/bin/bash位置?即将所有的第一列和最后一列位置调换? 例: 默认:root:x:0:0:root:/root:/bin/bash ...

  7. Linux里添加用户的一些简单命令

    普通用户---------普通用户对应提示符$ 超级用户-----------超级用户对应提示符# 1.添加用户:useradd diqi 2.查看用户:tail -1 /etc/passwd 3.设 ...

  8. 单机版的mysql安装

    查是否安装了mysql:centos6:rpm -qa |grep mysqlcentos7:rpm -qa|grep mariadb或rpm -qa |grep mysql 有老的版本可以执行命令卸 ...

  9. @Transient注解的使用(不被序列化和作为临时变量存储)

    转自:https://blog.csdn.net/sinat_29581293/article/details/51810805 java 的transient关键字的作用是需要实现Serilizab ...

  10. 【Linux-驱动】RTC设备驱动架构

    在Linux操作系统中,RTC设备驱动的架构如下图所示: RTC设备驱动涉及的文件:class.c.rtc-dev.c : 建立/dev/rtc0设备,同时注册相应的操作函数.interface.c ...