瞎搞poj1013

http://poj.org/problem?id=1013

题意:给你标记从A到L的石子,其中有一个石子,可能会轻于其它石子,也可能重于其它石子。你只能通过三次天平的测量去找到这个石子。天平的三个状态,even 两边一样重 up左重右轻 down左轻右重

思路:标记even状态的所有石子,再用一个计数器去记录up和down的石子的出现次数重就加1,轻就减1。(超重或超轻的石子只会有一种状态要么+要么-,其它的石子会因为这个石子的影响有两个状态所以允许+-的抵销)最后你只需要找出出现次数最大的一个石子,如果此时个数为负数那就是light,为正就是heavy

AC代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
char a[15],b[15],c[15];
int vis[15];
memset(vis,0,sizeof(vis));
int d[15];
memset(d,0,sizeof(d));
for(int i=0; i<3; i++)
{
scanf("%s %s %s",a,b,c);
if(c[0]==‘e‘)
{
for(int j=0; a[j]; j++)
vis[a[j]-‘A‘]=1;
for(int j=0; b[j]; j++)
vis[b[j]-‘A‘]=1;
}
else if (c[0]==‘d‘)
{
for(int j=0; b[j]; j++)
d[b[j]-‘A‘]++;
for(int j=0; a[j]; j++)
d[a[j]-‘A‘]--;
}
else
{
for(int j=0; a[j]; j++)
d[a[j]-‘A‘]++;
for(int j=0; b[j]; j++)
d[b[j]-‘A‘]--;
}
}
int maxn=0;
int to=-1;
for(int i=0;i<12;i++)
{
if(vis[i])
continue;
if(maxn<=abs(d[i]))
{
maxn=abs(d[i]);
to=i;
}
}
if(d[to]>0)
printf("%c is the counterfeit coin and it is heavy. \n",to+‘A‘);
else
printf("%c is the counterfeit coin and it is light. \n",to+‘A‘);
}
return 0;
}

时间: 2024-10-05 02:30:23

瞎搞poj1013的相关文章

HDU 4937 (杭电多校 #7 1003题)Lucky Number(瞎搞)

题目地址:HDU 4937 多校的题以后得重视起来...每道题都错好多次...很考察细节.比如这道....WA了无数次.... 这题的思路自己真心想不到...这题是将进制后的数分别是1位,2位,3位和更多位的分开来计算. 当是1位的时候,显然只有3到6,此时只能是-1 当是2位的时候,可以转换成一元一次方程求解 当是3位的时候,可以转换成一元二次方程求解 当是4位的时候,此时最多也只有7000个数,7000^3接近1e12.所以剩下的直接枚举进制数来判断即可. 代码如下: #include <i

HDU 4923 Room and Moor(瞎搞题)

瞎搞题啊.找出1 1 0 0这种序列,然后存起来,这种情况下最好的选择是1的个数除以这段的总和.然后从前向后扫一遍,变扫边进行合并.每次合并,合并的是他的前驱.这样到最后从t-1找出的那条链就是最后满足条件的数的大小. Room and Moor Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 307    Accepted Su

HDU 4925 Apple Tree (瞎搞)

找到规律,各一个种一棵树,或者施肥.先施肥,先种树一样. Apple Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 197    Accepted Submission(s): 135 Problem Description I've bought an orchard and decide to plant some

Codeforces 433C. Ryouko&#39;s Memory Note (中位数,瞎搞,思维)

题目链接: http://codeforces.com/problemset/problem/433/C 题意: 给你一堆数字,允许你修改相同的数字成为别的数字,也可以修改成自己,问你修改后相邻数字的距离的绝对值的和最小是多少. 思路: 首先明确一个结论,一个数轴上一些点,要求一个与他们距离之和尽量小的点,那么这个点就是这些点的中位数,即排序后位于中间的数. 这题的思路是把每一个数的与之相邻的保存下来,为了方便,可以用vector数组.然后为了使得距离之和最短,要取中位数.在一串数字中,距所有数

woj 1575 - Signal generators 单调队列优化dp + 瞎搞

戳这里:1575 题意:直线上排列着N个信号发射器,每个信号发射器被激活后将会使得影响范围内的所有发射器都被激活.询问激活任意一个发射器后被激活的发射器数最大是多少. 官方题解:可能会存在环的情况,考虑按坐标排序后i < j < k,j激活了k,然后k再激活i.但是这样可以转化为直接激活k的方案.所以无影响. 于是可以用dp求解.dp[i] = max( dp[j] + 1 ), position[j] + R[i] >= position[i],用单调队列优化时间复杂度为O(n). 向

HDU 5024 Wang Xifeng&#39;s Little Plot(暴力枚举+瞎搞)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5024 Problem Description <Dream of the Red Chamber>(also <The Story of the Stone>) is one of the Four Great Classical Novels of Chinese literature, and it is commonly regarded as the best one. Thi

【瞎搞】HDU 4968 Improving the GPA

枚举一种GPA有多少个 总分1加上该GPA的最小分数 总分2加上该GPA的最大分数 若总分1<=输入分数×n<=总分2 则可以在枚举的状态达到目标分数 #include <stdio.h> #include <string.h> #include <math.h> #include <string> #include <algorithm> using namespace std; #define IN freopen ("

HDU 4940(杭电多校#7 1006) Destroy Transportation system(瞎搞)

题目地址:HDU 4940 当时这个题一看就看出来了是网络流的最小割,然后就一直在想建图..然后突然发现,应该要让T集合的数目最少,不然只要有两个,那这两个的每一个都可以跑到S集合,使得T集合变小.那就只能是1个了.然后..枚举就好了..但是虽然觉得这么做肯定没错..但是不敢敲..因为当时都3个小时了才只有10个队过了...后来又想了几遍后觉得这样没错,就写完交上了.果然AC... 代码如下: #include <iostream> #include <cstdio> #inclu

瞎搞ng-bind-html和ng-bind实现

声明:这里纯属学习,瞎搞,真正的实现原理并非如此 demo.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="rend