cstring

HDU 6808 Go Running(利用网络流求二分图的最小顶点覆盖、dinic)

耗尽温柔 提交于 2020-08-15 04:24:53
原题地址: http://acm.hdu.edu.cn/showproblem.php?pid=6808 本文主要参考的博客: https://www.cnblogs.com/stelayuri/p/13405914.html Go Running Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) Total Submission(s): 1358 Accepted Submission(s): 500 Problem Description Zhang3 is the class leader. Recently she's implementing a policy about long-distance running. This forces every student in her class to take a run. There is a main road in the school from west to east, which can be regarded as an infinite axis, and its positive direction is east. Positions on the road are

CF1286A Garland

爱⌒轻易说出口 提交于 2020-08-15 02:47:41
Garland 1 #include <cstdio> 2 #include <iostream> 3 #include <cstdio> 4 #include <algorithm> 5 #include <functional> 6 #include < set > 7 #include <vector> 8 #include <queue> 9 #include <cstring> 10 #include <stack> 11 #include <climits> 12 13 using namespace std; 14 15 #define ll long long 16 #define pb push_back 17 #define fi first 18 #define se second 19 20 // dp[i][j][0/1] 表示前i位数字中有j位偶数,且当前是偶/奇数 21 22 void solve(){ 23 24 // int T; 25 // cin >> T; 26 // while(T--){ 27 int n; 28 cin >> n; 29 vector< int > a(n); 30 for (auto& x : a) cin >> x; 31 vector<vector<vector< int > > > dp(n + 1 ,

线段树

时间秒杀一切 提交于 2020-08-15 01:43:52
1 #include<cstdio> 2 const int maxn= 100000 + 10 ; 3 typedef long long ll; 4 ll a[maxn],tree[ 4 *maxn],lazy[ 4 * maxn]; 5 void Build( int rt, int l, int r){ 6 if (l== r) { 7 tree[rt]= a[l]; 8 return ; 9 } 10 int mid=(l+r)>> 1 ; 11 Build(rt<< 1 ,l,mid); 12 Build(rt<< 1 | 1 ,mid+ 1 ,r); 13 tree[rt]=tree[rt<< 1 ]+tree[rt<< 1 | 1 ]; 14 } 15 void update( int rt, int l, int r,ll w){ 16 tree[rt]+=(r-l+ 1 )* w; 17 lazy[rt]+= w; 18 } 19 void pushdown( int rt, int l, int r){ 20 int mid=(l+r)>> 1 ; 21 update(rt<< 1 ,l,mid,lazy[rt]); 22 update(rt<< 1 | 1 ,mid+ 1 ,r,lazy[rt]); 23 lazy[rt]= 0 ; 24 } 25 ll

Bicoloring (并查集/二分图)

此生再无相见时 提交于 2020-08-14 22:56:32
题目链接 题意:   m个查询,每个查询输入a b,表示 顶点a b之间涂色。 规定只能涂颜色0 或者颜色 1,一个节点相连的边 必须涂成相同的颜色。 问 ,输入m组 a b之后,会不会犯规。 思路:   判断 a b 所在的环 边的数量 是奇还是偶。 奇数就不能,偶数就能。   用并查集: 找到他们公共的祖先,判断(a到祖先的距离 + b到祖先的距离 +1 )的奇偶(最近的公共祖先 还是最远的公共祖先 都没关系,不影响奇偶) 。 如果a b没有公共祖先,就 f [fa] = fb合并起来就行。   用搜索: 给每个顶点 标记值,如果相邻两个顶点的标记值相同,说明环是奇数,不满足。 #include<iostream> #include <cstdio> #include <cctype> #include <algorithm> #include <cstring> #include <cmath> #include < string > #include <cmath> #include < set > #include <vector> #include <stack> #include <queue> #include <map> using namespace std; #define ll long long #define mem(a,x) memset(a,x

ROADS POJ

守給你的承諾、 提交于 2020-08-14 06:13:44
ROADS 思路:K = 10000,dijkstra复杂度O(nlogn),如果我们把不同点的不同花费拆点,即d[花费][点] = 距离,则被拆为 N*K个点,分成K层,则dijkstra复杂度O(k * (n *logn + m)),复杂度在超时边缘徘徊... #include <iostream> #include <vector> #include <cstdio> #include <cstring> #include <queue> using namespace std; #define ll long long #define pb push_back #define fi first #define se second const int N = 110 ; const int INF = 1e9; struct node{ int v, w, c; }; int n, k, m; vector <node > E[N]; int d[ 10010 ][N]; void dijkstra(){ for ( int i = 0 ; i <= 10000 ; ++ i){ for ( int j = 1 ; j <= 100 ; ++ j){ d[i][j] = INF; } } queue <pair< int , int > > que; d[ 0 ][ 1 ]

C++变量命名规则

半世苍凉 提交于 2020-08-14 03:46:43
转自:http://www.cnblogs.com/finallyliuyu/archive/2010/09/25/1834301.html 浅谈C++变量命名规则 不知道别的公司如何,反正我现在的公司对变量命名并没有一定的规范,唯一要求就是能简单易懂,但是,我想,这个多个程序员,大概每个人都有自己习惯的一套 命名规则吧,不过,要是并不通用的话,大概看别人的程序会很头疼吧,SO 为了别人看偶的程序不至于太头疼,偶决定找个通俗的命名法来参考下,于是,搜到了匈牙利命名法。。。 匈牙利命名法的来历和介绍分类:C Plus Plus 匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部 分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。 举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm,则当表单变量名称为Switchboard时,变量全称应该为 frmSwitchboard。这样可以很容易从变量名看出Switchboard是一个表单,同样,如果此变量类型为标签,那么就应命名成 lblSwitchboard。可以看出,匈牙利命名法非常便于记忆,而且使变量名非常清晰易懂,这样,增强了代码的可读性,方便各程序员之间相互交流代 码。

学习c++ (一) dll注入和进程间通信

筅森魡賤 提交于 2020-08-14 02:36:12
一直觉得学c++太 复杂了,里面很多类型,多得根本分不清,但网上资料很多是c++的,有些问题又用其它的解决不完美(会c#、java、python) 然后还是下决定搞一搞,因为搞c++,又不得不搞VC++,还得看看MFC,这花了我三天时间,看得累,光是不同类型之间的转换就查了不少资料 好吧,开始搞dll注入,拿记事本开刀,用c#和easyhook轻易的就搞定了,一个注入程序,一个被注入dll 然后折腾c++,注入进去了还要跟主程序通信,然后就一起弄了一下,确实伤神,主要还是类型之间的问题,如果是相对于新手,网上大部分的资料都写得太粗了,完全不知道变量的类型是什么 我就贴一下完整代码,首先是先写一个dll,用的c++写的,准备注入到记事本中去的,这个dll新建比较容易,我用vs2015,直接建个c++的空项目,加一个cpp的文件开始写就可以了,我也不敢说新手会不会加,但我现在是会了,所以只能描述一下了,代码有些注释了,打开了无妨,主要功能就是被注入后,向主进程(窗口标题为MFC3)发送WM_COPYDATA消息hello world 那个COPYDATASTRUCT结构体搞了我一天的时间,最后不断拼出来的代码,网上大多是MFC的,但我就是想用C++弄出来 // #include "stdafx.h"; #include <iostream> ; using namespace std;

NOIP模拟测试2-5

那年仲夏 提交于 2020-08-13 17:19:43
该补一下以前挖的坑了 先总结一下 第二次 T1 搜索+剪枝 1 #include<cstdio> 2 #include<iostream> 3 #define ll long long 4 using namespace std; 5 const int maxn= 8005 ; 6 int a[maxn],n,js[maxn]; 7 bool jk[maxn]; 8 ll ans; 9 bool judge( int l, int r) 10 { 11 int i= l; 12 while (i< r) 13 { 14 if (a[i]+ 1 !=a[i+ 1 ]) return 0 ; 15 else i++ ; 16 } 17 return 1 ; 18 } 19 void out () 20 { 21 for ( int i= 1 ;i<=( 1 <<n);i++ ) 22 { 23 cout<<a[i]<< " " ; 24 } 25 cout<< endl; 26 } 27 void search( int num, int last) 28 { 29 // out(); // cout<<"->"<<endl; 30 if (judge( 1 , 1 <<n)){ans+=js[num]; return ;} 31 if (last==n+ 1 ) return ;

洛谷P2242 公路维修问题(Road)

与世无争的帅哥 提交于 2020-08-13 16:58:24
题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶、门被吹飞了。 好在许多牛正在度假,所以牛棚没有住满。 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜。 有些牛棚里有牛,有些没有。 所有的牛棚有相同的宽度。 自门遗失以后,farmer John必须尽快在牛棚之前竖立起新的木板。 他的新木材供应商将会供应他任何他想要的长度,但是吝啬的供应商只能提供有限数目的木板。 farmer John想将他购买的木板总长度减到最少。 给出:可能买到的木板最大的数目M(1<= M<=50);牛棚的总数S(1<= S<=200); 牛棚里牛的总数C(1 <= C <=S);和牛所在的牛棚的编号stall_number(1 <= stall_number <= S),计算拦住所有有牛的牛棚所需木板的最小总长度。 输出所需木板的最小总长度作为答案。 输入输出格式 输入格式: 第 1 行: 木板最大的数目M ,牛棚的总数S 和 牛的总数C(用空格分开) 第 2 到 C+1行: 每行包含一个整数,表示牛所占的牛棚的编号。 输出格式: 单独的一行包含一个整数表示所需木板的最小总长度。 输入输出样例 输入样例#1: 4 50 18 3 4 6 8 14 15 16 17 21 25 26 27 30 31 40 41 42 43 输出样例#1: 25 说明 题目翻译来自NOCOW。

6.28日模拟考试总结(T1:翻转游戏;T2:抢掠计划,T3:测绘,T4:奖学金)

寵の児 提交于 2020-08-13 00:09:04
今天的考试有结束了,又一次被右边的同桌虐了(额,排名第三的大佬)但是考试还是进步了一名,算是有进步吧 成绩: 那个12名就是我,一个AC都没有,太难受了。 T1: 题目链接:http://hzoi.com/contest/39/ranklist/1(内部题库,不确保能进入) 题目: 题目是一个简化版,很水,直接2的16次方枚举就完了。 当时不知到咋回事居然TLE 60(尬); 直接看代码吧: #include <cstdio> #include <iostream> #include <cstring> #include <algorithm> using namespace std; //monsters; int a[5][5],data[5][5]; int lowbit(int x){ return x&-x; } int get(int x){ int num=0; for(int j=x;j>0;j-=lowbit(j)){ num++; } return num; } void gai(int x,int y){ a[x][y]^=1; a[x+1][y]^=1; a[x-1][y]^=1; a[x][y-1]^=1; a[x][y+1]^=1; } void clear(){ for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++){