赞
踩
目录
- #include<bits/stdc++.h>
- #define int long long
- using namespace std;
- const int N=2e5+5;
- int n,a[N],ans;
- signed main(){
- scanf("%lld",&n);
- for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
- sort(a+1,a+n+1);
- int tmp=1;
- for(int i=2;i<=n;i++){
- if(a[i]==a[i-1]) tmp++;
- else {
- ans+=tmp*tmp;
- tmp=1;
- }
- }
- ans+=tmp*tmp;
- printf("%lld",ans);
- return 0;
- }
- #include<bits/stdc++.h>
- using namespace std;
- const int N=1e5+5;
- int n,k,ans;
- struct happy{
- int mor,nit;
- }a[N];
- bool cmp(happy x,happy y){ return x.nit-x.mor>y.nit-y.mor; }
- int main(){
- scanf("%d%d",&n,&k);
- for(int i=1;i<=n;i++) scanf("%d%d",&a[i].mor,&a[i].nit);
- sort(a+1,a+n+1,cmp);
- for(int i=1;i<=k;i++) ans+=a[i].nit;
- for(int i=k+1;i<=n;i++) ans+=a[i].mor;
- printf("%d",ans);
- return 0;
- }
- #include<bits/stdc++.h>
- using namespace std;
- const int N=2e6+5;
- int n,T;
- bool r[N],c[N],p[N],l[N];
- int main(){
- scanf("%d%d",&n,&T);
- for(int i=1;i<=T;i++){
- int x,y; scanf("%d%d",&x,&y);
- if(!r[x] && !c[y] && !p[x+y-1] && !l[n+x-y]){
- printf("Yes\n");
- r[x]=1;c[y]=1;p[x+y-1]=1;l[n+x-y]=1;
- }
- else printf("No\n");
- }
- return 0;
- }
- #include<bits/stdc++.h>
- #define int long long
- using namespace std;
- int n,a1,b1,c1,a2,b2,c2;
- int ans[5];
-
- int check(int x,int y){
- int tmp1=a1*x+b1*y+c1;
- int tmp2=a2*x+b2*y+c2;
- if(tmp1>0 && tmp2>0) return 4;
- else if(tmp1>0 && tmp2<0) return 3;
- else if(tmp1<0 && tmp2>0) return 2;
- else return 1;
- }
-
- signed main(){
- scanf("%lld",&n);
- scanf("%lld%lld%lld",&a1,&b1,&c1);
- scanf("%lld%lld%lld",&a2,&b2,&c2);
- for(int i=1;i<=n;i++){
- int x,y;
- scanf("%lld%lld",&x,&y);
- ans[check(x,y)]++;
- }
- sort(ans+1,ans+4+1);
- for(int i=1;i<=4;i++) printf("%lld ",ans[i]);
- return 0;
- }
- #include<bits/stdc++.h>
- using namespace std;
- int n,a[105][5],f[30][30][30][30];
- int main(){
- scanf("%d",&n);
- for(int i=1;i<=n;i++){
- for(int j=1;j<=4;j++) scanf("%d",&a[i][j]);
- }
- n/=4;
- for(int i=0;i<=n;i++){
- for(int j=0;j<=n;j++){
- for(int k=0;k<=n;k++){
- for(int l=0;l<=n;l++){
- int t=i+j+k+l;
- if(i) f[i][j][k][l]=max(f[i][j][k][l],f[i-1][j][k][l]+a[t][1]);
- if(j) f[i][j][k][l]=max(f[i][j][k][l],f[i][j-1][k][l]+a[t][2]);
- if(k) f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k-1][l]+a[t][3]);
- if(l) f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k][l-1]+a[t][4]);
- }
- }
- }
- }
- printf("%d",f[n][n][n][n]);
- return 0;
- }
- #include<bits/stdc++.h>
- using namespace std;
- const int N=4e5+5;
- int n,m;
- int head[N],tot;
- struct edge{
- int nxt,w,v;
- }e[N];
- int idx[N]={0},tim[N];
-
- void bfs(){
- idx[1]=1; tim[1]=0;
- int q[2*m+10];
- int l=0,r=1;
- q[++l]=1;
- while(l<=r){
- int index=head[q[l]];
- //printf("当前节点:%d\n",q[l]);
- while(index!=-1){
- if(!idx[e[index].v]){
- idx[e[index].v]=idx[q[l]]+1;
- q[++r]=e[index].v;
- }
- if(idx[e[index].v]==idx[q[l]]+1){
- tim[e[index].v]=min(tim[e[index].v],tim[q[l]]+e[index].w);
- //printf("更新节点%d值为:%d\n",e[index].v,tim[e[index].v]);
- }
- index=e[index].nxt;
- }
- l++;
- }
- }
-
- void add(int u,int v,int val){
- e[++tot].w=val;
- e[tot].nxt=head[u];
- e[tot].v=v;
- head[u]=tot;
- }
-
- int main(){
- memset(head,-1,sizeof(head));
- memset(tim,0x3f3f3f,sizeof(tim));
- scanf("%d%d",&n,&m);
- for(int i=1;i<=m;i++){
- int u,v,val;
- scanf("%d%d%d",&u,&v,&val);
- add(u,v,val);
- add(v,u,val);
- }
- bfs();
- //for(int i=1;i<=n;i++) printf("%d\n",tim[i]);
- printf("%d %d",idx[n],tim[n]);
- return 0;
- }
- #include<bits/stdc++.h>
- #define int long long
- using namespace std;
- const int N=3e5+5;
- int n,a[N],f[N],ans;
- signed main(){
- scanf("%lld",&n);
- for(int i=1;i<=n;i++){
- scanf("%lld",&a[i]);
- f[a[i]]++;
- }
- for(int i=0;i<18;i++){
- for(int j=0;j<(1<<18);j++){
- if(j&(1<<i)) f[j]+=f[j^(1<<i)];
- }
- }
- for(int i=1;i<=n;i++) ans+=f[a[i]^((1<<18)-1)];
- printf("%lld",ans);
- return 0;
- }
- #include<bits/stdc++.h>
- #define int long long
- using namespace std;
- const int N=4e5+5;
- int n,m,ans;
-
- struct node{
- int l,r,a_num,t_num;
- bool flag=0;
- }a[N];
-
- void upd(int k){
- a[k].flag=a[k*2].flag & a[k*2+1].flag;
- a[k].a_num=a[k*2].a_num+a[k*2+1].a_num;
- a[k].t_num=a[k*2].t_num+a[k*2+1].t_num;
- }
-
- void build(int k,int l,int r){
- a[k].l=l;
- a[k].r=r;
- if(l>=r){
- scanf("%lld",&a[k].a_num);
- a[k].t_num=a[k].a_num<100;
- a[k].flag=a[k].a_num<10;
- }
- else {
- int mid=(l+r)>>1;
- build(k*2,l,mid);
- build(k*2+1,mid+1,r);
- upd(k);
- }
- return ;
- }
-
- void chg(int k,int l,int r){
- if(a[k].l==a[k].r){
- a[k].a_num=a[k].a_num*2/3;
- a[k].t_num=a[k].a_num<100;
- a[k].flag=a[k].a_num<10;
- return ;
- }
-
- int mid=(a[k].l+a[k].r)>>1;
- if(mid>=l && !a[k*2].flag) chg(k*2,l,r);
- if(mid<r && !a[k*2+1].flag) chg(k*2+1,l,r);
- upd(k);
- return ;
- }
-
- void ask(int op,int k,int l,int r){
- if(a[k].l>=l && a[k].r<=r){
- if(op==2) ans+=a[k].t_num;
- else ans+=a[k].a_num;
- return ;
- }
- int mid=(a[k].l+a[k].r)>>1;
- if(mid>=l) ask(op,k*2,l,r);
- if(mid<r) ask(op,k*2+1,l,r);
- return;
- }
-
- signed main(){
- scanf("%d%d",&n,&m);
- build(1,1,n);
- while(m--){
- int op,x,y;
- scanf("%d%d%d",&op,&x,&y);
- if(op==1) chg(1,x,y);
- else{
- ask(op,1,x,y);
- printf("%lld\n",ans);
- }
- ans=0;
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。