目录 题目链接 题解 代码 题目链接 hihocoder#1513 : 小Hi的烦恼 题解 cdq 套cdq 套cdq 套cdq就完了呀 对每一科开n个bitset 表示该科目前i个有谁 每次查询都&起来就好了 代码 #include<cstdio> #include<bitset> #include<cstring> #include<algorithm> #define LL long long #define gc getchar() #def…
题目:http://hihocoder.com/problemset/problem/1513 自带的题解写得很好…… #include<cstdio> #include<cstring> #include<algorithm> #include<bitset> using namespace std; int rdn() { ;;char ch=getchar(); ;ch=getchar();} +ch-',ch=getchar(); return fx…
题目链接 五维偏序,对每一维维护bitset,表示哪儿为1(比它大),然后5个bitset与起来就能得到答案了. 具体实现可以用5*n个bitset,按排名搞个前缀和. 复杂度\(O(n^2/w)\)(本质是暴力的优化). //1284ms 565MB #include <cstdio> #include <cctype> #include <bitset> #include <algorithm> #define gc() getchar() const…
大意: n个人, 5门课, 给定每个人每门课的排名, 对于每个人输出有多少人5门课都比他差. 明显是个5维偏序问题, 题目有保证排名均不同, 可以用bitset优化为$O(\frac{n^2}{\omega})$ #include <iostream> #include <algorithm> #include <cstdio> #include <math.h> #include <set> #include <map> #incl…
hihoCoder 1513 小Hi的烦恼 思路: 用bitset判断交集个数 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mem(a,b) memset(a,b,sizeof(a)) ; ]; ];//在第j门课排名为i的同学的编号 bitset<N>s[N][],tmp;//在第j门课小于排名i的状态 int main(){…
题意 题目链接 Sol 五位数点问题,写个cdq分治套cdq分治套cdq分治套cdq分析就完了 可以用bitset搞 对于每一科开\(n\)个bitset,其中\(b[i]\)表示的排名为\(1 - i\)的人是哪些 查询的时候把每科的bitset &起来就行了 复杂度\(k\frac{n^2}{32}\) 然后可以分块加速一下 注意这里在预处理有个关于势能分析的操作:如果块内元素较少的话,可以每次跑根号个,然后和前面的|起来,如果元素较多的话直接从1开始跑 复杂度:\(k\frac{n\sqr…
思路:考虑第i个同学,第一门课排名比他靠前的同学的集合是S1,第二门课是S2...第五门课是S5,很明显比这个同学每门课程都优秀的同学就是S1&S2&S3&S4&S5,即五个集合的交集. rank[i][j]表示第i名同学第j门课程的成绩,rev_rank[i][j]表示第j门课程中排名第i名的同学的编号. stu[i][j]表示第j门课程比排名为i的同学优秀的同学的集合,即{0,1,0,1,1}表示比这个同学优秀的有2,4,5这三名同学.stu[i][j] = stu[i…
hiho#1513 : 小Hi的烦恼 五维偏序 链接 hiho 思路 高维偏序用bitset,复杂度\((\frac{n^2}{32})\) 代码 #include <bits/stdc++.h> using namespace std; const int N=3e4+7; int read() { int x=0,f=1;char s=getchar(); for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1; for(;s>='0…
题解 我会五维数点辣 只要用个bitset乱搞就好了 记录一下rk[i][j]表示第j科排名为i的是谁 用30000 * 5个大小为30000的bitset s[i][j]是一个bitset表示第j科,排名为1 - i的人是多少 最后只要对于每个人,把每一维小于它的集合and起来,然后用count()函数输出里面1的个数 代码 #include <iostream> #include <algorithm> #include <cstdio> #include <…
https://hihocoder.com/problemset/problem/1513 小Hi从小的一大兴趣爱好就是学习,但是他发现尽管他认真学习,依旧有学神考的比他好. 小Hi在高中期间参加了市里的期末考试,一共五门:语文.数学.英语.物理.化学. 成绩出来之后,小Hi发现有些同学,所有科目都考的比他好,他很烦恼.所以他想知道所有科目都比自己名次靠前的同学的人数. 为了方便,可以认为不存在两个人某一门名次是相同的. 其他同学们也想知道有多少人全面碾压了他们,所以你需要对所有人输出答案. 解…
网络流/费用流 和软件开发那题基本相同,只是多加了一个“雇佣研究生”的限制:不同价格的研究生有不同的数量…… 那么只需加一个附加源点,对每一种研究生连边 S->ss 容量为l[i],费用为p[i]:再改由附加源点向每天的流入点(i+n)连边即可. /************************************************************** Problem: 3280 User: Tunix Language: C++ Result: Accepted Time:…
题解: 随便建一下图费用流就可以过吧... 代码: #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<algorithm> #include<iostream> #include<vector> #include<map> #include<set> #include<queue>…
第一章  小A的烦恼 ----- 为什么学习数据库 和 如何选择数据库 小A是某公司的职员,公司数据部的员工,平常的大小工作,完全离不开EXCELL,而最近小A却越来越苦恼,不由的向好朋友小Y吐槽.小Y是某互联网公司的程序员,拥有多年开发经验. 小Y:"小A,你最近'印堂发黑',越来越疲劳无力,怎么?工作上遇见什么难题了?". 小A:"唉,别提了,最近公司发展迅速,数据量越来越大,我那'极品'电脑,关打开EXCELL就要卡个半天,再加上处理和计算,一天下来,卡顿的时间,都够我…
http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11544&courseid=0 小明的烦恼——找字符串 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB Total submit users: 108, Accepted users: 68 Problem 11544 : No special judgement Probl…
3280: 小R的烦恼 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 399  Solved: 200[Submit][Status][Discuss] Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的,程设老师最近要进行一项邪恶的实验来证明P=NP,这个实验一共持续n天,第i天需要a[i]个研究生来给他搬砖.研究生毕竟也是人,…
2760: [JLOI2011]小A的烦恼 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 406  Solved: 258[Submit][Status][Discuss] Description 小A是B公司的一名PM(product market).B公司越来越注重产品使用情况分析,而小A的工作就是整天对着一堆数据分析来分析去,没完没了.其中有一个操作是小A很头疼的,就是要把多个csv文件的数据拷到同一个excel文件中去. 有一天小A满怀期…
[BZOJ3280]小R的烦恼 Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的,程设老师最近要进行一项邪恶的实验来证明P=NP,这个实验一共持续n天,第i天需要a[i]个研究生来给他搬砖.研究生毕竟也是人,所以雇佣研究生是需要钱的,机智的程设老师已经联系好了m所大学,第j所大学共有l[j]个研究生,同时雇佣这所大学的一个研究生需要p[j]元钱. 本来程设老师满心欢喜的以为,这…
BZOJ_3280_小R的烦恼_最小费用最大流 Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难题.问题是这样的,程设老师最近要进行一项邪恶的实验来证明P=NP,这个实验一共 持续n天,第i天需要a[i]个研究生来给他搬砖.研究生毕竟也是人,所以雇佣研究生是需要钱的,机智的程设老师 已经联系好了m所大学,第j所大学共有l[j]个研究生,同时雇佣这所大学的一个研究生需要p[j]元钱.本来程设老…
小明的烦恼--找路径  Time Limit: 2000ms, Special Time Limit:5000ms, Memory Limit:32768KB Total submit users: 45, Accepted users: 37 Problem 11545 : No special judgement Problem description   小明真的是个非常厉害的人,每当老师有什么事时,总是会找到小明,二小明也总能解决,所以老师决定给小明一个奖励,给他额外的假期.小明当然非常…
描述 小Hi从小的一大兴趣爱好就是学习,但是他发现尽管他认真学习,依旧有学神考的比他好. 小Hi在高中期间参加了市里的期末考试,一共五门:语文.数学.英语.物理.化学. 成绩出来之后,小Hi发现有些同学,所有科目都考的比他好,他很烦恼.所以他想知道所有科目都比自己名次靠前的同学的人数. 为了方便,可以认为不存在两个人某一门名次是相同的. 其他同学们也想知道有多少人全面碾压了他们,所以你需要对所有人输出答案. 解题方法提示 输入 第一行,一个正整数N(N <= 30000),表示人数. 接下来N行…
http://hihocoder.com/problemset/problem/1513 h[j][i]记录第j个学科排名小于等于i的状态,bitset压位就可以了. #include<bitset> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 30003; int n, S[N][5], id[N], c; bitset…
题意:给出\(n<3e4\)个有序组\((a,b,c,d,e)\),求对第\(i\)个有序组有多少个\(j\)满足\((a_j<a_i,b_j<b_i,c_j<c_i,d_j<d_i,e_j<e_i)\) 五维偏序问题按套路来可以排序+树套树套树套树(打死 然而这是显然连\(O(n^2)\)暴力都不如的 可是题目给4s,\(O(n^2)\)是不可能的,但在神奇的bitset加持下\(O(5*n^2/32)\)的时空复杂度是可以卡过去的! 用bitset表示集合,\(bi…
Problem description   小明在班里一直是个非常公正的孩子.这点同学和老师都非常清楚,这不,老师每周都会从家里带来一些糖果.然后叫小明把糖果分给其它小朋友,但这个班里的同学都有一个非常特别的性格,就是他们仅仅喜欢偶数.对于糖果也一样,所以小明在分糖果时也必需要保证这一点,即使每一个同学分的糖果数量不一样.都是奇怪的是,小明有时候并不可以合格的分糖果,这让他大为苦恼.害怕别的同学会不再信任他(虽然其它同学不会这么想).所以他想请你帮帮他.在每次老师把糖果给他时,就帮他推断出糖果能…
描述 小Ho在一条笔直的街道上散步.街道上铺着长度为L的石板,所以每隔L距离就有一条石板连接的缝隙,如下图所示. 小Ho在散步的时候有奇怪的强迫症,他不希望脚踩在石板的缝隙上.(如果小Ho一只脚的脚尖和脚跟分别处于一条缝隙的两侧,我们就认为他踩在了缝隙上.如果只有脚尖或脚跟接触缝隙,不算做踩在缝隙上) 现在我们已知小Ho两只脚的长度F以及每一步步伐的长度D.如果小Ho可以任意选择起始位置,请你判断小Ho能否保持不踩缝隙散步至无穷远处? 输入 第一行是一个整数T,表示测试数据的组数. 每组测试数据…
Problem description   小明是个非常优秀的同学.他除了特别公正外,他也非常细心,当然老师肯定也知道,这不,老师又有事情找他帮忙了.老师每周都会给他一个字符串A.然后问小明"A字符串的循环移位产生的全部字符串中,字典序最小的是哪个".于是小明屁颠屁颠的一个一个比对,可是长久下来,小明实在是受不了了,所以他想请你帮帮他. 相同,你帮他解决.你就会多AC一个题目.  Hint: 假设A字符串为bcda,那么其全部的循环移位的新字符串有cdab.dabc,abcd.和他自己…
[题目链接]:http://hihocoder.com/contest/hiho147/problem/1 [题意] [题解] bitset的应用; 设better[j][i]表示第j个科目排名为1..i-1的是哪些人; 这里better数组的定义为 bitset< N> better[5][N]; 这个better数组能在O(N)的复杂度下搞出来; 每次只要新加一个排名为i-1的人就好; 且 bteer[0..4][1]=0; 然后对于每一个人i; 只要求 beetter[0..4][a[0…
传送门 时间限制:18000ms单点时限:2000ms内存限制:512MB 描述 小h拥有$n$位朋友.每位朋友拥有一个数值$V_i$代表他与小h的亲密度.亲密度有可能发生变化.岁月流逝,小h的朋友们形成了一种稳定的树状关系.每位朋友恰好对应树上的一个节点.每次小h想请两位朋友一起聚餐,他都必须把连接两位朋友的路径上的所有朋友都一起邀请上.并且聚餐的花费是这条路径上所有朋友的亲密度乘积.小h很苦恼,他需要知道每一次聚餐的花销.小h问小y,小y当然会了,他想考考你. 输入 输入文件第一行是一个整数…
Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难题.问题是这样的,程设老师最近要进行一项邪恶的实验来证明P=NP,这个实验一共 持续n天,第i天需要a[i]个研究生来给他搬砖.研究生毕竟也是人,所以雇佣研究生是需要钱的,机智的程设老师 已经联系好了m所大学,第j所大学共有l[j]个研究生,同时雇佣这所大学的一个研究生需要p[j]元钱.本来程设老 师满心欢喜的以为,这样捡最便宜的max{a[i]…
和开发计划一样(数组开太小wa了好多次,然后为什么这么慢? type arr=record toward,next,cap,cost:longint; end; const maxm=; maxn=; var edge:..maxm]of arr; dist,first,sch,a,new,old,p,slack:..maxn]of longint; chose:..maxn]of boolean; maxcost,maxflow,n,s,t,tot,esum,i,tt,sum,jj:longi…
传送门 分析 论bitset的妙用......我们利用桶排将输入的数据排序,之后分别考虑5维,a[i][j]表示考虑第i个人第j维的情况下于其它人的大小关系.最后将5维的信息并起来求1的个数即可 代码 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include&l…