摘要:http://blog.sina.com.cn/s/blog_725dd1010100upat.html
阅读全文
摘要:题目意思:给一颗n个节点的树,每个节点有一个值要么是0要么是1,改变某个节点的值时,它的儿子不变,它儿子的儿子翻转,它儿子的儿子的儿子不变,如此类推。给定各个节点的目标值,求最少的翻转次数,使得达到要求。题解思路:贪心+Dfs判断当前节点的值,与目标值比较1.当前节点值由其上上一个节点值是否需要改变...
阅读全文
摘要:list 的翻转reverse源码:// 将链表倒置 // 其算法核心是历遍链表, 每次取出一个结点, 并插入到链表起始点 // 历遍完成后链表满足倒置 template void list::reverse() { if (node->next == node || link_type(node->next)->next == node) return; iterator first = begin(); ++first; while (first != end()) { iterator old = first; ++first; ...
阅读全文
摘要:#include#includeusing namespace std;set si;int a[510],b[510],c[510];int main(){ int l,n,m,s,x; int i,j,k; int _case=0; while(scanf("%d%d%d",&l,&n,&m)!=EOF) { si.clear(); for(i=0;i<l;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) scanf("%d",&b[i]); ..
阅读全文
摘要:#include#include#include#includeusing namespace std;int main(){ int n,k; int i,j,q; while(scanf("%d%d",&n,&k)!=EOF) { multisets[20]; mapm[20];//定位,删除点 for(i=1; i::iterator f=s[j].begin(); multiset::iterator e=s[j].end(); e--; ...
阅读全文
摘要:#include<stdio.h>#include<list>using namespace std;list<int>li;list<int>::iterator it;int main(){ int _case,n; scanf("%d",&_case); while(_case--) { li.clear(); scanf("%d",&n); for(int i=1; i<=n; i++) li.push_back(i); int k=0; while(li.size()>
阅读全文
摘要:题意: 上一行的3个音符决定下一行的1个音符题解: 查找与替换 选择的输出的保存方式#include<stdio.h>#include<string.h>#include<vector>#include<map>#include<string>#include<iostream>#include<algorithm>using namespace std;string s1,s2;map<string,char>ma;char a[5];int main(){ int _case,m; int x,
阅读全文
摘要:#include<stdio.h>#include<vector>using namespace std;#define N 1010vector<int>a[N];int fb(){ int i,j,k; int jw; a[1].push_back(1); a[2].push_back(1); for(i=3;i<N;i++) { jw=0; for(j=0,k=0;k<a[i-2].size();j++,k++) { //a[i][j]+=jw; int t=a[i-...
阅读全文
摘要:#include<stdio.h>#include<string.h>#include<vector>#include<algorithm>using namespace std;vector<int>prime;vector<int>::iterator it1,it;const int N=10100;bool visit[N];//int prime[N];int num=0;int init_prim(){ memset(visit,true,sizeof(visit)); prime.push_back(0);
阅读全文
摘要:#include<stdio.h>#include<vector>#include<string>#include<iostream>#include<algorithm>using namespace std;vector<string>v;string s;bool cmp(string a,string b){ int al=0,bl=0; for(int i=0;i<a.size();i++) for(int j=i+1;j<a.size();j++) if(a[j]<a[i])al++; for
阅读全文
摘要:http://acm.cug.edu.cn/JudgeOnline/problem.php?id=1011#include<stdio.h>#include<string>#include<vector>#include<string.h>#include<algorithm>#include<iostream>using namespace std;vector<string>v;vector<string>::iterator it;int main(){ string s,si; char s
阅读全文
摘要:题解: 对Alice和Bob的数据一起排序,再贪Alice离Bob最进的矩形 做了整整一个下午,我晚饭后找了一会,还是没发现, 一筹莫展之际,只有使出杀手锏(求教飞机哥!!!) 正在注释代码准备求助时,终于的发现了坑货的小bug!!!! ( bool cmp()中忘写了return false;以前使用int cmp()) 1。起初是直接查找TLE,各种换数据结构。 2。数组开100005提交,Runtime Error (ACCESS_VIOLATION) 又百度,此错误好像有爆内存的原因(明明就够题目数据量的??)。 3。最...
阅读全文
摘要:#include<stdio.h>#include<algorithm>#include<string>#include<vector>#include<deque>#include<list>#include<string.h>#include<set>#include<iostream>using namespace std;string s1,s2,si;struct node{ int ii;//物品编号 int value;//价值 set<string>s;//描
阅读全文
摘要:http://acm.whu.edu.cn/land/problem/detail?problem_id=1462#include<stdio.h>#include<list>#include<deque>//TLE//#incldue<fstream>#include<iostream>using namespace std;//list<int>la,lb,lc;//list<int>::reverse_iterator rit;//list<int>::iterator it;deque<
阅读全文
摘要:#include<stdio.h>#include<map>#include<string>#include<iostream>using namespace std;map<string,char>ms;map<char,char>mc;string s1,s2,si;int main(){ int t; ms["21"]='A'; ms["22"]='B'; ms["23"]='C'; ms["31&q
阅读全文
摘要:#include<stdio.h>#include<string>#include<map>#include<algorithm>#include<iostream>using namespace std;string s;string ss;map<char ,char>mc;map<string, int>ms;map<string, int>::iterator it;int main(){ mc['A']='2'; mc['P']='7
阅读全文
摘要:#include<iostream>#include<stdio.h>#include<string.h>#include<string>#include<map>using namespace std;char s1[6],s2[85];map<char,int>m;int main(){ while(1) { m.clear(); gets(s1); if(s1[0]=='#')return 0; gets(s2); if(s2[0]=='#')return 0; int s1l=str
阅读全文
摘要:思路: 需特别注意数据有 2个单词中间有多个空格 结尾也有空格#include<stdio.h>#include<iostream>#include<map>#include<string.h>#include<string>using namespace std;int main(){ char ch[1000000]; string str,l; int m,i,a,len,q; while(gets(ch)&&ch[0]!='#') { a=0;m=0;q=0;len=0; map<stri
阅读全文
摘要:题目就是双端队列的基本操作#include<iostream>#include<stdio.h>#include<deque>//双端队列头文件#include<string.h>using namespace std;int main(){ int n,m,x; char s[5],s1[4],s2[4]; while(scanf("%d",&n)!=EOF) { while(n--) { deque<int>q;//双端队列的定义(并清空) scanf("%d %s",&m,
阅读全文
摘要:题意不多解释,以我这种英语菜鸟都读得懂好吧!我承认参考了大牛的代码!!!!!!STL真心强大,最近刷的水题基本都是用STL!!选用map的理由: 1.map自定义了一个一对多 2.两个这样的map容器装下 x为键,y为值,和y为键,x为值的两个容器。 然后当C==0就输出当键位d的容器大小,并且去掉另一个容器中出现的点。#include<iostream>#include<stdio.h>#include<map>#include<set>using namespace std;//建立一个map,从int到一个multiset容器的映...
阅读全文