摘要:
这天苦逼的我只出了1题,现在看来其实都不是那样难地址 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=27454#overview密码acmoreProblem A POJ 3125Printer Queue 题目大意就是说有一系列的工作要做,但是如果工作队列中阿有比排在最前面的工作更重要的话,就将最前面的工作排在队列尾去,只有处理工作花时间,其他操作不花时间,问要处理第i个工作要多少时间比较水:直接拿链表处理 1 #include 2 #include 3 using namespace std; 4 struct node{i.. 阅读全文
摘要:
Problem A UVA 11877The Coco-Cola Store 直接输出n/2 1 #include 2 int main() 3 { 4 int n; 5 while(~scanf("%d",&n) && n) 6 { 7 printf("%d\n",n/2); 8 } 9 return 0;10 }也可以模拟 1 #include 2 int main() 3 { 4 int n; 5 while(scanf("%d",&n)==1 && n) 6 { 7 int Su 阅读全文
摘要:
昂贵的聘礼题目大意是说有N个物品,每个物品都有自己的价格,但同时某些物品也可以由其他的(可能不止一个)替代品,这些替代品的价格比较“优惠”,问怎么样选取可以让你的花费最少来购买到物品1由于有N个物品,我们就可以把它们看作是N个点,从其他点到他的优惠关系视做边,又因为最后总是要找到物品1,所以可以看作是从起点0,到将物品1作为终点的最小路劲。然后由于题目是说,这条路劲上不能有两个的等级差超过M,所以我们可以枚举最小等级,将每个点视作最小等级,这样的话就不会掉解。又由于我们是枚举的最小等级,所以源点0到其他每个点的边的权值就要赋值为那个点的价格,降等级比最小等级要大,或者差距大于M的其他点标记为不 阅读全文
摘要:
直接看代码 1 /**************************************************** 2 思路就是吧没办法配对的左括号放在栈里, 3 如果有一个新的右括号,那他一定只能和栈顶的左括号配对 4 *****************************************************/ 5 #include 6 #include 7 using namespace std; 8 int ans[25], Case, N; 9 int main()10 {11 while(~scanf("%d", &Case))wh 阅读全文
摘要:
题目链接A Sample Stone Game 题目大意:给定n,k,表示最初时有n个石头,两个人玩取石子游戏,第一个人第一次可以取1~n-1个石头,后面每个人最多可以拿走前面一个人拿走的个数的K倍,当有一个人可以一次性全部拿走时获胜。问两人都在不失误的情况下,先拿着有没有必胜局势。有的话求他第一... 阅读全文
摘要:
ProblemA URAL 1181Cutting a Painted Polygon 题目大意就是说有一个N边形,让你做N-3条边,让他们的每个三角形的三个顶点颜色都不相同。这里有一个引理就是如果多边形三个颜色都有,而且两两相邻不同色,那么只要找到相邻的三个顶点,判断两端的两个是否相同,如果不同可以吧中间的点去掉,把两端连接起来,这样形成的新的多边形依然有解,再递归求解。证明过程可以参见我最敬佩的章爷http://blog.csdn.net/l383137093/article/details/9501019相邻三点的两种判断情况还有这些天来做题的一个总结就是,不管有多急,还是得吧代码写得简 阅读全文
摘要:
题目 SGU 171相当好的贪心的题目!!!!!题目意思就是说有K个赛区招收参赛队员,每个地区招收N[i]个,然后每个地区都有一个Q值,而N[i]的和就是N,表示总有N个参赛队员,每个队员都有他自己的P值,和他的权值W,只有当一个队员的P大于某一个地区的Q值时,权值W才能被记录在内,问怎样让着N个参赛队员选择地区才能让权值和最大。贪心的思路就是按照权值W贪心1、先按W的降序排序,优先考虑权值交大的。2、歪了不影响后面的参赛队员,W较大的而且满足P>Q的,让其参加p>Q时Q最大的那一个。所以Q值按照降序排序。3、如果某一个找不到一个Q使得P>Q,那么就让他参加Q最大的那一个赛区 阅读全文
摘要:
这一次都主要是贪心练习练习地址http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26733#overviewProblem APOJ 1328对于每一个点,可以找到他在x轴上的可行区域,这样的话就变为了对区间的贪心。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 #define MAX(a,b) 阅读全文
摘要:
此次练习的地址: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26732#overview密码 acmoreProblem A(POJ1753)题目: Flip Game直接拿二进制模拟暴力枚举之前已经做过了的Flip Game(枚举)这次又WA了两次才AC,细心细心再细心!!!代码 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #define MAX(a,b) (a) > (b)?... 阅读全文
摘要:
对于每一个点,可以找到他在x轴上的可行区域,这样的话就变为了对区间的贪心。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 #include12 using namespace std;13 #define MAX(a,b) (a > b ? a : b)14 #define MIN(a,b) (a a.s);39 }40 41 int main()42 {43 int ca = 1;44 while(... 阅读全文
摘要:
链接:http://acm.timus.ru/problem.aspx?space=1&num=1303按照贪心的思想,每次找到覆盖要求区间左端点时,右端点最大的线段,然后把要求覆盖的区间改为这个右端点到M这个区间。依次类推下去,这样的话就只需要扫一遍就可以找去来。要做的预备工作就是将线段按照左端点的升序排序就可以了。它的时间复杂度就是O(n)代码一直WA,望大神指教 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include1 阅读全文
摘要:
模运算:(a+b)modn = ((amodn)+(bmodn))modn(a-b)modn = ((amodn)-(bmodn)+n)modn(a*b)modn = ((amodn)*(bmodn))modnint mul_mod(int a,int b,int n){ a%=n; b%=n; return (int)((long long) a*b % n);}例1:大整数取模nmodm,你<10^100,m<10^91234 = ((1*10+2)*10+3)*10+4;依次取模即可1 int ans = 0;2 for(int i=0;i<len;i++)3 {4 . 阅读全文
摘要:
一开始拿到这个题感觉floyd可能会超,还是写了写,果然1WA+1TLE,之后觉得用dijkstra试试看看S和D会不会比较小,还是1WA+1TLE,最后还是借鉴了别人的做法。把他的家作为起点,与他相邻的城市作为权值为0的边,这样就转换成单源起点的最短路问题用dijkstra直接O(n^2)过键代码 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 using namespace std;12 #define MAX(a, 阅读全文
摘要:
用dijkstra来练练手 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 using namespace std;12 #define MAX(a,b) (a > b ? a : b)13 #define MIN(a,b) (a < b ? a : b)14 #define MAXN 1000000115 #define INF 100000000716 #define mem(a) memset(a,0, 阅读全文
摘要:
看了看floyd和dijkstra,然后就找了两个练习来捉 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 using namespace std;12 #define MAX(a,b) (a > b ? a : b)13 #define MIN(a,b) (a x)w[a][b] = w[b][a] = x;79 }80 int s,t;81 scanf("%d%d",&... 阅读全文