1 #include<bits/stdc++.h> 2 using namespace std; 3 #define LL long long 4 #define inf 0x3f3f3f3f 5 #define pii pair<int,int> 6 #define mp make_pair 7 8 const int maxn=310; 9 vector<pii>g[maxn]; 10 int n; 11 int a[maxn]; 12 bool inq[maxn]; 13 int d[maxn]; ...
csp201809-4 这是一道差分约束求最长路的图的问题: 通过已知的条件可以容易列出以下不等式: 2*a1<=x1+x2<=2*a1+1 3*a2<=x1+x2+x3<=3*a2+2 3*a3<=x2+x3+x4<=3*a3+2 ... 3*an-1<=xn-2+xn-1+xn<=3*an-1+2 2*an<=xn-1+xn<=2*an+1 以及xn>=1 我们可以通过一些简单的移项将...
利用前缀和S(n)-S(n-2)>=K 来代替a[i-1]+a[i]+a[i+1]>=K然后建边,注意每个S(i)-S(0)>=1这个隐含的条件。 1#include<bits/stdc++.h>2usingnamespacestd;3#defineLL long long4#defineinf 0x3f3f3f3f5#definepii pair<int,int>6#definemp make_pair78constintmaxn=310;9vector<pii>g[...
对于id选择器和标签选择器来说其实很好实现,关键在于后代选择器,并且后代选择器可以出现多个属性。这里使用递归操作,每次找到符合最后一个属性条件的元素,后面的属性在调用本函数判断父元素。 代码 #include<cstdio>#include<iostream>#include<algorithm>#include<string>#include<cstring>#include<vector>#include<stack...
CCF-CSP题解 201809-4 再卖菜 碎碎念。。近视加老花,还以为第二天除了第二家范围在100以内别的都不确定,于是x**算的记搜复杂度超时了。还鼓捣着什么差分区间最长路,虽然有大神用差分区间做出来了,然而自己并没有看懂。 其实就是一个记忆化搜索。搜索时用vis[n][300][300]记录访问状态。第二、三维数组下标...
目录 CSP201809-4 再卖菜 60分dfs 100分建立差分约束系统 这场打完就忘记了。当时这题一直在想怎么建立差分约束系统,最后没建出来0分,队友搜索暴力剪纸可能还有记忆化过的,其他人有的都是搜索拿的几十分, 用最暴力的写法直接搜即可。 60分dfs 菜的价格在1~100之间,直接dfs枚举菜的价格即可。300^n复杂度?其实...
CCF CSP 201809-4 再卖菜 思路: 1.设ai是第一天第i家店的菜价,bi是第二天第i家店的菜价; 2.根据题意有: a2=2b1-a1+k (k=0,1) ai+1=3bi-ai-1-ai+k (k=0,1,2;1<i<n) an=2bn-an-1+k (k=0,1) 3.我们知道a1是小于等于2b1且大于零的,所以我们可以让a1从1开始dfs到2b1,确定了a1...
[csp-201809-4]再卖菜 差分约束or记忆化搜索 先更新第一个做法:差分约束 转化成最长路,求出的每一个解是满足差分方程的最小值 spfa求最短路 对于边(x->y) 有: 1if(dis[y] > dis[x] + a[i].d) dis[y]=dis[x]+a[i].d; dis[y]的初始值为INF,dis[y]会是满足所有约束条件之中所有可能的...