题解
浇糖玛奇朵
会了,但完全没有会
展开
-
洛谷P3373线段树
这题挺难受的,又加又乘还得取模 主要是维护懒标记的时候先乘后加 细节过两天再补 #include <bits/stdc++.h> using namespace std; typedef long long ll; #define putln putchar('\n') #define rep(i,a,b) for(int i=a;i<=b;++i) #define per(i,a,b) for(int i=a;i>=b;--i) const int MXN=1e5+5; int原创 2021-10-06 19:09:35 · 83 阅读 · 0 评论 -
hdoj 1850 nim博弈
题目意思就是若干堆牌,如果先手必胜的话先手第一步有几种拿牌方式。 首先nim博弈判断输赢的方法是 如果异或和为0则先手必败,不等于0则先手必胜。对于先手必胜的情况,先手第一步拿完牌之后剩下的牌对于后手应该是必败的情况,也就是剩下牌异或和为0。 m堆牌,a1, a2, a3, … ,am 假设此时是先手必胜的局面,则异或和ans = a1^ a2^ a3 ^ … ^am > 0 现在假设先手第一步在 a1堆牌里拿走x张 ,此时a1变为 a1’ ,如果这么拿是可行的话,那么现在的牌面 a1’, a2, a原创 2021-08-26 09:28:35 · 92 阅读 · 0 评论 -
hdoj 1847 博弈(打表,找规律)
一堆牌,轮流拿,每次只能拿2的幂次张牌,判断输赢。 最后结论是牌数为3的倍数时先手输 结论很简单,但一开始真看不出来,先打个表看一下,毕竟数据不大,<=1000,直接打表做一下: 思路: 首先sg[ i ]=0,必败。 对于每一数量 i,分析所有第一次能拿的数量 f [ j ],如果sg[ i - f [ j ] ]==0, 说明先手拿完f [ j ]张牌以后剩下的数量对于另一个人是必败的,那么对于先手来说就是必胜的。分析所有可以拿的数量,如果都是先手败的情况,那对于这个数量就是先手必败,sg[ i原创 2021-08-24 21:11:16 · 147 阅读 · 0 评论 -
CF1537C Challenging Cliffs
CF round #762(div2)C题 Challenging Cliffs 题目 补题。 昨晚真是没想到这么做啊。。。好蠢 官方tutorial: 标程: #include "bits/stdc++.h" using namespace std; int main() { int t; cin >> t; while(t--){ int n; cin >> n; vector<int> h(原创 2021-06-19 09:23:18 · 331 阅读 · 0 评论 -
杭电oj 1258 Sum It Up
dfs 要记录路径最后输出 #include <bits/stdc++.h> using namespace std; typedef long long ll; int sum,n,ans,x; /* sum和n是总和,ans用来记录是否有解,x是一个中间量,临时存数 */ int a[15],b[15];//数组a存放输入的数据,数组b存放路径 void dfs(int nowsum,int nowk,int bi)//nowsum是当前的和,nowk记录选择的是数组a的第几个数 {原创 2021-02-04 13:22:35 · 153 阅读 · 0 评论 -
洛谷P1443 马的遍历(BFS)
洛谷P1443 马的遍历 蒟蒻第一篇题解&博客 一道基本的广搜,也是我第一次完整地自己写出来的广搜,菜死了。。。 大概思路就是从最初的位置开始,遍历八个方向,符合条件的放到队列里,然后出队一个点执行上述操作,直到队列为空。还是挺好写的,个人感觉比深搜好写,也好想。 代码不是很简洁,但是我自己好理解 上代码: #include <iostream> #include <stdio.h> #include <queue> using namespace std; st原创 2020-10-02 18:52:15 · 309 阅读 · 0 评论 -
洛谷P5638 光骓者的荣耀(前缀和、dp)
洛谷P5638 光骓者的荣耀 这道题可以看成大小为n数组的和减去中间某一段连续的k个数,并且使得结果最小。 最直白的方法当然逐一尝试,用数组的和减去每一段连续的k个数,最后输出一个最小值,但是这样会超时。 所以这里介绍一个动态规划的方法,一个简单的dp,万物皆可dp 思路还是一样的,大小为n数组的和减去中间某一段连续的k个数,任何一段连续k个数都可能是我们需要减去的一段,所以我们从头开始,每一段都尝试,所以对于从头开始的每一部分数(也就是前缀)都有两种可能:要么减去这一段,要么保留这一段。如果保留的话,值就原创 2020-10-27 21:10:12 · 493 阅读 · 0 评论 -
洛谷 P1135 奇怪的电梯(BFS实现)
洛谷 P1135 奇怪的电梯 又是一道广搜 最开始交了一次只过了四个点,还有两个点MLE,其余的T了。很纳闷,数据规模只有200,BFS居然会T。后来思考了一下,发现有好多重复的点,比如:有多个楼层都可以到达某一楼层,那么到达的这个楼层就可以不用再入队了 所以我用了一个check[ ]数组用来判断第i层有没有去过,0表示没有去过,1表示去过。之后正常搜就好了。 上代码: #include <queue> #include <stdio.h> using namespace std;原创 2020-10-03 00:16:30 · 349 阅读 · 0 评论