文章分类 - poj
pku 3207
摘要:这道题感觉最难的是想到他是一个2-sat,即使我是按2-sat题目去找的……想了很久,还是觉得像贪心,但是贪心之后就不太好做了,以下是参考别人的代码写的,翻了好多代码,都不太理解,最后感觉这个感觉比较好理解吧,,但忘了是谁的blog里面的了先不写明出处了先/* 题意是:在一个有0,1,2,。。。n-1 个点组成的圆中,只能从圆里面和外面画线, 问你能否将m条边连起来,并且不能相交。 我的想法是:对于每条边要么从圆里面走,要么从圆外面走。那么,我们这样定义i 表示从里面走,i+n表示从外面走。然后我们遍历所有的两两边,如果他们交错了, 那么他们之间就有这样的关系:i从里面走,那么j就得...
阅读全文
hud 3062 Party
摘要:题意:中文的,不解释了思路:2-sat基本题,练习的第一道题目,网上找了个模板话说这个vector< vector<int> >还真是弄了好久的,所以先写了一个一维的弄了好久好久……2-sat终于有点思路了,各种错啊……这个是一维的:#include<iostream>#include<string>#include<vector>#include<stack>#include <cstdio>#include<algorithm>#include <cstring>using name
阅读全文
poj Candies
摘要:这题不知道说什么了,不过是个好题先自己写差分约束,然后WA了……discuss里说超时也显示WA - -|||,c++交也是TLE……尴尬还有一个重点, 就是我在discuss里看到的。flymouse always compared the number of his candies with that of snoopy’s. He wanted to make the difference between the numbers as large as possible while keeping every kid satisfied因为是班长做主,所以程序必须是从1号为起点,否则如.
阅读全文
poj 1064 Cable master
摘要:题意:给出一些长度的网线N,求等长最大的长度M思路:很好形成,很明显的二分,然而让人特无语的是double,被精度整了好几次后现在看到都挺虚的直接计算肯定要用到eps,想了想,用字符串转换,还是wa了N次之后,看discuss,还是没过,最后看了!的博客,终于改过了,写了好久--|||code:#include <iostream>#include <cstdio>#include <climits>#include <cstring>#include <cstdlib>#include <string>#define n
阅读全文
poj 2833 The Average
摘要:是一入门的好题目,也是一道神奇的题目看来discus才知道G++是错的,C++是对的 -. - |||题意:给出N个分数,要求去掉n1个最高分,n2个最低分,然后算平均分。其实不太难,只是数据量太大,不能一次读入,但是可以看到,n1,n2都很小很小,只用全部加起来再减去n1个最大的数,减去n2个最小的数,于是,问题简化,球所有数的和,再减去即可,对于最大n1和最小n2求法,有了以下三种方法1.用sort:建立一个11的数组,然后high中全置零(任何分数大于0),low中全INF(任何分数小于INF),这样,当比high[n1]大的时候,就替换他,然后sort(……,cmp)一次,此时high
阅读全文
poj 3522 Slim Span
摘要:题意:给N个点,M条边,每个边有相应的权值,然后求出用M条边中的N-1条边形成的树中,边权值最大与最小的差为所有树中最小。思路:想到了并查集,然后借用克鲁斯卡尔的思想,边排序,再枚举一下即可。卡了很久,最后才发现是因为初始化并查集的时候N是从0~N-1了,还有就是初始化cMin时,却忘了初始化temp……用我可怜的小马甲交了N次………#include <iostream>#include <cstdio>#include <algorithm>#define MAXN 105#define INF 1000000004using namespace std;
阅读全文
pku 1511 Invitation Cards
摘要:一道好题,练习静态表(邻接矩阵的数组开不下),没写过静态表,参考http://www.cnblogs.com/cykun/archive/2011/01/19/1939542.html写的,改用stl的queue写了。思路比较简单,有向边建立的静态表要注意反向处理,然后把1到各点和各点到1的距离求和即可:spfa+静态表#include <iostream>#include <cstdio>#include <climits>#include <queue>#include <cstring>#define INF INT_MAXco
阅读全文
pku 1129
摘要:http://blog.csdn.net/lovelyloulou/archive/2010/03/13/5377886.aspx//程序可能犯的错误是通不过非连通图的数据和一次搜索虽然成功着色却不是最优解的图的数据/*根据四色猜想,任何地图着色时满足相邻区域颜色不同的最小颜色数是4,所以图中每个节点可能有4种颜色,这里为4条信道搜索即可得到最小需要的颜色数。*/#include <iostream>#include <cstring>using namespace std;int map[27][27],chan[27];int mmin,n;bool ok(int
阅读全文
pku 1273 Drainage Ditches
摘要:题意:是说有一个水池,需要通过管道排水,给出管道数,给出两个管道间的最大流量,然后让你计算最多能拍多少水。思路:是pku上的一道模板题,注意可能有重边的问题。code://Edmonds-Karp算法,BFS找增广路#include<cstdio>#include<cstring>#include<iostream>#include<queue>using namespace std;const int INF = 1000000000;const int MAXN = 205;int n, m, s, t;int a[MAXN], p[MAXN
阅读全文
pku2141 message decowding
摘要:题意:输入两行,第一行是密码的解码,第二行是一行文字,要求翻译出第二行注意吃掉回车code:#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main(){ char key[30], message[90]; int m; while(scanf("%s", key)!=EOF) { getchar(); //注意吃掉回车 cin.getline(message, 90); int l
阅读全文
pku vertical
摘要:统计4句英文的每个大写字母的出现频率,并用直方图表示出来code:#include <iostream>#include <cstdio>#include <string>#include <cstring>using namespace std;int hash[30];int main(){ char s[80]; memset(hash, 0, sizeof(hash)); int maxh=0, t=4; while(t--) { cin.getline(s,80); int
阅读全文
pku 3048 Max Factor
摘要:题意:给出一系列的数,找出那个最先出现的拥有最大素数因子的数;hint:注意1的处理code:#include <iostream>#include <cstdio>#include <cstring>#define MAXN 20005using namespace std;int prime[MAXN];void Prime(){ prime[1]=1; for(int i=2; i<MAXN; i++) if(prime[i]==0) for(int j=2*i; j<MAXN
阅读全文
pku 1595 prime cuts
摘要://给出n,c,求1~n中间的素数,求出所有素数中间2*c并且表示出来,奇数输出中间2*C-1个数。#include iostream#include cstdio#include cstring#define MAXN 1000using namespace std;int prime[MAXN+5];int num[MAXN];void Prime(){ prime[0]=1; for(int i=2; i=MAXN; i++) if(prime[i]==0) for(int j=i+i; j=MAXN; j=j+i) prime[j]=1;}int main(){ mem
阅读全文
pku 1799 yeehaa
摘要:推出推导式:r=R*sin(PI/n)/(1+sin(PI/n))。code:#include iostream#include cstdio#include cmath#define PI 3.1415926using namespace std;int main(){ int cas; while(scanf("%d",&cas)!=EOF) { int n, t=1; double R, r; while(cas--) { scanf("%lf%d",&R, &n); r=R*sin(PI/n)/(1+sin(PI/n)); printf("Scenario #%d:\n%.
阅读全文
pku 3085 Quick Change
摘要:换零钱,只用找最少的硬币数方法code:#include iostream#include cstdio#include cstringusing namespace std;int main(){ int cas, price; while(scanf("%d",&cas)!=EOF) { for(int i=1; i=cas; i++) { cinprice; int sum=price/25; printf("%d %d QUARTER(S), ", i,sum); price=(price-sum*25); sum=price/10; printf("%d DIME(
阅读全文
pku 3173 Parkside's Triangle
摘要:code:#include iostream#include cstdio#include cstringusing namespace std;int num[25][25];int main(){ int n,s; while(scanf("%d%d",&n, &s)!=EOF) { memset(num,0,sizeof(num)); for(int i=0; in; i++) { for(int j=0; j=i; j++) { num[i][j]=s; s++; if(s==10) s=1; } } for(int i=0; in; i++) { for(int j
阅读全文
pku 3518 Prime Gap
摘要://题意:给出 n ,如果 n 是素数则输出 0 ,否则求出大于 n 的素数 k 与小于 n 的素数 j//之间的差。code:#include iostream#include cstdio#include cstdlib#include cstring#define MAXN 1300000using namespace std;int prime[MAXN], count;int visited[MAXN];void Prime(){ for(int i=2; iMAXN; i++) { if(prime[i]==0) for(int j=i+i; jMAXN; j=
阅读全文
pku 2707 Copier Reduction
摘要:将原图与纸张按同样的方式放好,再通过长宽比例算缩小比例code:#include iostream#include cstdio#include cstdlibusing namespace std;int a, b, c, d, flag;double mark1, mark2;void cmp(int &a, int &b){ if(ab) { flag=a; a=b; b=flag; }}int main(){ while (scanf("%d%d%d%d",&a, &b, &c, &d), a && b && c && d) { cmp(a,b); cmp(c,d); m
阅读全文
pku 3117 world cup
摘要:数学推论题,有胜负场的话,总分加3,平局总分加2,所以:平局数=3*总场数-总分数172k 0mscode:#include iostream#include cstdio#include stringusing namespace std;int main(){ int team, n; char name[20]; while(scanf("%d%d",&team, &n), team) { int sum=0, point, i=team; while(i--) { scanf("%s%d", name, &point); sum+=point; } printf("%d\n
阅读全文
pku 2389 Bull Math
摘要:大数相乘,数组模拟code:#include iostream#include cstdio#include cstring#include stringusing namespace std;char a[50], b[50];int s[900], na[50], nb[50];int main(){ while(scanf("%s%s", a, b)!=EOF) { int al=strlen(a); int bl=strlen(b); memset(na,0,sizeof(na)); memset(nb,0,sizeof(nb)); memset(s,0,sizeof(
阅读全文
浙公网安备 33010602011771号