题面 题意:给你n(20)个点,m(40条边),让你给每条边染一种颜色,白色0元,红色2元,蓝色1元,现在要保证每一条白边相邻的有一条红边,问至少花多少 题解:刚开始想的时候,好像觉得只用染红色和白色就够了?乱搞一通就发现不对了 例如:5个点,5条边:1 2,   2 3  ,  3 4 , 4 5 , 5 2 .  如果只用红白,则答案为2条红边,2*2=4  但实际上,如果2 5染红,3 4染蓝,答案为3 所以我们重新思考:什么时候染蓝色? 我们假设一条边,如果染了红色,则他的2个端点,就标…
题面 题意:有10w个点,问你选4个点,能组成平行于坐标轴的正方形有多少个 题解:不知道正解,我的做法就是暴力的基础上优化一点,每次按x排好序,每次枚举的2个点都是x相同的 这样算是个优化?但并不能过,因为可能一列全是x相同的,于是又判了一次对于这个点,x相同的多还是y相同的多 具体实现用了个set没想到就过了 #include<bits/stdc++.h> using namespace std; #define N 2000006 set<int>x[N],y[N]; ; in…
Fighting for Triangles 题目连接: http://codeforces.com/gym/100015/attachments Description Andy and Ralph are playing a two-player game on a triangular board that looks like the following: 1 2 3 4 5 7 8 6 9 10 11 13 14 16 17 12 15 18 At each turn, a playe…
Problem K. Kitchen Robot Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100610 Description Robots are becoming more and more popular. They are used nowadays not only in manufacturing plants, but also at home. One programmer wit…
http://codeforces.com/gym/100676 题目大意: 给你n个科目,m个关系,例如A->B,表示要学习B科目,一定要把A科目学习掉.同理,如果还有C->B,那么,B就要同时学掉A和C才能学B科目. 如果你是第k天学习这个科目,那么你的val += k * W[i],这个i表示你当天学的科目. 问,怎么学习让自己的val最大. 思路:状压dp 定义can[i],表示学习第i个科目之前,所需要的学习的集合是啥,然后判断(i & can[j]) == can[j],然…
题目描述--->P2622 关灯问题II 没用的话: 首先第一眼看到题,嗯?n<=10?搜索? 满心欢喜地敲了一通搜索. 交上去,Wa声一片? 全部MLE! 这么坑人神奇? 一想,可能是爆栈了 emmm 思考了一番看了下题解&&标签 哦原来是状压DP 情不自禁地分析 n<=10. 最多只有(2<<10)-1=1023种状态 我们完全可以用数组存储状态. 以样例为例: 算了 太辣鸡了,我自己瞎出吧. 如果n=8,即一共有8盏灯. 初始状态它们全开着,我们可以认为…
关灯问题II 状压DP \(n\)个灯,\(m\)个按钮,每个按钮都会对每个灯有不同影响,问最少多少次使灯熄完. \(n\le 10,m\le 100\) 状压DP的好题,体现了状压的基本套路与二进制操作 注意到此题\(n\)极小,一般小于\(16\)就可以做状压,并且发现每次转移时需要每盏灯的信息,于是我们直接将灯状态塞进二进制即可. 首先我们从初态开始按顺序枚举状态,然后枚举每次状态的决策,最后按题意转移到下一个状态即可. #include <cstdio> #include <al…
关 灯 问 题 I I 关灯问题II 关灯问题II 题目描述 现有n盏灯,以及 m m m个按钮.每个按钮可以同时控制这 n n n盏灯--按下了第 i i i个按钮,对于所有的灯都有一个效果.按下i按钮对于第 j j j盏灯,是下面 3 3 3中效果之一:如果 a [ i ] [ j ] a[i][j] a[i][j]为 1 1 1,那么当这盏灯开了的时候,把它关上,否则不管:如果为 − 1 -1 −1的话,如果这盏灯是关的,那么把它打开,否则也不管:如果是 0 0 0,无论这灯是否开,都不管…
车 I I 车II 车II 题目描述 有一个 n ∗ m n*m n∗m的棋盘 ( n . m ≤ 80 , n ∗ m ≤ 80 ) (n.m≤80,n*m≤80) (n.m≤80,n∗m≤80)要在棋盘上放 k ( k ≤ 20 ) k(k≤20) k(k≤20)个棋子,使得任意两个棋子不相邻.求合法的方案总数. 输入 n , m , k n,m,k n,m,k 输出 方案总数 样例输入 3 3 2 样例输出 24 题目解析 又双叒叕是一道状压DP的题.和车相比,这道题的数据就大了许多 n…
 2017 JUST Programming Contest 2.0 题目链接:Codeforces gym 101343 J.Husam and the Broken Present 2 J. Husam and the Broken Present 2 time limit per test:1.0 s memory limit per test:256 MB input:standard input output:standard output After you helped Husam…