摘要:
毒瘤题。。。卡了好久 本题求乘积最大的路径,咋一看好像是最长路直接无脑跑$spfa$,事实上$spfa$的确能跑过。 但本题也可以用$dijkstra$求解,原因是边权有特殊的性质:$0<w<1$ 这就导致了如果$s->...->t->...>e$是$s$到$e$乘积最大的路径,那么$s->...- 阅读全文
摘要:
枚举一下每个牧场作为目标点就行了,模型同1375. 奶牛回家 const int N=810; vector<PII> g[N]; int dist[N]; bool vis[N]; int pos[N]; int c,n,m; void dijkstra(int s) { memset(dist, 阅读全文
摘要:
求一遍最大距离即为答案 const int N=110; vector<PII> g[N]; int dist[N]; bool vis[N]; int n,m; void dijkstra() { memset(dist,0x3f,sizeof dist); priority_queue<PII, 阅读全文
摘要:
最短路裸题 const int N=2510; vector<PII> g[N]; int dist[N]; bool vis[N]; int n,m,s,e; void dijkstra() { memset(dist,0x3f,sizeof dist); priority_queue<PII,v 阅读全文
摘要:
unsigned int n; string a; int main() { cin>>n; while(n) { a+='0'+n%2; n/=2; } while(a.size()<32) a+='0'; reverse(a.begin(),a.end()); string a1=a.subst 阅读全文
摘要:
我们考虑异或的两个小小的性质: 任何数与 0 的异或值是它本身 k 个相同的数的异或和,当 k 为奇数时,结果是这个数本身,否则结果是 0 异或满足交换律和结合律 题目需要求 n 个数中出现奇数次的那个数,且保证这个数存在且只有一个。于是我们根据上面两个性质得出,答案就是这 n 个数的异或和。 in 阅读全文
摘要:
这么一个憨批题居然还$wa$了几发? int n,m; string a,b; int main() { cin>>n; cin>>a; cin>>m; int res=0; for(int i=0;i<a.size();i++) { if(isdigit(a[i])) res=res*n+(a[i 阅读全文
摘要:
水题 我们肯定向前传送 求长为k的最大连续子段和,然后总长减去就行了 const int N=1e6+10; LL a[N]; LL sum[N]; int n,k; int main() { cin>>n>>k; for(int i=1;i<=n-1;i++) cin>>a[i],sum[i]=s 阅读全文
摘要:
const int N=510; int a[N][N]; int f[N][N]; int n; int main() { cin>>n; memset(f,-0x3f,sizeof f); f[0][0]=0; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++ 阅读全文
摘要:
状态表示:$f(i,j)$表示从前$i$个物品中选,总体积不超过$j$的情况下的最大价值。 和01背包一样,完全背包问题的每种物品都有两种策略,但是也有不同点。 对第i件物品来说: 不放第i件物品,那么f[i][v]= f[i- 1][v], 这步跟01背包是一样的。 放第i件物品。这里的处理和01 阅读全文