关键词:
http://codeforces.com/gym/101243
题意:有三种药,是不同重量的三种药,但是不知道哪种是哪种,现在给你一些称量的结果,要你把这些药的种类区分出来
思路:最开始想的是并查集,但是一直没有想到怎么并,然后看了下别人的思路,就懂了。
当两个药的颜色一样的时候,并起来,然后颜色不同的时候,用一个两个数组分别记录一下,表示这两个药有差别,一个重,一个轻
然后之后分类,如果某个药既有比它重的,
1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 #include <vector> 5 using namespace std; 6 7 vector<pair<int,int> >v; 8 vector<int>s[1005]; 9 10 int father[1005]; 11 int down[1005],up[1005]; 12 char ans[1005]; 13 14 int Find(int x) 15 { 16 if(father[x]!=x) 17 return father[x] = Find(father[x]); 18 return father[x]; 19 } 20 21 22 void unio(int a,int b) 23 { 24 int root1 = Find(a); 25 int root2 = Find(b); 26 if(root1!=root2) 27 father[root1] = root2; 28 } 29 30 int main() 31 { 32 // freopen("input.txt","r",stdin); 33 // freopen("output.txt","w",stdout); 34 int m,n; 35 int a,b; 36 char c; 37 scanf("%d%d",&m,&n); 38 for(int i = 1;i<=m;i++) 39 { 40 father[i] = i; 41 ans[i]=‘?‘; 42 } 43 for(int i = 0;i<n;i++) 44 { 45 scanf("%d%c%d",&a,&c,&b); 46 if(c==‘=‘) 47 unio(a,b); 48 else { 49 if(c==‘>‘) 50 swap(a,b); 51 v.push_back(make_pair(a,b)); 52 } 53 } 54 for(int i = 1;i<=m;i++) 55 { 56 Find(i); 57 s[Find(i)].push_back(i); 58 } 59 for(int i = 0;i<v.size();i++) 60 { 61 a = v[i].first; 62 b = v[i].second; 63 down[Find(a)]++; 64 up[Find(b)]++; 65 } 66 for(int i =1;i<=m;i++) 67 { 68 if(down[Find(i)]&&up[Find(i)]) 69 { 70 for(int j = 0;j<s[Find(i)].size();j++) 71 { 72 ans[s[Find(i)][j]] = ‘R‘; 73 } 74 s[Find(i)].clear(); 75 } 76 } 77 for(int i = 0;i<v.size();i++) 78 { 79 a = v[i].first; 80 b = v[i].second; 81 if(ans[a]==‘R‘){ 82 for(int j = 0;j<s[Find(b)].size();j++) 83 ans[s[Find(b)][j]] = ‘W‘; 84 s[Find(b)].clear(); 85 }else if(ans[b]==‘R‘){ 86 for(int j = 0;j<s[Find(a)].size();j++) 87 ans[s[Find(a)][j]]=‘B‘; 88 s[Find(a)].clear(); 89 } 90 } 91 for(int i = 1;i<=m;i++) 92 printf("%c",ans[i]); 93 printf(" "); 94 return 0; 95 }
又有比他轻的那么说明这个一定是中间的药,那么所有的这个颜色的药都可以找出来
然后重的轻的都可以通过这个中间的药比较出来
codeforcesgym101243acdefghj
gym101243A1#include<iostream>2#include<cstdio>3#include<cmath>4#include<cstring>5#include<algorithm>6#include<map>7#include<queue>8#include<stack>9#incl 查看详情
3.9
http://codeforces.com/gym/101243A题思路:一条鱼有两面,所以当N<=K时间是2倍的单位时间。否则的话应该是N*2/k向上取整。1#include<iostream>2#include<cstdio>3#include<cstring>4usingnamespacestd;56intmain()7{8freopen("inpu 查看详情
斐波那契数列性质
1.$F(1)+F(2)+F(3)+...+F(n)=F(n+2)-1$2.$F(1)^2+F(2)^2+F(3)^2+...+F(n)^2=F(n)F(n+1)$3.$F(1)+F(3)+F(5)+...+F(2n-1)=F(2n)$4.$F(2)+F(4)+F(6)+...+F(2n)=F(2n+1)-1$5.$F(n)=F(m)F(n-m+1)+F(m-1)F(n-m)$ $(n\gem) 查看详情
如何求解:f(n) = f(n-1) + 3*f(n-2) + 3*f(n-3) + f(n-4)
】如何求解:f(n)=f(n-1)+3*f(n-2)+3*f(n-3)+f(n-4)【英文标题】:howtosolve:f(n)=f(n-1)+3*f(n-2)+3*f(n-3)+f(n-4)【发布时间】:2014-11-0205:42:49【问题描述】:我该如何解决f(n)=f(n-1)+3*f(n-2)+3*f(n-3)+f(n-4)maximumvalueofn=10^18minimumis1initialconditionsar 查看详情
创建一个视图
CREATEORREPLACEVIEWJYDWZDASSELECTF_CODEASF_DWBH,F_STJCASF_DWMC,F_STMCASF_DWMCA,F_JS,F_MX,F_GSXZ,F_GSDM,F_LRZX,F_CODE,F_BKBH,F_BWB,F_NBBH,F_WLDW,F_ZJDW,F_ZJCODE,F_CWCCODE,F_ZJLX,F_KJZG,F_JYCH,F_RJLX,F_ 查看详情
斐波拉契数列的性质
证明用到辗转相除相减法定理一(gcd(f[i],f[i+1])=1)证明:(gcd(f[i],f[i+1])=gcd(f[i+1]-f[i],f[i])=gcd(f[i-1],f[i]))递归下去,所以(gcd(f[i],f[i+1])=gcd(f[1],f[2])=1)定理二(f[m+n]=f[m?1]f[n]+f[m]f[n+1])证明:(f[m+n]=f[m+n-1]+f[ 查看详情
德州仪器芯片tms320f240pqa解密难度
TMS320F28015TMS320LF2406TMS320F2812TMS320F28035TMS320F28026TMS320F28068TMS320F28031TMS320F28334TMS320F2806TMS320LF2407TMS320F28062TMS320F28023TMS320F28067TMS320F28332TMS320F2811TMS320F2802TMS320F28020TMS320F28022TMS320F28066TMS320F28033TMS320F28235TMS320F2801TMS320F28064TMS320F280200TMS320F2808TMS32... 查看详情
C语言中*f和(*f)的区别?
】C语言中*f和(*f)的区别?【英文标题】:Differencebetween*fand(*f)inC?【发布时间】:2016-02-1517:30:11【问题描述】:CppCheck(v1.72)表示使用(*f)或仅使用*f时会有所不同。本案voidtest(float*f)floata=0.0f;if(*f>a)(*f)+=0.01f;if(*f<a)*f=a;cppCheck说“... 查看详情
初识迭代
...典事例:斐波那契数列#include<iostream>usingnamespacestd;intf(intn)intf(1)=1,f(2)=1;f(n)=f(n-1)+f(n-2);returnf(n);intmain()cin>>n;cout<<f(n)<<endl;return0;所以,以上可知:例:f(5)=f(4)+f(3);f(4)=f(3)+f(2);f(3)=f(2)+f(1);==>f(5)=5;其他类似也可以用... 查看详情
斐波那契数列的公式是啥
斐波那契数列:1,1,2,3,5,8,13,21……如果设F(n)为该数列的第n项(n∈N+)。那么这句话可以写成如下形式:F(1)=F(2)=1,F(n)=F(n-1)+F(n-2)(n≥3)显然这是一个线性递推数列。通项公式的推导方法一:利用特征方程线性递推数列的特征... 查看详情
分析 _mm_setzero_ps 和 0.0f,0.0f,0.0f,0.0f
】分析_mm_setzero_ps和0.0f,0.0f,0.0f,0.0f【英文标题】:Profiling_mm_setzero_psand0.0f,0.0f,0.0f,0.0f分析_mm_setzero_ps和0.0f,0.0f,0.0f,0.0f【发布时间】:2016-12-2117:00:26【问题描述】:编辑:正如CodyGray在他的评论中指出的那样,禁用优化的分析完全... 查看详情
uniquebinarysearchtrees
这里需要总结规律:f(0)=f(1)=1;f(2)=f(0)*f(1)+f(1)*f(0)f(3)=f(0)*f(2)+f(1)*f(1)+f(2)*f(0)classSolution{public:intnumTrees(intn){if(n==0)return1;if(n==1)return1;vector<int>num(n+1,0);num[0]=1;num[1]= 查看详情
题解cf450bjzzhuandsequences
...A的人(?)我来发布下这道大水题的题解了~首先题目给出了f[i]=f[i-1]+f[i+1],我们移下项:f[i+1]=f[i]-f[i-1],所以我们可以知道:第i项等于它前两项之差!即:f[i]=f[i-1]-f[i-2],同时,f[i-1]=f[i-2]-f[i-3],代入得:f[i]=-f[i-3]=f[i-6],所以我们只需将前... 查看详情
dx12纹理贴图(代码片段)
...插值即可求得GeometryGenerator::MeshDataGeometryGenerator::CreateBox(floatwidth,floatheight,floatdepth,uint32numSubdivisions)MeshDatameshData;// //Createthevertices. // Vertexv[24]; floatw2=0.5f*width; floath2=0.5f*height; floatd2=0.5f*depth; //Fillinthefrontfacevertexdata. v[0]=Vertex(-w2,-h2,... 查看详情
矩阵幂求解骨牌覆盖数(soj3021)(代码片段)
...,但是一直没有成功。后来看了网上别人给的递推式:$f(n)=f(n-1)+5*f(n-2)+f(n-3)-f(n-4)$,有了这个式子,这个题很好求解了。下面我介绍一种其他的方法。将矩形看作$N imes4$,铺骨牌到第$i$行有$6$种情况:$XXXX$,$XOOX$,$OXXO$,$XXOO$,$OOXX$,$OO... 查看详情
矩阵幂求解骨牌覆盖数(soj3021)(代码片段)
...,但是一直没有成功。后来看了网上别人给的递推式:$f(n)=f(n-1)+5*f(n-2)+f(n-3)-f(n-4)$,有了这个式子,这个题很好求解了。下面我介绍一种其他的方法。将矩形看作$N imes4$,铺骨牌到第$i$行有$6$种情况:$XXXX$,$XOOX$,$OXXO$,$XXOO$,$OOXX$,$OO... 查看详情
已知函数f(x)是定义在r上周期为6的奇函数,且f(x)=1则f(5)
你好题目是不是f(1)=1函数f(x)是定义在R上周期为6的奇函数则f(-1)=-f(1)=-1f(5)=f(6-1)=f(-1)=-1很高兴为您解答,祝你学习进步!有不明白的可以追问!如果有其他问题请另发或点击向我求助,答题不易,请谅解.如果您认可我的回答,... 查看详情
图像处理
...Gui::GetStyle();style.Colors[ImGuiCol_Text]=ImVec4(0.90f,0.90f,0.90f,1.00f);style.Colors[ImGuiCol_TextDisabled]=ImVec4(0.60f,0.60f,0.60f,1.00f);style.Colors[ImGuiCol_WindowBg]=ImVec4(0.00f,0.00f,0.00f,0.70f);style.Colors[ImGuiCol_ChildWindo... 查看详情