差分数组和贪心
算法错字
平衡括号字符串:最简单的定义为字符串所包含的 ( 和 ) 数量必须相同,并且对于字符串的任意前缀,所包含的 ( 的数目都不少于 ) 的数目。(准确来说是左括号严格等于右括号)
题目意思理解准确:①任意前缀。②可能是(多于),也有可能是)多于(,(等于)时,一定是满足平衡括号字符串。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include<iostream>#include<algorithm>#include<cstring>using namespace std;string s;int main() { cin >> s; int l = 0, r = 0; for(auto c : s) { if(c == '(') l ++; else r ++; } ...
synchronized与lock
javasynchronized 与Lock
ReentrantLock类实现了Lock,它拥有与synchronized相同的并发性和内存语义,在实现线程安全的控制中,比较常用的是ReentrantLock,可以显示加锁、释放锁。
线程创建总结1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950package test;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.Future;import java.util.concurrent.FutureTask;public class ThreadSum { public static void main(String[] args) { new MyThread1().start(); ...
字符串反转函数和死锁
算法字符串翻转函数
strrev()函数用于char字符串数组,reverse()函数用于string类型的字符串。
123456789101112131415161718192021222324252627282930#include <iostream> #include <cstring> using namespace std; int main() { char s[]="hello"; strrev(s); cout<<s<<endl; return 0; } #include <iostream> #include <string> #include <algorithm> using namespace std; int main() { string s = "hello"; reverse(s.begin() ...
dfs和多线程
算法连接奶牛
利用全排列来代替爆搜,因为每个走法只能对应一个全排列,简化了搜索。只需要判断每次全排列是否能从第一个点走到第二个点,以及在连续的三个点中方向是否改变,以及能否从最后一个点回到原点。get函数来判断两个点的方向。
利用pair数对
来存储奶牛的坐标。
12345678910111213141516171819202122232425262728293031get函数 int get(PII a, PII b) { if(a.first != b.first && a.second != b.second) return -1; if(a.first == b.first) { if(b.second > a.second) return 0; else return 2; } if(b.first > a.first) return 1; return 3;} // 0,1,2,3分 ...